ng-factory
Version:
AngularJS industrialized development
185 lines (149 loc) • 6.28 kB
JavaScript
'use strict';
var path = require('path');
var merge = require('merge-stream');
var reload = require('browser-sync').reload;
var plumber = require('gulp-plumber');
var channels = require('gulp-ng-channels');
var concat = require('gulp-concat-util'), header = concat.header, footer = concat.footer;
var gulpif = require('gulp-if');
var combine = require('stream-combiner');
var inject = require('gulp-inject');
var angularFilesort = require('gulp-angular-filesort');
var bowerFiles = require('main-bower-files');
var bowerFilter = function(file) { return !/jquery|js\/bootstrap/.test(file); };
module.exports = function(gulp, config) {
var template = config.requireTransform('nunjucks');
var markdown = config.requireTransform('markdown');
var src = config.src, docs = config.docs;
var cwd = path.join(config.dirname, 'templates', 'docs');
gulp.task('ng:docs/views', function() {
return require('./locals')(gulp, config).then(function(locals) {
var views = gulp.src(docs.views, {cwd: docs.cwd, base: docs.cwd})
// var views = merge(gulp.src(docs.views, {cwd: docs.cwd, base: docs.cwd}), gulp.src(docs.views, {cwd: cwd, base: cwd}))
.pipe(plumber(config.plumberErrorHandler))
.pipe(channels.views.src(gulp, config)())
.pipe(reload({stream: true}));
var index = gulp.src(docs.index, {cwd: docs.cwd, base: docs.cwd})
.pipe(plumber(config.plumberErrorHandler))
.pipe(header('{% extends "index.j2.html" %}'))
.pipe(template({cwd: cwd, locals: locals}))
// .pipe(channels.index.src(config.docs))
.pipe(combine(
inject(
gulp.src(bowerFiles({paths: {bowerDirectory: path.join(config.cwd, docs.cwd, 'bower_components'), bowerJson: path.join(config.cwd, docs.cwd, 'bower.json')}, filter: bowerFilter}), {cwd: docs.cwd}),
{name: 'bower', addRootSlash: false}
),
inject(
merge(gulp.src(src.scripts, {cwd: src.cwd}), gulp.src('examples/**/*.js', {cwd: docs.cwd}))
.pipe(channels.scripts.src(gulp, config)(docs))
.pipe(angularFilesort()),
{name: 'src', ignorePath: src.tmp, addRootSlash: false}
),
inject(
merge(gulp.src(src.styles, {cwd: src.cwd}), gulp.src('examples/**/*.css', {cwd: docs.cwd}))
.pipe(channels.styles.src(gulp, config)(src)),
{name: 'src', ignorePath: src.tmp, addRootSlash: false}
),
inject(
merge(gulp.src(docs.scripts, {cwd: docs.cwd, base: docs.cwd}), gulp.src(docs.scripts, {cwd: cwd, base: cwd}))
.pipe(gulpif('**/*.tpl.js', template({cwd: cwd, locals: locals})))
.pipe(channels.scripts.src(gulp, config)(docs))
.pipe(angularFilesort()),
{ignorePath: docs.tmp, addRootSlash: false}
),
inject(
merge(gulp.src(docs.styles, {cwd: docs.cwd, base: docs.cwd}), gulp.src(docs.styles, {cwd: cwd, base: cwd}))
.pipe(channels.styles.src(gulp, config)(docs)),
{ignorePath: docs.tmp, addRootSlash: false}
),
gulp.dest(docs.tmp)
))
.pipe(reload({stream: true}));
return merge(views, index);
});
});
gulp.task('ng:pages/views', function() {
return gulp.src(docs.index, {cwd: docs.cwd, base: docs.cwd})
.pipe(channels.index.dist(gulp, config)());
});
};
/*
var path = require('path');
var _ = require('lodash');
var inject = require('gulp-inject');
var mainBowerFiles = require('main-bower-files');
var changed = require('gulp-changed');
var ngdocParser = require('ngdoc-parser');
var ngdocFormatter = require('ngdoc-formatter');
var through = require('through2');
var glob = require('glob');
var rename = require('gulp-rename');
module.exports = function(gulp, config) {
var src = config.src,
docs = config.docs,
markdown = config.requireTransform('markdown'),
nunjucks = config.requireTransform('nunjucks');
// Local (ngFactory) cwd
var cwd = path.join(config.dirname, docs.templates);
gulp.task('ng-factory:docs/compileViews:to(docs.dest)', function (cb) {
var bwr = require(path.join(config.cwd, docs.tmp, '/bower.json'));
var locals = _.extend({}, config);
// Assign temporal pkg file version by hand here. No getter.
locals.pkg = config.pkg;
// HACK
function postLocalsPopulation(then) {
// Fetch examples
locals.examples = {};
config.modules.map(function(name) {
locals.examples[name] = glob.sync(path.join(name, 'docs', 'examples', '*'), {cwd: src.cwd}).map(function(file) {
var exampleFilename = path.basename(file).replace(/\.(tpl|nunjucks)(\..+)$/, '$2');
return {
name : exampleFilename,
ref: path.join(name, 'docs', 'examples', exampleFilename),
filename: path.join(src.cwd, file),
basename: path.basename(file),
extname: path.extname(file)
};
});
});
return gulp.src(src.scripts, {cwd: src.cwd, base: src.cwd})
.pipe(ngdocParser())
.pipe(ngdocFormatter({
hLevel: 3
}))
.pipe(markdown())
.pipe(through.obj(function (file, encoding, next) {
// handle multi files ?
locals.ngdocs = file.contents.toString();
next(null, file);
}))
.pipe(through.obj(then));
}
function renderTheViews(){
return gulp.src(['*.nunjucks.html', '*\/docs/examples/*.nunjucks.html'], {cwd: docs.tmp, base: docs.tmp})
//.pipe(changed(docs.tmp, { extension : '.html' }))
.pipe(nunjucks({locals: locals, strict: true}))
.pipe(inject(gulp.src(mainBowerFiles({paths: docs.tmp}), {
cwd: docs.tmp,
base: docs.tmp,
read: false
}), {
name: 'bowerDependencies',
relative: true
}))
.pipe(inject(gulp.src(bwr.main, {
cwd: docs.tmp,
base: docs.tmp,
read: false
}), {
name: 'themeDependencies',
relative: true
}))
.pipe(gulp.dest(docs.dest))
.on('end', cb);
}
// HACK
postLocalsPopulation(renderTheViews);
});
};
*/