From 9f10d9b8070bbd10813b60a7a8b88a4a2de14d79 Mon Sep 17 00:00:00 2001 From: Joe Germuska Date: Wed, 6 Sep 2017 10:32:44 -0500 Subject: [PATCH] apply version banners to dist files --- banner.tmpl | 6 ++++++ package.json | 7 +++++-- tasks/stage.js | 36 ++++++++++++++++++++++++++---------- 3 files changed, 37 insertions(+), 12 deletions(-) create mode 100644 banner.tmpl diff --git a/banner.tmpl b/banner.tmpl new file mode 100644 index 0000000..b49c294 --- /dev/null +++ b/banner.tmpl @@ -0,0 +1,6 @@ +/*! + * <%= name %> ver. <%= version %> + * <%= homepage %> + * Copyright (c) 2016-<%= year %>, Northwestern University Knight Lab + * Licensed under the <%= license %> license. + */ diff --git a/package.json b/package.json index a38a224..350e5cb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "storyline", - "version": "0.1.1", + "version": "0.1.6", "description": "Storyline is a tool for journalists to provide narrative context to readable line charts in a form which is optimized for the mobile user experience.", "main": "index.js", "repository": { @@ -12,7 +12,7 @@ "bugs": { "url": "https://github.com/NUKnightLab/storyline/issues" }, - "homepage": "https://github.com/NUKnightLab/storyline#readme", + "homepage": "https://storyline.knightlab.com", "dependencies": { "babel-polyfill": "^6.23.0", "babel-preset-es2015": "^6.22.0", @@ -24,6 +24,7 @@ "webpack": "^1.13.1" }, "devDependencies": { + "add-banner": "github:jonschlinkert/add-banner#b2a824c466413677264364042bb4c30df0de2ebe", "adm-zip": "^0.4.7", "babel-core": "^6.22.1", "babel-loader": "^6.2.10", @@ -39,6 +40,7 @@ "es6-promise": "^4.0.5", "exit-hook": "^1.1.1", "fs-extra": "^0.30.0", + "glob": "^7.1.2", "globby": "^5.0.0", "hammerjs": "^2.0.8", "json-loader": "^0.5.4", @@ -55,6 +57,7 @@ "sinon-chai": "^2.8.0", "stream-transform": "^0.1.1", "tiny-lr": "^0.2.1", + "write-banner": "^0.1.3", "xhr-stream": "^1.1.0" }, "scripts": { diff --git a/tasks/stage.js b/tasks/stage.js index 7df8b2e..e4335e4 100644 --- a/tasks/stage.js +++ b/tasks/stage.js @@ -2,7 +2,9 @@ const prompt = require('prompt'), simpleGit = require('simple-git'), fse = require('fs-extra'), path = require('path'), - AdmZip = require('adm-zip'); + AdmZip = require('adm-zip'), + writeBanner = require('write-banner'), // note needs override of 'add-banner' dependency to git repo version + glob = require('glob'); const CDN_ROOT = '../cdn.knightlab.com', // maybe parameterize later PROJECT_NAME = 'storyline'; // can we read this from package.json? @@ -12,6 +14,16 @@ function makeCDNPath(version) { } function stageToCDN(version, latest) { + var banner_version = (version == 'dev') ? new Date().toISOString() : version; + + var to_banner = glob.sync('dist/**/*.+(js|css)'); + for (var i = 0; i < to_banner.length; i++) { + writeBanner(to_banner[i], { + banner: 'banner.tmpl', + version: banner_version, + }) + } + if (fse.existsSync(CDN_ROOT)) { var dest = makeCDNPath(version); var zip = new AdmZip(); @@ -35,7 +47,7 @@ function stageToCDN(version, latest) { if (process.argv[2] == 'dev') { stageToCDN('dev') } else { - + // if not 'dev' then ask for a new tag, update package.json, and tag the git repository simpleGit().tags(function(_,tagList) { if (tagList.latest) { console.log("The last tag used was " + tagList.latest); @@ -58,17 +70,21 @@ if (process.argv[2] == 'dev') { prompt.get(properties, function (err, result) { if (err) { return onErr(err); } - simpleGit().addTag(result.version, function() { - simpleGit().pushTags('origin', function() { - console.log(' Tagged with: ' + result.version); - var latest = ("latest" == process.argv[2]); // maybe later use a CLI arg parser - stageToCDN(result.version, latest); - }) - }); - }); + var package_json = require('./package.json'); + package_json.version = result.version; + fse.writeJsonSync('./package.json', package_json); + simpleGit.commit(`Update to ${result.version}`, ['package.json']) + .addTag(result.version) + .pushTags('origin', function() { + console.log(' Tagged with: ' + result.version); + var latest = ("latest" == process.argv[2]); // maybe later use a CLI arg parser + stageToCDN(result.version, latest); + }); + }) }) } + function onErr(err) { console.log(err); return 1;