UNPKG

gaf-ng-notifications

Version:
176 lines (155 loc) 4.3 kB
/* eslint-disable */ var gulp = require('gulp'), colors = require("colors"), path = require('path'), rename = require('gulp-rename'), prompt = require('gulp-prompt'), del = require('del'), runSequence = require('run-sequence'); const { mv, rm, which, exec } = require("shelljs"); const replace = require('gulp-replace-task'); let libName = ''; let libDescription = ''; let teamName = ''; let teamEmail = ''; let inCI = process.env.CI const moduleName = 'gaf-ng-lib-starter'; const rootFolder = path.join(__dirname); const srcFolder = path.join(rootFolder, 'src', 'lib'); const tmpFolder = path.join(rootFolder, '.tmp'); const buildFolder = path.join(rootFolder, 'build'); const distFolder = path.join(rootFolder, 'dist', moduleName); /** * 1. Prompt for values to be used to replace placeholders and some filenames */ gulp.task('init:prompt', function () { return gulp.src('*') .pipe( prompt.prompt([ { type: 'input', name: 'libName', message: "Enter your library name (use kebab-case), eg 'my-ng-components':" },{ type: 'input', name: 'libDescription', message: "Enter a short human readable library name, eg 'My Angular Components':" },{ type: 'input', name: 'teamName', message: 'What is your team name?' }, { type: 'input', name: 'teamEmail', message: 'What is your team email?' } ], function(res){ libName = res.libName; libDescription = res.libDescription; teamName = res.teamName; teamEmail = res.teamEmail; } ) ); }); /** * 2. Replace placeholders with values collected in the init:prompt task */ gulp.task('init:replace-placeholders', function () { var placeholderConfig = { patterns: [ { match: /@@LIB_NAME@@/g, replacement: libName }, { match: /gaf-ng-lib-starter/g, replacement: libName }, { match: /@@LIB_DESCRIPTION@@/g, replacement: libDescription }, { match: /@@TEAM_NAME@@/g, replacement: teamName }, { match: /@@TEAM_EMAIL@@/g, replacement: teamEmail } ] }; gulp.src( [ path.join(rootFolder, 'package.json'), path.join(rootFolder, 'npm-shrinkwrap.json'), path.join(rootFolder, 'gulpfile.js') ]) .pipe(replace(placeholderConfig)) .pipe(gulp.dest(rootFolder)); gulp.src([path.join(rootFolder, 'src', 'demo', 'app', 'app.module.ts')]) .pipe(replace(placeholderConfig)) .pipe(gulp.dest(path.join(rootFolder, 'src', 'demo', 'app'))); gulp.src( [ path.join(srcFolder, 'package.json'), path.join(srcFolder, 'README.md') ]) .pipe(replace(placeholderConfig)) .pipe(gulp.dest(srcFolder)); console.log(); console.log(colors.cyan('Placeholders successfully replaced in all the places')); }); /** * 3. Rename lib files */ gulp.task('init:rename-files', function () { }); /** * 4. Copy package.json from /src to /dist */ gulp.task('init:copy-manifest', function () { // return gulp.src([`${srcFolder}/package.json`]) // .pipe(gulp.dest(distFolder)); }); /** * 5. Copy README.md from / to /dist */ gulp.task('init:copy-readme', function () { // return gulp.src([path.join(rootFolder, 'README.MD')]) // .pipe(gulp.dest(distFolder)); }); /** * 6. Re-initialize git project */ gulp.task('init:git', function () { // Remove .git folder rm("-Rf", path.join(rootFolder, '.git')); console.log(); console.log(colors.cyan('Removed .git directory')); }); gulp.task('init', function () { runSequence( 'init:prompt', 'init:replace-placeholders', 'init:rename-files', 'init:copy-manifest', 'init:copy-readme', 'init:git', function (err) { if (err) { console.log('ERROR:', err.message); } else { console.log('Project initialization finished succesfully'); } }); }); gulp.task('default', ['init']); /** * Deletes the specified folder */ function deleteFolders(folders) { return del(folders); }