From 1f36a552a056908da916d814dd9e7ac2f1daf150 Mon Sep 17 00:00:00 2001 From: Mathias Biilmann Christensen Date: Tue, 21 Feb 2017 17:33:52 -0800 Subject: Set repository from env variable or git remote --- gulpfile.babel.js | 45 +++++++++++++++++++++------------- package.json | 1 + site/static/admin/config.yml | 37 ---------------------------- site/static/admin/index.html | 16 ------------- src/cms/config.yml | 37 ++++++++++++++++++++++++++++ src/cms/index.html | 16 +++++++++++++ yarn.lock | 57 ++++++++++++++++++++++++++++++++++---------- 7 files changed, 126 insertions(+), 83 deletions(-) delete mode 100644 site/static/admin/config.yml delete mode 100644 site/static/admin/index.html create mode 100644 src/cms/config.yml create mode 100644 src/cms/index.html diff --git a/gulpfile.babel.js b/gulpfile.babel.js index f297fdb..3d214b8 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -10,8 +10,8 @@ import webpackConfig from "./webpack.conf"; import svgstore from "gulp-svgstore"; import svgmin from "gulp-svgmin"; import inject from "gulp-inject"; +import replace from "gulp-replace"; import cssnano from "cssnano"; -import uncss from "postcss-uncss"; const browserSync = BrowserSync.create(); const hugoBin = `./bin/hugo.${process.platform === "windows" ? "exe" : process.platform}`; @@ -20,7 +20,19 @@ const defaultArgs = ["-d", "../dist", "-s", "site"]; gulp.task("hugo", (cb) => buildSite(cb)); gulp.task("hugo-preview", (cb) => buildSite(cb, ["--buildDrafts", "--buildFuture"])); -gulp.task("build", ["css", "js", "hugo"]); +gulp.task("cms", () => { + const match = process.env.REPOSITORY_URL ? process.env.REPOSITORY_URL : cp.execSync("git remote -v", {encoding: "utf-8"}); + let repo = null; + match.replace(/github.com:(.+?)\.git/, (_, m) => { + repo = m; + }); + gulp.src("./src/cms/*") + .pipe(replace("<% GITHUB_REPOSITORY %>", repo)) + .pipe(gulp.dest("./dist/admin")) + .pipe(browserSync.stream()); +}); + +gulp.task("build", ["css", "js", "hugo", "cms"]); gulp.task("build-preview", ["css", "js", "hugo-preview"]); gulp.task("css", () => ( @@ -29,7 +41,6 @@ gulp.task("css", () => ( cssImport({from: "./src/css/main.css"}), cssnext(), cssnano(), - // uncss({ html: ['./site/**/*.html']}) ])) .pipe(gulp.dest("./dist/css")) .pipe(browserSync.stream()) @@ -49,24 +60,23 @@ gulp.task("js", (cb) => { }); }); -gulp.task('svg', () => { - const svgs = gulp - .src('site/static/img/icons/*.svg') - .pipe(svgmin()) - .pipe(svgstore({ inlineSvg: true })); +gulp.task("svg", () => { + const svgs = gulp + .src("site/static/img/icons/*.svg") + .pipe(svgmin()) + .pipe(svgstore({inlineSvg: true})); - function fileContents(filePath, file) { - return file.contents.toString(); - } + function fileContents(filePath, file) { + return file.contents.toString(); + } - return gulp - .src('site/layouts/partials/svg.html') - .pipe(inject(svgs, { transform: fileContents })) - .pipe(gulp.dest('site/layouts/partials/')); - browserSync.reload(); + return gulp + .src("site/layouts/partials/svg.html") + .pipe(inject(svgs, {transform: fileContents})) + .pipe(gulp.dest("site/layouts/partials/")); }); -gulp.task("server", ["hugo", "css", "js", "svg"], () => { +gulp.task("server", ["hugo", "css", "js", "svg", "cms"], () => { browserSync.init({ server: { baseDir: "./dist" @@ -74,6 +84,7 @@ gulp.task("server", ["hugo", "css", "js", "svg"], () => { }); gulp.watch("./src/js/**/*.js", ["js"]); gulp.watch("./src/css/**/*.css", ["css"]); + gulp.watch("./src/cms/*", ["cms"]); gulp.watch("./site/static/img/icons/*.svg", ["svg"]); gulp.watch("./site/**/*", ["hugo"]); }); diff --git a/package.json b/package.json index 9deda57..3fb4e88 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "gulp": "^3.9.1", "gulp-babel": "^6.1.2", "gulp-postcss": "^6.1.1", + "gulp-replace": "^0.5.4", "gulp-util": "^3.0.7", "imports-loader": "^0.6.5", "netlify-cms": "^0.3.9", diff --git a/site/static/admin/config.yml b/site/static/admin/config.yml deleted file mode 100644 index 9ecf53b..0000000 --- a/site/static/admin/config.yml +++ /dev/null @@ -1,37 +0,0 @@ -backend: - name: github - repo: netlify-templates/kaldi-hugo-cms-template # Path to your Github repository - branch: master # Branch to update (master by default) - -media_folder: "dist/img" # Folder where user uploaded files should go -public_folder: "dist" # CMS now knows 'source' is the public folder and will strip this from the path - -collections: # A list of collections the CMS should be able to edit - - name: "post" # Used in routes, ie.: /admin/collections/:slug/edit - label: "Post" # Used in the UI, ie.: "New Post" - folder: "site/content/post" # The path to the folder where the documents are stored - create: true # Allow users to create new documents in this collection - fields: # The fields each document in this collection have - - {label: "Title", name: "title", widget: "string"} - - {label: "Publish Date", name: "date", widget: "datetime"} - - {label: "Intro Blurb", name: "description", widget: "text"} - - {label: "Image", name: "image", widget: "image", required: false} - - {label: "Body", name: "body", widget: "markdown"} - - name: "pages" - label: "Pages" - files: - - file: "site/content/products.md" - label: "Products Page" - name: "products" - fields: - - {label: Title, name: title, widget: string} - - {label: Type, name: type, widget: hidden, default: products} - - {label: Page, name: page, widget: hidden, default: "/products.html"} - - {label: Image, name: image, widget: image} - - {label: Heading, name: heading, widget: string} - - {label: Description, name: description, widget: string} - - {label: Intro, name: intro, widget: object, fields: [{label: Heading, name: heading, widget: string}, {label: Description, name: description, widget: text}, {label: Blurbs, name: blurbs, widget: list, fields: [{label: Image, name: image, widget: image}, {label: Text, name: text, widget: text}]}]} - - {label: Main, name: main, widget: object, fields: [{label: Heading, name: heading, widget: string}, {label: Description, name: description, widget: text}, {label: Image1, name: image1, widget: object, fields: [{label: Image, name: image, widget: image}, {label: Alt, name: alt, widget: string}]}, {label: Image2, name: image2, widget: object, fields: [{label: Image, name: image, widget: image}, {label: Alt, name: alt, widget: string}]}, {label: Image3, name: image3, widget: object, fields: [{label: Image, name: image, widget: image}, {label: Alt, name: alt, widget: string}]}]} - - {label: Testimonials, name: testimonials, widget: list, fields: [{label: Quote, name: quote, widget: string}, {label: Author, name: author, widget: string}]} - - {label: Full_image, name: full_image, widget: image} - - {label: Pricing, name: pricing, widget: object, fields: [{label: Heading, name: heading, widget: string}, {label: Description, name: description, widget: string}, {label: Plans, name: plans, widget: list, fields: [{label: Plan, name: plan, widget: string}, {label: Price, name: price, widget: string}, {label: Description, name: description, widget: string}, {label: Items, name: items, widget: list}]}]} diff --git a/site/static/admin/index.html b/site/static/admin/index.html deleted file mode 100644 index baa6e33..0000000 --- a/site/static/admin/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - Content Manager - - - - - - - - - diff --git a/src/cms/config.yml b/src/cms/config.yml new file mode 100644 index 0000000..3b209aa --- /dev/null +++ b/src/cms/config.yml @@ -0,0 +1,37 @@ +backend: + name: github + repo: <% GITHUB_REPOSITORY %> # Gulp will replace this with your GitHub repository + branch: master # Branch to update (master by default) + +media_folder: "dist/img" # Folder where user uploaded files should go +public_folder: "dist" # CMS now knows 'source' is the public folder and will strip this from the path + +collections: # A list of collections the CMS should be able to edit + - name: "post" # Used in routes, ie.: /admin/collections/:slug/edit + label: "Post" # Used in the UI, ie.: "New Post" + folder: "site/content/post" # The path to the folder where the documents are stored + create: true # Allow users to create new documents in this collection + fields: # The fields each document in this collection have + - {label: "Title", name: "title", widget: "string"} + - {label: "Publish Date", name: "date", widget: "datetime"} + - {label: "Intro Blurb", name: "description", widget: "text"} + - {label: "Image", name: "image", widget: "image", required: false} + - {label: "Body", name: "body", widget: "markdown"} + - name: "pages" + label: "Pages" + files: + - file: "site/content/products.md" + label: "Products Page" + name: "products" + fields: + - {label: Title, name: title, widget: string} + - {label: Type, name: type, widget: hidden, default: products} + - {label: Page, name: page, widget: hidden, default: "/products.html"} + - {label: Image, name: image, widget: image} + - {label: Heading, name: heading, widget: string} + - {label: Description, name: description, widget: string} + - {label: Intro, name: intro, widget: object, fields: [{label: Heading, name: heading, widget: string}, {label: Description, name: description, widget: text}, {label: Blurbs, name: blurbs, widget: list, fields: [{label: Image, name: image, widget: image}, {label: Text, name: text, widget: text}]}]} + - {label: Main, name: main, widget: object, fields: [{label: Heading, name: heading, widget: string}, {label: Description, name: description, widget: text}, {label: Image1, name: image1, widget: object, fields: [{label: Image, name: image, widget: image}, {label: Alt, name: alt, widget: string}]}, {label: Image2, name: image2, widget: object, fields: [{label: Image, name: image, widget: image}, {label: Alt, name: alt, widget: string}]}, {label: Image3, name: image3, widget: object, fields: [{label: Image, name: image, widget: image}, {label: Alt, name: alt, widget: string}]}]} + - {label: Testimonials, name: testimonials, widget: list, fields: [{label: Quote, name: quote, widget: string}, {label: Author, name: author, widget: string}]} + - {label: Full_image, name: full_image, widget: image} + - {label: Pricing, name: pricing, widget: object, fields: [{label: Heading, name: heading, widget: string}, {label: Description, name: description, widget: string}, {label: Plans, name: plans, widget: list, fields: [{label: Plan, name: plan, widget: string}, {label: Price, name: price, widget: string}, {label: Description, name: description, widget: string}, {label: Items, name: items, widget: list}]}]} diff --git a/src/cms/index.html b/src/cms/index.html new file mode 100644 index 0000000..baa6e33 --- /dev/null +++ b/src/cms/index.html @@ -0,0 +1,16 @@ + + + + + + + Content Manager + + + + + + + + + diff --git a/yarn.lock b/yarn.lock index d0895c7..0f57428 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1158,6 +1158,10 @@ binary-extensions@^1.0.0: version "1.8.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" +binaryextensions@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-1.0.1.tgz#1e637488b35b58bda5f4774bf96a5212a8c90755" + bl@^1.0.0, bl@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/bl/-/bl-1.0.3.tgz#fc5421a28fd4226036c3b3891a66a25bc64d226e" @@ -2106,14 +2110,14 @@ domain-browser@^1.1.1: version "1.1.7" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" -domelementtype@1, domelementtype@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" - -domelementtype@~1.1.1: +domelementtype@1, domelementtype@~1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" +domelementtype@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + domhandler@2.3, domhandler@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" @@ -2380,7 +2384,7 @@ escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.3, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -3218,6 +3222,14 @@ gulp-postcss@^6.1.1: postcss-load-config "^1.1.0" vinyl-sourcemaps-apply "^0.2.1" +gulp-replace@^0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/gulp-replace/-/gulp-replace-0.5.4.tgz#69a67914bbd13c562bff14f504a403796aa0daa9" + dependencies: + istextorbinary "1.0.2" + readable-stream "^2.0.1" + replacestream "^4.0.0" + gulp-svgmin@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/gulp-svgmin/-/gulp-svgmin-1.2.3.tgz#88947b132e15b2de43d1dbccb30455319c5e50b5" @@ -3943,6 +3955,13 @@ istanbul@^0.4.5: which "^1.1.1" wordwrap "^1.0.0" +istextorbinary@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-1.0.2.tgz#ace19354d1a9a0173efeb1084ce0f87b0ad7decf" + dependencies: + binaryextensions "~1.0.0" + textextensions "~1.0.0" + jest-changed-files@^17.0.2: version "17.0.2" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-17.0.2.tgz#f5657758736996f590a51b87e5c9369d904ba7b7" @@ -5040,9 +5059,9 @@ netlify-auth-js@^0.5.5: dependencies: micro-api-client "^2.0.0" -netlify-cms@^0.3.8: - version "0.3.8" - resolved "https://registry.yarnpkg.com/netlify-cms/-/netlify-cms-0.3.8.tgz#77d09d66afb9e5be5a5cf3ce937b738a9d67d581" +netlify-cms@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/netlify-cms/-/netlify-cms-0.3.9.tgz#972b22527b5f33303cdd2ee9d9cea2cfd274d1aa" dependencies: "@kadira/storybook" "^1.36.0" autoprefixer "^6.3.3" @@ -6301,11 +6320,11 @@ qs@6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.0.tgz#3b7848c03c2dece69a9522b0fae8c4126d745f3b" -qs@6.2.1, qs@^6.1.0: +qs@6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625" -"qs@>= 0.4.0", qs@^6.2.0, qs@~6.3.0: +"qs@>= 0.4.0", qs@^6.1.0, qs@^6.2.0, qs@~6.3.0: version "6.3.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d" @@ -6831,13 +6850,21 @@ replace-ext@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" +replacestream@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/replacestream/-/replacestream-4.0.2.tgz#0c4140707e4f0323f50de044851708cf58bc37bd" + dependencies: + escape-string-regexp "^1.0.3" + object-assign "^4.0.1" + readable-stream "^2.0.2" + request-progress@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08" dependencies: throttleit "^1.0.0" -request@2.78.0: +request@2.78.0, request@^2.67.0: version "2.78.0" resolved "https://registry.yarnpkg.com/request/-/request-2.78.0.tgz#e1c8dec346e1c81923b24acdb337f11decabe9cc" dependencies: @@ -6862,7 +6889,7 @@ request@2.78.0: tough-cookie "~2.3.0" tunnel-agent "~0.4.1" -request@^2.58.0, request@^2.67.0, request@^2.74.0, request@^2.79.0, request@~2.79.0: +request@^2.58.0, request@^2.74.0, request@^2.79.0, request@~2.79.0: version "2.79.0" resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" dependencies: @@ -7674,6 +7701,10 @@ textarea-caret-position@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/textarea-caret-position/-/textarea-caret-position-0.1.1.tgz#34372aa755008b1a8451b8a1bb8f07795270fd70" +textextensions@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-1.0.2.tgz#65486393ee1f2bb039a60cbba05b0b68bd9501d2" + tfunk@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/tfunk/-/tfunk-3.1.0.tgz#38e4414fc64977d87afdaa72facb6d29f82f7b5b" -- cgit v1.3