LEFT | RIGHT |
1 /*! | 1 /*! |
2 * This file is part of adblockplus.org. | 2 * This file is part of eyeomail.com. |
3 * Copyright (C) 2017-present eyeo GmbH | 3 * Copyright (C) 2017-present eyeo GmbH |
4 * | 4 * |
5 * adblockplus.org is free software: you can redistribute it and/or modify | 5 * eyeomail.com is free software: you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License as published by | 6 * it under the terms of the GNU General Public License as published by |
7 * the Free Software Foundation, either version 3 of the License, or | 7 * the Free Software Foundation, either version 3 of the License, or |
8 * (at your option) any later version. | 8 * (at your option) any later version. |
9 * | 9 * |
10 * adblockplus.org is distributed in the hope that it will be useful, | 10 * eyeomail.com is distributed in the hope that it will be useful, |
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 * GNU General Public License for more details. | 13 * GNU General Public License for more details. |
14 * | 14 * |
15 * You should have received a copy of the GNU General Public License | 15 * You should have received a copy of the GNU General Public License |
16 * along with adblockplus.org. If not, see <http://www.gnu.org/licenses/>. | 16 * along with eyeomail.com. If not, see <http://www.gnu.org/licenses/>. |
17 */ | 17 */ |
18 | 18 |
19 const gulp = require("gulp"); | 19 const gulp = require("gulp"); |
20 const gutil = require("gulp-util"); | 20 const gutil = require("gulp-util"); |
21 const rename = require("gulp-rename"); | 21 const rename = require("gulp-rename"); |
22 const sass = require("gulp-sass"); | 22 const sass = require("gulp-sass"); |
23 const postcss = require("gulp-postcss"); | 23 const postcss = require("gulp-postcss"); |
24 const scss = require("postcss-scss"); | 24 const scss = require("postcss-scss"); |
25 const autoprefixer = require("autoprefixer"); | 25 const autoprefixer = require("autoprefixer"); |
| 26 const replace = require("replace"); |
| 27 const fs = require("fs"); |
| 28 const readFilePromise = require("fs-readfile-promise"); |
26 | 29 |
27 /****************************************************************************** | 30 /****************************************************************************** |
28 * CSS | 31 * CSS |
29 ******************************************************************************/ | 32 ******************************************************************************/ |
30 | 33 |
31 gulp.task("css", function() { | 34 gulp.task("compileCss", function() { |
32 return gulp.src("./scss/main.scss") | 35 return gulp.src("./src/scss/main.scss") |
33 .pipe(postcss([autoprefixer()], {syntax: scss}).on("error", gutil.log)) | 36 .pipe(postcss([autoprefixer()], {syntax: scss}).on("error", gutil.log)) |
34 .pipe(sass({outputStyle: "compact"}).on("error", gutil.log)) | 37 .pipe(sass({outputStyle: "compact"}).on("error", gutil.log)) |
35 .pipe(rename("main.min.css")) | 38 .pipe(gulp.dest("./dist")); |
36 .pipe(gulp.dest("./css")); | |
37 }); | 39 }); |
| 40 |
| 41 gulp.task("inlineCss", ["compileCss", "moveTemplates"], function() { |
| 42 return fs.readFile("./dist/main.css", "utf8", function (err, styles) { |
| 43 if (err) throw err; |
| 44 |
| 45 const replacement = `<!-- styles:start --> |
| 46 <style> |
| 47 ${styles} |
| 48 </style> |
| 49 <!-- styles:end -->`; |
| 50 |
| 51 replace({ |
| 52 regex: /<!-- styles:start -->([\s\S]*?)<!-- styles:end -->/, |
| 53 replacement: replacement, |
| 54 paths: ["dist/signup.html"], |
| 55 recursive: true, |
| 56 silent: true, |
| 57 }); |
| 58 }); |
| 59 }); |
| 60 |
| 61 gulp.task("css", ["inlineCss"]); |
| 62 |
| 63 /****************************************************************************** |
| 64 * Template |
| 65 ******************************************************************************/ |
| 66 |
| 67 gulp.task("moveTemplates", function() { |
| 68 const templateFiles = ["./src/templates/signup.html", |
| 69 "./src/templates/confirm-email.html", |
| 70 "./src/templates/subscription-confirmed-email.html"]; |
| 71 |
| 72 return gulp.src(templateFiles).pipe(gulp.dest("./dist")); |
| 73 }); |
| 74 |
| 75 gulp.task("backclick", function() { |
| 76 const templateFiles = ["./dist/signup.html", |
| 77 "./dist/confirm-email.html", |
| 78 "./dist/subscription-confirmed-email.html"]; |
| 79 |
| 80 return Promise.all(templateFiles.map((file) => readFilePromise(file))) |
| 81 .then((buffers) => Promise.all(buffers.map((buffer) => buffer.toString()))) |
| 82 .then((contents) => { |
| 83 fs.writeFile("./dist/backclick.html", contents.join("")); |
| 84 }); |
| 85 }); |
| 86 |
| 87 gulp.task("template", ["css"]); |
38 | 88 |
39 /****************************************************************************** | 89 /****************************************************************************** |
40 * Watch | 90 * Watch |
41 ******************************************************************************/ | 91 ******************************************************************************/ |
42 | 92 |
43 gulp.task("watch", function() { | 93 gulp.task("watch", function() { |
44 gulp.watch("./scss/**/*.scss", ["css"]); | 94 gulp.watch("./src/scss/**/*.scss", ["css"]); |
| 95 gulp.watch("./src/templates/*.html", ["template", "backclick"]); |
45 }); | 96 }); |
46 | 97 |
47 /****************************************************************************** | 98 /****************************************************************************** |
48 * Default | 99 * Default |
49 ******************************************************************************/ | 100 ******************************************************************************/ |
50 | 101 |
51 gulp.task("default", ["css", "watch"]); | 102 gulp.task("default", ["template", "css", "watch"]); |
LEFT | RIGHT |