Browse Source

Merge branch 'admin-tasks' of github.com:Semantic-Org/Semantic-UI into next

pull/1845/head
jlukic 10 years ago
parent
commit
3d341b3364
16 changed files with 690 additions and 77 deletions
  1. 2
      package.json
  2. 13
      tasks/admin/components/create.js
  3. 30
      tasks/admin/components/init.js
  4. 41
      tasks/admin/components/update.js
  5. 134
      tasks/admin/distributions/create.js
  6. 170
      tasks/admin/distributions/init.js
  7. 180
      tasks/admin/distributions/update.js
  8. 13
      tasks/admin/release-all.js
  9. 16
      tasks/admin/release.js
  10. 28
      tasks/collections/admin.js
  11. 35
      tasks/config/admin/release.js
  12. 0
      tasks/config/admin/templates/component-package.js
  13. 47
      tasks/config/admin/templates/css-package.js
  14. 47
      tasks/config/admin/templates/less-package.js
  15. 7
      tasks/docs/serve.js
  16. 4
      tasks/watch.js

2
package.json

@ -82,9 +82,7 @@
"gulp-concat-filenames" : "^0.0.3",
"gulp-debug" : "^2.0.0",
"gulp-git" : "^1.0.0",
"gulp-karma" : "0.0.4",
"gulp-tap" : "^0.1.3",
"karma" : "^0.12.28",
"run-sequence" : "^1.0.2"
}
}

tasks/admin/create-components.js → tasks/admin/components/create.js

