gaf-ng-notifications
Version:
176 lines (155 loc) • 4.3 kB
JavaScript
/* 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);
}