aboutsummaryrefslogtreecommitdiff
path: root/extension/gulpfile.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2016-01-18 22:28:19 +0100
committerFlorian Dold <florian.dold@gmail.com>2016-01-18 22:28:19 +0100
commitfffc1153ca0ea08ef9c6d519e7f3d9a26fa17dd1 (patch)
treee025a75cc9cf09daa8c0304c8b5bbc11e727c0b1 /extension/gulpfile.js
parentf5626ef322709e11899be4ff136ff2a2cf7f37ed (diff)
Gulp build file
Diffstat (limited to 'extension/gulpfile.js')
-rw-r--r--extension/gulpfile.js112
1 files changed, 112 insertions, 0 deletions
diff --git a/extension/gulpfile.js b/extension/gulpfile.js
new file mode 100644
index 000000000..2f35e2b89
--- /dev/null
+++ b/extension/gulpfile.js
@@ -0,0 +1,112 @@
+
+"use strict";
+
+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');
+
+const paths = {
+ ts: [
+ "lib/**.{ts,tsx}",
+ "background/*.{ts,tsx}",
+ "content_scripts/*.{ts,tsx}",
+ "popup/*.{ts,tsx}",
+ "pages/*.{ts,tsx}",
+ ],
+ dist: [
+ "manifest.json",
+ "img/*",
+ "lib/vendor/*",
+ "lib/emscripten/libwrapper.js"
+ ],
+}
+
+
+
+const tsBaseArgs = {
+ target: "es5",
+ jsx: "react",
+ experimentalDecorators: true,
+ module: "system",
+ sourceMap: true,
+ noLib: true,
+};
+
+
+let manifest;
+(() => {
+ const f = fs.readFileSync("manifest.json", "utf8");
+ manifest = JSON.parse(f);
+})();
+
+console.log("version:", manifest.version);
+
+
+gulp.task("clean", function() {
+ del("_build/ext");
+});
+
+// Package the extension
+gulp.task("build-prod", ["clean"], function() {
+ console.log("hello");
+ const tsArgs = {};
+ Object.assign(tsArgs, tsBaseArgs);
+ console.log("args", JSON.stringify(tsArgs));
+ tsArgs.typescript = require("typescript");
+ // relative to the gulp.dest
+ tsArgs.outDir = ".";
+ // We don't want source maps for production
+ tsArgs.sourceMap = undefined;
+ gulp.src(paths.ts)
+ .pipe(map((f,cb) => { console.log(f.path); cb(null, f); }))
+ .pipe(ts(tsArgs))
+ .pipe(gulp.dest("_build/ext/"));
+ gulp.src(paths.dist, {base: ".", stripBOM: false})
+ .pipe(gulp.dest("_build/ext/"));
+});
+
+
+gulp.task("package", ["build-prod"], function() {
+ console.log("hello, packaging");
+ let zipname = String.prototype.concat("taler-wallet-", manifest.version, ".zip");
+ gulp.src("_build/ext/*", {buffer: false, stripBOM: false})
+ .pipe(zip(zipname))
+ .pipe(gulp.dest("_build/"));
+});
+
+function tsconfig(confBase) {
+ let conf = {
+ compilerOptions: {},
+ files: []
+ };
+ Object.assign(conf.compilerOptions, confBase);
+ return through.obj(function(file, enc, cb) {
+ console.log("file", file.relative);
+ conf.files.push(file.relative);
+ cb();
+ }, function(cb) {
+ console.log("done");
+ 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() {
+ gulp.src(paths.ts, {base: "."})
+ .pipe(tsconfig(tsBaseArgs))
+ .pipe(gulp.dest("."));
+});
+