Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: gulpfile.js

Issue 29646555: Issue 6210 - Implement Subscription (Double-opt-in) template for newsletter (Closed)
Patch Set: Update with specification changes Created Jan. 12, 2018, 1:19 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « README.md ('k') | package.json » ('j') | src/scss/_content.scss » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gulpfile.js
===================================================================
new file mode 100644
--- /dev/null
+++ b/gulpfile.js
@@ -0,0 +1,104 @@
+/*!
+ * This file is part of eyeomail.com.
+ * Copyright (C) 2017-present eyeo GmbH
+ *
+ * eyeomail.com 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 of the License, or
+ * (at your option) any later version.
+ *
+ * eyeomail.com 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 eyeomail.com. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+const gulp = require("gulp");
+const gutil = require("gulp-util");
+const rename = require("gulp-rename");
+const sass = require("gulp-sass");
+const postcss = require("gulp-postcss");
+const scss = require("postcss-scss");
+const autoprefixer = require("autoprefixer");
+const replace = require("replace");
+const fs = require("fs");
+const readFilePromise = require("fs-readfile-promise");
+
+/******************************************************************************
+ * CSS
+ ******************************************************************************/
+
+gulp.task("compileCss", function() {
+ return gulp.src("./src/scss/main.scss")
+ .pipe(postcss([autoprefixer()], {syntax: scss}).on("error", gutil.log))
+ .pipe(sass({outputStyle: "compact"}).on("error", gutil.log))
+ .pipe(gulp.dest("./dist"));
+});
+
+gulp.task("inlineCss", ["compileCss", "templates"], function() {
+ return fs.readFile("./dist/main.css", "utf8", function (err, styles) {
+ if (err) throw err;
+
+ const replacement = `<!-- styles:start -->
juliandoucette 2018/01/22 19:47:52 NIT: (Bringing up an old point, I know) I underst
ire 2018/01/23 08:48:08 The reason I replaced the comments as well was bec
juliandoucette 2018/01/23 17:00:45 I wasn't able to find a simple regex solution. My
+<style>
+${styles}
+</style>
+<!-- styles:end -->`;
+
+ replace({
+ regex: /<!-- styles:start -->([\s\S]*?)<!-- styles:end -->/,
+ replacement: replacement,
+ paths: ["dist/signup.html"],
+ recursive: true,
+ silent: true,
+ });
+ });
+});
+
+gulp.task("css", ["inlineCss"]);
+
+/******************************************************************************
+ * Template
+ ******************************************************************************/
+
+gulp.task("templates", function() {
juliandoucette 2018/01/22 19:47:52 NIT: This task name is inconsistent with the ones
ire 2018/01/23 08:48:09 Done.
+ const templateFiles = ["./src/templates/signup.html",
+ "./src/templates/confirm-email.html",
+ "./src/templates/subscription-confirmed-email.html"];
+
+ return gulp.src(templateFiles).pipe(gulp.dest("./dist"));
+});
+
+gulp.task("backclick", function() {
+ const templateFiles = ["./dist/signup.html",
+ "./dist/confirm-email.html",
+ "./dist/subscription-confirmed-email.html"];
+
+ return Promise.all(templateFiles.map((file) => readFilePromise(file)))
+ .then((buffers) => Promise.all(buffers.map((buffer) => buffer.toString())))
+ .then((contents) => {
+ fs.mkdir("./dist", () => {
juliandoucette 2018/01/22 19:47:51 NIT: mkdir implies that a dir doesn't exist alread
ire 2018/01/23 08:48:08 The `mkdir` is actually not needed as the backclic
+ fs.writeFile("./dist/backclick.html", contents.join(""));
juliandoucette 2018/01/22 19:47:51 NIT: A similar issue to the one above applies here
ire 2018/01/23 08:48:08 From my understanding fs.writeFile can be used to
juliandoucette 2018/01/23 17:00:45 Acknowledged.
+ })
+ });
+});
+
+gulp.task("template", ["css"]);
+
+/******************************************************************************
+ * Watch
+ ******************************************************************************/
+
+gulp.task("watch", function() {
+ gulp.watch("./src/scss/**/*.scss", ["css"]);
+ gulp.watch("./src/templates/*.html", ["template", "backclick"]);
+});
+
+/******************************************************************************
+ * Default
+ ******************************************************************************/
+
+gulp.task("default", ["template", "css", "watch"]);
« no previous file with comments | « README.md ('k') | package.json » ('j') | src/scss/_content.scss » ('J')

Powered by Google App Engine
This is Rietveld