2016-01-18 23:19:43 +01:00
|
|
|
/*
|
|
|
|
This file is part of TALER
|
|
|
|
(C) 2015 GNUnet e.V.
|
|
|
|
|
|
|
|
TALER is free software; you can redistribute it and/or modify it under the
|
|
|
|
terms of the GNU General Public License as published by the Free Software
|
|
|
|
Foundation; either version 3, or (at your option) any later version.
|
|
|
|
|
|
|
|
TALER is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
|
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
|
|
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
|
|
TALER; see the file COPYING. If not, If not, see <http://www.gnu.org/licenses/>
|
|
|
|
*/
|
2016-01-18 22:28:19 +01:00
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
2016-01-18 23:19:43 +01:00
|
|
|
/**
|
|
|
|
* Run with
|
|
|
|
* $ gulp <taskname>
|
|
|
|
*
|
|
|
|
* The important tasks are:
|
|
|
|
* - tsconfig: generate tsconfig.json file for
|
|
|
|
* development
|
|
|
|
* - package: create Chrome extension zip file in
|
|
|
|
* _build/.
|
|
|
|
*/
|
|
|
|
|
2016-01-18 22:28:19 +01:00
|
|
|
const gulp = require("gulp");
|
|
|
|
const map = require("map-stream");
|
|
|
|
const ts = require("gulp-typescript");
|
|
|
|
const zip = require("gulp-zip");
|
|
|
|
const fs = require("fs");
|
|
|
|
const del = require("del");
|
|
|
|
const through = require('through2');
|
|
|
|
const File = require('vinyl');
|
2016-02-09 22:17:24 +01:00
|
|
|
const jsonTransform = require('gulp-json-transform');
|
2016-01-18 22:28:19 +01:00
|
|
|
|
|
|
|
const paths = {
|
2016-01-18 22:41:25 +01:00
|
|
|
ts: {
|
|
|
|
release: [
|
2016-01-20 18:09:58 +01:00
|
|
|
"lib/**/*.{ts,tsx}",
|
2016-01-18 22:41:25 +01:00
|
|
|
"background/*.{ts,tsx}",
|
|
|
|
"content_scripts/*.{ts,tsx}",
|
|
|
|
"popup/*.{ts,tsx}",
|
|
|
|
"pages/*.{ts,tsx}",
|
2016-01-20 18:09:58 +01:00
|
|
|
"!**/*.d.ts"
|
2016-01-18 22:41:25 +01:00
|
|
|
],
|
|
|
|
dev: [
|
|
|
|
"test/tests/*.{ts,tsx}"
|
|
|
|
],
|
|
|
|
},
|
2016-01-18 22:28:19 +01:00
|
|
|
dist: [
|
|
|
|
"img/*",
|
2016-02-09 21:56:06 +01:00
|
|
|
"style/*.css",
|
2016-01-18 22:28:19 +01:00
|
|
|
"lib/vendor/*",
|
2016-02-09 21:56:06 +01:00
|
|
|
"lib/emscripten/libwrapper.js",
|
|
|
|
"lib/module-trampoline.js",
|
|
|
|
"popup/**/*.{html,css}",
|
|
|
|
"pages/**/*.{html,css}",
|
2016-01-18 22:28:19 +01:00
|
|
|
],
|
2016-01-24 02:29:13 +01:00
|
|
|
};
|
2016-01-18 22:28:19 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const tsBaseArgs = {
|
|
|
|
target: "es5",
|
|
|
|
jsx: "react",
|
|
|
|
experimentalDecorators: true,
|
|
|
|
module: "system",
|
|
|
|
sourceMap: true,
|
|
|
|
noLib: true,
|
2016-02-10 02:03:31 +01:00
|
|
|
noImplicitReturns: true,
|
|
|
|
noFallthroughCasesInSwitch: true,
|
2016-01-18 22:28:19 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
let manifest;
|
|
|
|
(() => {
|
|
|
|
const f = fs.readFileSync("manifest.json", "utf8");
|
|
|
|
manifest = JSON.parse(f);
|
|
|
|
})();
|
|
|
|
|
|
|
|
|
2016-01-18 23:19:43 +01:00
|
|
|
gulp.task("clean", function () {
|
2016-02-09 22:17:24 +01:00
|
|
|
return del("build/ext");
|
2016-01-18 22:28:19 +01:00
|
|
|
});
|
|
|
|
|
2016-01-18 23:14:49 +01:00
|
|
|
|
|
|
|
gulp.task("dist-prod", ["clean"], function () {
|
|
|
|
return gulp.src(paths.dist, {base: ".", stripBOM: false})
|
2016-02-09 22:17:24 +01:00
|
|
|
.pipe(gulp.dest("build/ext/"));
|
2016-01-18 23:14:49 +01:00
|
|
|
});
|
|
|
|
|
2016-01-18 23:19:43 +01:00
|
|
|
gulp.task("compile-prod", ["clean"], function () {
|
2016-01-18 22:28:19 +01:00
|
|
|
const tsArgs = {};
|
|
|
|
Object.assign(tsArgs, tsBaseArgs);
|
|
|
|
tsArgs.typescript = require("typescript");
|
|
|
|
// relative to the gulp.dest
|
|
|
|
tsArgs.outDir = ".";
|
|
|
|
// We don't want source maps for production
|
|
|
|
tsArgs.sourceMap = undefined;
|
2016-01-18 23:14:49 +01:00
|
|
|
return gulp.src(paths.ts.release)
|
2016-01-18 22:28:19 +01:00
|
|
|
.pipe(ts(tsArgs))
|
2016-02-09 22:17:24 +01:00
|
|
|
.pipe(gulp.dest("build/ext/"));
|
2016-01-18 22:28:19 +01:00
|
|
|
});
|
|
|
|
|
2016-02-09 22:17:24 +01:00
|
|
|
gulp.task("manifest-stable", ["clean"], function () {
|
|
|
|
return gulp.src("manifest.json")
|
|
|
|
.pipe(jsonTransform((data) => {
|
|
|
|
data.name = "GNU Taler Wallet (stable)";
|
|
|
|
return data;
|
|
|
|
}, 2))
|
|
|
|
.pipe(gulp.dest("build/ext/"));
|
|
|
|
});
|
|
|
|
|
|
|
|
gulp.task("manifest-unstable", ["clean"], function () {
|
|
|
|
return gulp.src("manifest.json")
|
|
|
|
.pipe(jsonTransform((data) => {
|
|
|
|
data.name = "GNU Taler Wallet (unstable)";
|
|
|
|
return data;
|
|
|
|
}, 2))
|
|
|
|
.pipe(gulp.dest("build/ext/"));
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
gulp.task("package-stable", ["compile-prod", "dist-prod", "manifest-stable"], function () {
|
|
|
|
let zipname = String.prototype.concat("taler-wallet-stable-", manifest.version, ".zip");
|
|
|
|
return gulp.src("build/ext/**", {buffer: false, stripBOM: false})
|
|
|
|
.pipe(zip(zipname))
|
|
|
|
.pipe(gulp.dest("build/"));
|
|
|
|
});
|
2016-01-18 22:28:19 +01:00
|
|
|
|
2016-02-09 22:17:24 +01:00
|
|
|
gulp.task("package-unstable", ["compile-prod", "dist-prod", "manifest-unstable"], function () {
|
|
|
|
let zipname = String.prototype.concat("taler-wallet-unstable-", manifest.version, ".zip");
|
|
|
|
return gulp.src("build/ext/**", {buffer: false, stripBOM: false})
|
2016-01-18 23:14:49 +01:00
|
|
|
.pipe(zip(zipname))
|
2016-02-09 22:17:24 +01:00
|
|
|
.pipe(gulp.dest("build/"));
|
2016-01-18 22:28:19 +01:00
|
|
|
});
|
|
|
|
|
2016-01-18 23:19:43 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Generate a tsconfig.json with the
|
|
|
|
* given compiler options that compiles
|
|
|
|
* all files piped into it.
|
|
|
|
*/
|
2016-01-18 22:28:19 +01:00
|
|
|
function tsconfig(confBase) {
|
|
|
|
let conf = {
|
|
|
|
compilerOptions: {},
|
|
|
|
files: []
|
|
|
|
};
|
|
|
|
Object.assign(conf.compilerOptions, confBase);
|
|
|
|
return through.obj(function(file, enc, cb) {
|
|
|
|
conf.files.push(file.relative);
|
|
|
|
cb();
|
|
|
|
}, function(cb) {
|
|
|
|
let x = JSON.stringify(conf, null, 2);
|
|
|
|
let f = new File({
|
|
|
|
path: "tsconfig.json",
|
|
|
|
contents: new Buffer(x),
|
|
|
|
});
|
|
|
|
this.push(f)
|
|
|
|
cb();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Generate the tsconfig file
|
|
|
|
// that should be used during development.
|
|
|
|
gulp.task("tsconfig", function() {
|
2016-01-18 23:14:49 +01:00
|
|
|
return gulp.src(Array.prototype.concat(paths.ts.release, paths.ts.dev), {base: "."})
|
|
|
|
.pipe(tsconfig(tsBaseArgs))
|
|
|
|
.pipe(gulp.dest("."));
|
2016-01-18 22:28:19 +01:00
|
|
|
});
|
|
|
|
|
2016-01-18 23:20:42 +01:00
|
|
|
|
2016-02-09 22:17:24 +01:00
|
|
|
gulp.task("default", ["package-stable", "tsconfig"]);
|