@ -36,10 +36,9 @@ var
tap = require('gulp-tap'),
// config
config = require('../config/user'),
github = require('../config/admin/github'),
release = require('../config/admin/release'),
project = require('../config/project/release'),
config = require('../../config/user'),
release = require('../../config/admin/release'),
project = require('../../config/project/release'),
// shorthand
version = project.version,
@ -65,12 +64,12 @@ module.exports = function(callback) {
(function(component) {
var
outputDirectory = release.outputRoot + component,
outputDirectory = path.join(release.outputRoot, component),
isJavascript = fs.existsSync(output.compressed + component + '.js'),
isCSS = fs.existsSync(output.compressed + component + '.css'),
capitalizedComponent = component.charAt(0).toUpperCase() + component.slice(1),
packageName = release.packageRoot + component,
repoName = release.repoRoot + capitalizedComponent,
repoName = release.componentRepoRoot + capitalizedComponent,
gitURL = 'https://github.com/' + release.org + '/' + repoName + '.git',
repoURL = 'https://github.com/' + release.org + '/' + repoName + '/',
regExp = {
@ -283,7 +282,7 @@ module.exports = function(callback) {
}))
.pipe(tap(function(file) { fileNames += file.contents; }))
.on('end', function(){
gulp.src(release.templates.meteor)
gulp.src(release.templates.meteor.component)
.pipe(plumber())
.pipe(flatten())
.pipe(replace(regExp.match.name, regExp.replace.name))

tasks/admin/init-components.js → tasks/admin/components/init.js

@ -13,26 +13,26 @@
*/
var
gulp = require('gulp'),
gulp = require('gulp'),
// node dependencies
console = require('better-console'),
del = require('del'),
fs = require('fs'),
path = require('path'),
git = require('gulp-git'),
githubAPI = require('github'),
mkdirp = require('mkdirp'),
console = require('better-console'),
del = require('del'),
fs = require('fs'),
path = require('path'),
git = require('gulp-git'),
githubAPI = require('github'),
mkdirp = require('mkdirp'),
// admin files
github = require('../config/admin/github.js'),
release = require('../config/admin/release'),
project = require('../config/project/release'),
github = require('../../config/admin/github.js'),
release = require('../../config/admin/release'),
project = require('../../config/project/release'),
// oAuth configuration for GitHub
oAuth = fs.existsSync(__dirname + '/../config/admin/oauth.js')
? require('../config/admin/oauth')
oAuth = fs.existsSync(__dirname + '/../../config/admin/oauth.js')
? require('../../config/admin/oauth')
: false,
// shorthand
@ -68,7 +68,7 @@ module.exports = function(callback) {
component = release.components[index]
outputDirectory = path.resolve(release.outputRoot + component),
capitalizedComponent = component.charAt(0).toUpperCase() + component.slice(1),
repoName = release.repoRoot + capitalizedComponent,
repoName = release.componentRepoRoot + capitalizedComponent,
gitOptions = { cwd: outputDirectory },
pullOptions = { args: '-q', cwd: outputDirectory, quiet: true },
@ -87,7 +87,7 @@ module.exports = function(callback) {
}
// clean folder
if(release.outputRoot.search('../components') == 0) {
if(release.outputRoot.search('../repos') == 0) {
console.info('Cleaning dir', outputDirectory);
del.sync([outputDirectory + '**/*'], {silent: true, force: true});
}

tasks/admin/update-components.js → tasks/admin/components/update.js

@ -24,18 +24,18 @@ var
requireDotFile = require('require-dot-file'),
// admin files
github = require('../config/admin/github.js'),
release = require('../config/admin/release'),
project = require('../config/project/release'),
github = require('../../config/admin/github.js'),
release = require('../../config/admin/release'),
project = require('../../config/project/release'),
// oAuth configuration for GitHub
oAuth = fs.existsSync(__dirname + '/../config/admin/oauth.js')
? require('../config/admin/oauth')
oAuth = fs.existsSync(__dirname + '/../../config/admin/oauth.js')
? require('../../config/admin/oauth')
: false,
// shorthand
version = project.version
version = project.version
;
module.exports = function() {
@ -63,9 +63,9 @@ module.exports = function() {
var
component = release.components[index]
outputDirectory = path.resolve(release.outputRoot + component),
outputDirectory = path.resolve(path.join(release.outputRoot, component)),
capitalizedComponent = component.charAt(0).toUpperCase() + component.slice(1),
repoName = release.repoRoot + capitalizedComponent,
repoName = release.componentRepoRoot + capitalizedComponent,
gitURL = 'https://github.com/' + release.org + '/' + repoName + '.git',
repoURL = 'https://github.com/' + release.org + '/' + repoName + '/',
@ -82,13 +82,15 @@ module.exports = function() {
commitMessage = (isNewVersion)
? 'Updated component to version ' + version
: 'Updated automatically main repository',
: 'Updated files from main repo',
gitOptions = { cwd: outputDirectory },
commitOptions = { args: commitArgs, cwd: outputDirectory },
releaseOptions = { tag_name: version, owner: release.org, repo: repoName },
usernameOptions = { args : 'config user.name "' + oAuth.name + '"', cwd: outputDirectory },
emailOptions = { args : 'config user.email "' + oAuth.email + '"', cwd: outputDirectory },
fileModeOptions = { args : 'config core.fileMode false', cwd: outputDirectory },
usernameOptions = { args : 'config user.name "' + oAuth.name + '"', cwd: outputDirectory },
emailOptions = { args : 'config user.email "' + oAuth.email + '"', cwd: outputDirectory },
localRepoSetup = fs.existsSync(path.join(outputDirectory, '.git')),
canProceed = true
@ -97,14 +99,17 @@ module.exports = function() {
console.info('Processing repository:' + outputDirectory);
function setUser() {
git.exec(usernameOptions, function () {
git.exec(emailOptions, function () {
commitFiles();
function setConfig() {
git.exec(fileModeOptions, function() {
git.exec(usernameOptions, function () {
git.exec(emailOptions, function () {
commitFiles();
});
});
});
}
// standard path
function commitFiles() {
// commit files
@ -130,7 +135,7 @@ module.exports = function() {
// push changess to remote
function pushFiles() {
console.info('Pushing files for ' + component);
git.push('origin', 'master', { args: '-f', cwd: outputDirectory }, function(error) {
git.push('origin', 'master', { args: '', cwd: outputDirectory }, function(error) {
console.info('Push completed successfully');
createRelease();
});
@ -159,12 +164,12 @@ module.exports = function() {
console.log('Sleeping for 1 second...');
// avoid rate throttling
global.clearTimeout(timer);
return stepRepo()
timer = global.setTimeout(stepRepo, 500);
}
if(localRepoSetup) {
commitFiles();
setConfig();
}
else {
console.error('Repository must be setup before running update components');

134
tasks/admin/distributions/create.js

@ -0,0 +1,134 @@
/*******************************
Create Distributions
*******************************/
/*
This will create individual distribution repositories for each SUI distribution
* copy distribution files to release
* update package.json file
*/
var
gulp = require('gulp'),
// node dependencies
console = require('better-console'),
del = require('del'),
fs = require('fs'),
path = require('path'),
runSequence = require('run-sequence'),
// admin dependencies
concatFileNames = require('gulp-concat-filenames'),
debug = require('gulp-debug'),
flatten = require('gulp-flatten'),
git = require('gulp-git'),
jsonEditor = require('gulp-json-editor'),
plumber = require('gulp-plumber'),
rename = require('gulp-rename'),
replace = require('gulp-replace'),
tap = require('gulp-tap'),
// config
config = require('../../config/user'),
release = require('../../config/admin/release'),
project = require('../../config/project/release'),
// shorthand
version = project.version,
output = config.paths.output
;
module.exports = function(callback) {
var
stream,
index,
tasks = []
;
for(index in release.distributions) {
var
distribution = release.distributions[index]
;
// streams... designed to save time and make coding fun...
(function(distribution) {
var
distLowerCase = distribution.toLowerCase(),
outputDirectory = path.join(release.outputRoot, distLowerCase),
packageFile = path.join(outputDirectory, release.files.npm),
repoName = release.distRepoRoot + distribution,
regExp = {
match : {
version : '{version}'
}
},
task = {
all : distribution + ' copying files',
repo : distribution + ' create repo',
meteor : distribution + ' create meteor package.js',
package : distribution + ' create package.json'
}
;
gulp.task(task.meteor, function() {
gulp.src(release.templates.meteor[distLowerCase])
.pipe(plumber())
.pipe(debug())
.pipe(flatten())
.pipe(replace(regExp.match.version, version))
.pipe(rename(release.files.meteor))
.pipe(gulp.dest(outputDirectory))
;
});
if(distribution == 'CSS') {
gulp.task(task.repo, function() {
return gulp.src('./dist/themes/default/**/*', { base: './dist/' })
.pipe(gulp.src('./dist/components/*', { base: './dist/' }))
.pipe(gulp.src('./dist/*', { base: './dist/' }))
.pipe(plumber())
.pipe(gulp.dest(outputDirectory))
;
});
}
else if(distribution == 'LESS') {
gulp.task(task.repo, function() {
return gulp.src('./src/theme.config.example', { base: './src/' })
.pipe(gulp.src('./src/definitions/**/*', { base: './src/' }))
.pipe(gulp.src('./src/_site/**/*', { base: './src/' }))
.pipe(gulp.src('./src/themes/**/*', { base: './src/' }))
.pipe(plumber())
.pipe(gulp.dest(outputDirectory))
;
});
}
// extend package.json
gulp.task(task.package, function() {
return gulp.src(packageFile)
.pipe(plumber())
.pipe(jsonEditor(function(package) {
if(version) {
package.version = version;
}
return package;
}))
.pipe(gulp.dest(outputDirectory))
;
});
tasks.push(task.meteor);
tasks.push(task.repo);
tasks.push(task.package);
})(distribution);
}
runSequence(tasks, callback);
};

170
tasks/admin/distributions/init.js

@ -0,0 +1,170 @@
/*******************************
Init Dist Repos
*******************************/
/*
This task pulls the latest version of distribution from GitHub
* Creates new repo if doesnt exist (locally & GitHub)
* Adds remote it doesnt exists
* Pulls latest changes from repo
*/
var
gulp = require('gulp'),
// node dependencies
console = require('better-console'),
del = require('del'),
fs = require('fs'),
path = require('path'),
git = require('gulp-git'),
githubAPI = require('github'),
mkdirp = require('mkdirp'),
// admin files
github = require('../../config/admin/github.js'),
release = require('../../config/admin/release'),
project = require('../../config/project/release'),
// oAuth configuration for GitHub
oAuth = fs.existsSync(__dirname + '/../../config/admin/oauth.js')
? require('../../config/admin/oauth')
: false,
// shorthand
version = project.version
;
module.exports = function(callback) {
var
index = -1,
total = release.distributions.length,
timer,
stream,
stepRepo
;
if(!oAuth) {
console.error('Must add oauth token for GitHub in tasks/config/admin/oauth.js');
return;
}
// Do Git commands synchronously per component, to avoid issues
stepRepo = function() {
index = index + 1;
if(index >= total) {
callback();
return;
}
var
component = release.distributions[index],
lowerCaseComponent = component.toLowerCase(),
outputDirectory = path.resolve(release.outputRoot + lowerCaseComponent),
repoName = release.distRepoRoot + component,
gitOptions = { cwd: outputDirectory },
pullOptions = { args: '-q', cwd: outputDirectory, quiet: true },
resetOptions = { args: '-q --hard', cwd: outputDirectory, quiet: true },
gitURL = 'https://github.com/' + release.org + '/' + repoName + '.git',
repoURL = 'https://github.com/' + release.org + '/' + repoName + '/',
localRepoSetup = fs.existsSync(path.join(outputDirectory, '.git'))
;
console.log('Processing repository: ' + outputDirectory);
// create folder if doesn't exist
if( !fs.existsSync(outputDirectory) ) {
mkdirp.sync(outputDirectory);
}
// clean folder
if(release.outputRoot.search('../repos') == 0) {
console.info('Cleaning dir', outputDirectory);
del.sync([outputDirectory + '**/*'], {silent: true, force: true});
}
// set-up local repo
function setupRepo() {
if(localRepoSetup) {
addRemote();
}
else {
initRepo();
}
}
function initRepo() {
console.info('Initializing repository for ' + component);
git.init(gitOptions, function(error) {
if(error) {
console.error('Error initializing repo', error);
}
addRemote();
});
}
function createRepo() {
console.info('Creating GitHub repo ' + repoURL);
github.repos.createFromOrg({
org : release.org,
name : repoName,
homepage : release.homepage
}, function() {
setupRepo();
});
}
function addRemote() {
console.info('Adding remote origin as ' + gitURL);
git.addRemote('origin', gitURL, gitOptions, function(){
pullFiles();
});
}
function pullFiles() {
console.info('Pulling ' + component + ' files');
git.pull('origin', 'master', pullOptions, function(error) {
resetFiles();
});
}
function resetFiles() {
console.info('Resetting files to head');
git.reset('HEAD', resetOptions, function(error) {
nextRepo();
});
}
function nextRepo() {
//console.log('Sleeping for 1 second...');
// avoid rate throttling
global.clearTimeout(timer);
timer = global.setTimeout(function() {
stepRepo()
}, 0);
}
if(localRepoSetup) {
pullFiles();
}
else {
setupRepo();
// createRepo() only use to create remote repo (easier to do manually)
}
};
stepRepo();
};

180
tasks/admin/distributions/update.js

@ -0,0 +1,180 @@
/*******************************
Update Repos
*******************************/
/*
This task update all SUI individual distribution repos with new versions of distributions
* Commits changes from create repo
* Pushes changes to GitHub
* Tag new releases if version changed in main repo
*/
var
gulp = require('gulp'),
// node dependencies
console = require('better-console'),
fs = require('fs'),
path = require('path'),
git = require('gulp-git'),
githubAPI = require('github'),
requireDotFile = require('require-dot-file'),
// admin files
github = require('../../config/admin/github.js'),
release = require('../../config/admin/release'),
project = require('../../config/project/release'),
// oAuth configuration for GitHub
oAuth = fs.existsSync(__dirname + '/../../config/admin/oauth.js')
? require('../../config/admin/oauth')
: false,
// shorthand
version = project.version
;
module.exports = function() {
var
index = -1,
total = release.distributions.length,
timer,
stream,
stepRepo
;
if(!oAuth) {
console.error('Must add oauth token for GitHub in tasks/config/admin/oauth.js');
return;
}
// Do Git commands synchronously per distribution, to avoid issues
stepRepo = function() {
index = index + 1;
if(index >= total) {
return;
}
var
distribution = release.distributions[index],
outputDirectory = path.resolve(path.join(release.outputRoot, distribution.toLowerCase() )),
repoName = release.distRepoRoot + distribution,
gitURL = 'https://github.com/' + release.org + '/' + repoName + '.git',
repoURL = 'https://github.com/' + release.org + '/' + repoName + '/',
commitArgs = (oAuth.name !== undefined && oAuth.email !== undefined)
? '--author "' + oAuth.name + ' <' + oAuth.email + '>"'
: '',
distributionPackage = fs.existsSync(outputDirectory + 'package.json' )
? require(outputDirectory + 'package.json')
: false,
isNewVersion = (version && distributionPackage.version != version),
commitMessage = (isNewVersion)
? 'Updated distribution to version ' + version
: 'Updated files from main repo',
gitOptions = { cwd: outputDirectory },
commitOptions = { args: commitArgs, cwd: outputDirectory },
releaseOptions = { tag_name: version, owner: release.org, repo: repoName },
fileModeOptions = { args : 'config core.fileMode false', cwd: outputDirectory },
usernameOptions = { args : 'config user.name "' + oAuth.name + '"', cwd: outputDirectory },
emailOptions = { args : 'config user.email "' + oAuth.email + '"', cwd: outputDirectory },
localRepoSetup = fs.existsSync(path.join(outputDirectory, '.git')),
canProceed = true
;
console.info('Processing repository:' + outputDirectory);
function setConfig() {
git.exec(fileModeOptions, function() {
git.exec(usernameOptions, function () {
git.exec(emailOptions, function () {
commitFiles();
});
});
});
}
// standard path
function commitFiles() {
// commit files
console.info('Committing ' + distribution + ' files', commitArgs);
gulp.src('**/*', gitOptions)
.pipe(git.add(gitOptions))
.pipe(git.commit(commitMessage, commitOptions))
.on('error', function(error) {
// canProceed = false; bug in git commit <https://github.com/stevelacy/gulp-git/issues/49>
})
.on('finish', function(callback) {
if(canProceed) {
pushFiles();
}
else {
console.info('Nothing new to commit');
nextRepo();
}
})
;
}
// push changess to remote
function pushFiles() {
console.info('Pushing files for ' + distribution);
git.push('origin', 'master', { args: '', cwd: outputDirectory }, function(error) {
console.info('Push completed successfully');
createRelease();
});
}
// create release on GitHub.com
function createRelease() {
console.log('Tagging release as ', version);
github.releases.createRelease(releaseOptions, function() {
nextRepo();
tagFiles();
});
tagFiles();
}
// Tags files locally
function tagFiles() {
console.info('Tagging new version ' + distribution, version);
git.tag(version, 'Updated version from semantic-ui (automatic)', function (err) {
nextRepo();
});
}
// Steps to next repository
function nextRepo() {
console.log('Sleeping for 1 second...');
// avoid rate throttling
global.clearTimeout(timer);
timer = global.setTimeout(stepRepo, 500);
}
if(localRepoSetup) {
setConfig();
}
else {
console.error('Repository must be setup before running update distributions');
}
};
stepRepo();
};

13
tasks/admin/release-all.js

@ -5,8 +5,10 @@
/*
This task update all SUI individual component repos with new versions of components
* Initializes repositories with current versions
* Creates local files at ../components/ with each repo for release
* Syncs each component with GitHub
* Commits changes from create components
* Registers new versions with NPM Publish
*/
@ -18,11 +20,10 @@ var
module.exports = function() {
runSequence(
//'build', // build Semantic
'init components', // create each component repo
'create components', // create each component repo
'update components', // update component repos on github
'register repos'
'build', // build Semantic
'init components', // sync with current github version
'create components', // update each repo
'update components' // commit changes to github
);
};

16
tasks/admin/release.js

@ -1,9 +1,14 @@
/*******************************
Release
Release
*******************************/
/*
This task update only SUI repos that use the full release (all components)
This task update all SUI individual component repos with new versions of components
* Initializes repositories with current versions
* Creates local files at ../distributions/ with each repo for release
* Commits changes from create components
* Registers new versions with NPM Publish
*/
@ -11,11 +16,14 @@ var
runSequence = require('run-sequence')
;
/* Release All */
module.exports = function() {
runSequence(
'build', // build semantic
'create static repo' // create standalone css repo
'build', // build Semantic
'init distributions', // sync with current github version
'create distributions', // update each repo with changes from master repo
'update distributions' // commit changes to github
);
};

28
tasks/collections/admin.js

@ -16,25 +16,35 @@
module.exports = function(gulp) {
var
// less/css distributions
initComponents = require('../admin/components/init'),
createComponents = require('../admin/components/create'),
updateComponents = require('../admin/components/update'),
// single component releases
initComponents = require('../admin/init-components'),
createComponents = require('../admin/create-components'),
updateComponents = require('../admin/update-components'),
initDistributions = require('../admin/distributions/init'),
createDistributions = require('../admin/distributions/create'),
updateDistributions = require('../admin/distributions/update'),
// one time register with PM
registerRepos = require('../admin/register-repos'),
registerRepos = require('../admin/register-repos'),
// meta tasks
releaseAll = require('../admin/release-all'),
release = require('../admin/release')
releaseAll = require('../admin/release-all'),
release = require('../admin/release')
;
gulp.task('release', 'Publishes only packaged releases', release);
gulp.task('release all', 'Publishes all releases (components, package)', releaseAll);
gulp.task('init distributions', 'Grabs each component from GitHub', initDistributions);
gulp.task('create distributions', 'Updates files in each repo', createDistributions);
gulp.task('update distributions', 'Commits component updates from create to GitHub', updateDistributions);
gulp.task('init components', 'Grabs each component from GitHub', initComponents);
gulp.task('create components', 'Updates files in each repo', createComponents);
gulp.task('update components', 'Commits component updates from create to GitHub', updateComponents);
gulp.task('register repos', 'Registers packages with Bower and NPM', registerRepos);
gulp.task('release all', 'Publishes all releases (components, package)', releaseAll);
gulp.task('release', 'Publishes only packaged releases', release);
gulp.task('register repos', 'Registers all packages with NPM', registerRepos);
};

35
tasks/config/admin/release.js

@ -15,12 +15,16 @@ module.exports = {
},
templates: {
bower : './tasks/config/admin/templates/bower.json',
composer : './tasks/config/admin/templates/composer.json',
package : './tasks/config/admin/templates/package.json',
meteor : './tasks/config/admin/templates/package.js',
readme : './tasks/config/admin/templates/README.md',
notes : './RELEASE-NOTES.md'
bower : './tasks/config/admin/templates/bower.json',
composer : './tasks/config/admin/templates/composer.json',
package : './tasks/config/admin/templates/package.json',
meteor : {
css : './tasks/config/admin/templates/css-package.js',
component : './tasks/config/admin/templates/component-package.js',
less : './tasks/config/admin/templates/less-package.js',
},
readme : './tasks/config/admin/templates/README.md',
notes : './RELEASE-NOTES.md'
},
org : 'Semantic-Org',
@ -34,15 +38,26 @@ module.exports = {
meteor : 'package.js'
},
// root name for repos
repoRoot : 'UI-',
packageRoot : 'semantic-ui-',
// root name for distribution repos
distRepoRoot : 'Semantic-UI-',
// root name for single component repos
componentRepoRoot : 'UI-',
// root name for package managers
packageRoot : 'semantic-ui-',
// root path to repos
outputRoot : '../components/',
outputRoot : '../repos/',
homepage : 'http://www.semantic-ui.com',
// distributions that get separate repos
distributions: [
'LESS',
'CSS'
],
// components that get separate repositories for bower/npm
components : [
'accordion',

tasks/config/admin/templates/package.js → tasks/config/admin/templates/component-package.js

47
tasks/config/admin/templates/css-package.js

@ -0,0 +1,47 @@
var
where = 'client' // Adds files only to the client
;
Package.describe({
name : 'semantic:ui-css',
summary : 'Semantic UI - CSS Release of Semantic UI',
version : '{version}',
git : 'git://github.com/Semantic-Org/Semantic-UI-CSS.git',
});
Package.onUse(function(api) {
var
fs = require('fs'),
path = require('path'),
files,
walk
;
// recursive sync walk
walk = function(dir) {
var
dir = dir || __dirname,
list = fs.readdirSync(dir),
files = []
;
list.forEach(function(file) {
var
filePath = path.join(dir, file),
stat = fs.statSync(filePath)
;
if(stat && stat.isDirectory() && file !== 'node_modules') {
files = files.concat(walk(filePath));
}
else {
files.push(filePath);
}
})
return files
}
files = walk();
api.versionsFrom('1.0');
api.addFiles(files, 'clent');
});

47
tasks/config/admin/templates/less-package.js

@ -0,0 +1,47 @@
var
where = 'client' // Adds files only to the client
;
Package.describe({
name : 'semantic:ui',
summary : 'Semantic UI - LESS Release of Semantic UI',
version : '{version}',
git : 'git://github.com/Semantic-Org/Semantic-UI-LESS.git',
});
Package.onUse(function(api) {
var
fs = require('fs'),
path = require('path'),
files,
walk
;
// recursive sync walk
walk = function(dir) {
var
dir = dir || __dirname,
list = fs.readdirSync(dir),
files = []
;
list.forEach(function(file) {
var
filePath = path.join(dir, file),
stat = fs.statSync(filePath)
;
if(stat && stat.isDirectory() && file !== 'node_modules') {
files = files.concat(walk(filePath));
}
else {
files.push(filePath);
}
})
return files
}
files = walk();
api.versionsFrom('1.0');
api.addFiles(files, 'clent');
});

7
tasks/docs/serve.js

@ -116,11 +116,10 @@ module.exports = function () {
isSiteTheme = (file.path.indexOf(source.site) !== -1);
isDefinition = (file.path.indexOf(source.definitions) !== -1);
if(isConfig) {
console.log('Change detected in theme config');
// impossible to tell which file was updated in theme.config, rebuild all
gulp.start('build');
console.info('Change detected in theme config, rebuild docs with `build-docs`');
// impossible to tell which file was updated in theme.config
return;
}
else if(isPackagedTheme) {
console.log('Change detected in packaged theme');

4
tasks/watch.js

@ -106,11 +106,11 @@ module.exports = function(callback) {
isSiteTheme = (file.path.indexOf(source.site) !== -1);
isDefinition = (file.path.indexOf(source.definitions) !== -1);
if(isConfig) {
console.log('Change detected in theme config');
console.info('Change detected in theme config');
// impossible to tell which file was updated in theme.config, rebuild all
gulp.start('build');
return;
}
else if(isPackagedTheme) {
console.log('Change detected in packaged theme');

Loading…
Cancel
Save