Browse Source

Beginning refactoring of admin tasks

pull/1785/head
jlukic 10 years ago
parent
commit
068df994a2
7 changed files with 170 additions and 68 deletions
  1. 26
      tasks/admin/create-repos.js
  2. 44
      tasks/admin/register-repos.js
  3. 40
      tasks/admin/release-all.js
  4. 86
      tasks/admin/update-repos.js
  5. 4
      tasks/build.js
  6. 36
      tasks/config/admin/github.js
  7. 2
      tasks/config/project/release.js

26
tasks/admin/create-repos.js

@ -15,21 +15,29 @@
*/
var
gulp = require('gulp'),
// node dependencies
console = require('better-console'),
fs = require('fs'),
path = require('path'),
runSequence = require('run-sequence'),
// admin dependencies
concatFileNames = require('gulp-concat-filenames'),
flatten = require('gulp-flatten'),
git = require('gulp-git'),
githubAPI = require('github'),
runSequence = require('run-sequence'),
plumber = require('gulp-plumber'),
replace = require('gulp-replace'),
tap = require('gulp-tap'),
// admin files
release = require('./tasks/admin/release'),
// config
config = require('./config/user'),
github = require('../config/admin/github'),
release = require('../config/admin/release'),
// stores oauth info for GitHub API
oAuth = fs.existsSync('./tasks/admin/oauth.js')
? require('./tasks/admin/oauth')
: false,
github
// shorthand
output = config.paths.output
;

44
tasks/admin/register-repos.js

@ -1,11 +1,28 @@
gulp.task('register repos', false, function(callback) {
var
index = -1,
total = release.components.length,
process = require('child_process'),
stream,
stepRepo
;
/*******************************
Register PM
*******************************/
/*
Task to register component repos with Package Managers
* Registers component with bower
* Registers component with NPM
*/
var
// node dependencies
process = require('child_process'),
// config
release = require('../config/admin/release'),
total = release.components.length,
index = -1,
stream,
stepRepo
;
module.exports = function(callback) {
console.log('Registering repos with package managers');
// Do Git commands synchronously per component, to avoid issues
@ -27,18 +44,19 @@ gulp.task('register repos', false, function(callback) {
registerNPM = 'npm publish'
;
/* One time register
/* Register with Bower */
exec(registerBower, execSettings, function(err, stdout, stderr) {
stepRepo();
});
*/
/* Update npm
/* Register with NPM */
exec(registerNPM, execSettings, function(err, stdout, stderr) {
console.log(err, stdout, stderr);
stepRepo();
});
*/
};
stepRepo();
});
};

40
tasks/admin/release-all.js

@ -1,28 +1,26 @@
/* Release All */
gulp.task('release all', false, function() {
/*******************************
Release All
*******************************/
/*
This task update all SUI individual component repos with new versions of components
if(!oAuth) {
console.error('Must add node include tasks/admin/oauth.js with oauth token for GitHub');
return;
}
* Creates local files at ../components/ with each repo for release
* Syncs each component with GitHub
github = new githubAPI({
version : '3.0.0',
debug : true,
protocol : 'https',
timeout : 5000
});
*/
github.authenticate({
type: 'oauth',
token: oAuth.token
});
var
runSequence = require('run-sequence')
;
/* Release All */
module.exports = function() {
// gulp build
runSequence(
'build',
'create components',
'update component repos'
'build', // build Semantic
'create components', // create each component repo
'update component repos' // update component repos on github
);
});
};

86
tasks/admin/update-repos.js

@ -1,4 +1,41 @@
gulp.task('update component repos', false, function() {
/*******************************
Update Repos
*******************************/
/*
This task update all SUI individual component repos with new versions of components
* Creates new repo if doesnt exist (locally & GitHub)
* Adds remote it doesnt exists
* Commits changes
* Pulls latest changes from repo
* Merges changes if necessary
* Tag new releases if version changed in main repo
* Pushes changes to GitHub
*/
var
gulp = require('gulp'),
// node dependencies
fs = require('fs'),
git = require('gulp-git'),
githubAPI = require('github'),
requireDotFile = require('require-dot-file'),
// admin files
github = require('../config/admin/github.js'),
oAuth = require('../config/admin/oauth.js'),
release = require('../config/admin/release'),
package = requireDotFile('package.json'),
version = package.version
;
module.exports = function() {
var
index = -1,
total = release.components.length,
@ -20,33 +57,30 @@ gulp.task('update component repos', false, function() {
outputDirectory = release.outputRoot + component + '/',
capitalizedComponent = component.charAt(0).toUpperCase() + component.slice(1),
repoName = release.repoRoot + capitalizedComponent,
gitURL = 'https://github.com/' + release.org + '/' + repoName + '.git',
repoURL = 'https://github.com/' + release.org + '/' + repoName + '/',
gitOptions = { cwd: outputDirectory },
quietOptions = { args: '-q', cwd: outputDirectory },
isRepository = fs.existsSync(outputDirectory + '.git/'),
gitURL = 'https://github.com/' + release.org + '/' + repoName + '.git',
repoURL = 'https://github.com/' + release.org + '/' + repoName + '/',
componentPackage = fs.existsSync(outputDirectory + 'package.json' )
? require(outputDirectory + 'package.json')
: false,
commitArgs = (oAuth.name !== undefined && oAuth.email !== undefined)
? '--author "' + oAuth.name + ' <' + oAuth.email + '>"'
: '',
isNewVersion = (version && componentPackage.version != version),
mergeMessage = 'Merged from upstream',
commitMessage = (isNewVersion)
? 'Updated component to version ' + version
: 'Updated component release from Semantic-UI (Automatic)'
: 'Updated component release from Semantic-UI (Automatic)',
commitArgs = (oAuth.name !== undefined && oAuth.email !== undefined)
? '--author "' + oAuth.name + ' <' + oAuth.email + '>"'
: ''
;
console.log('Processing repository:' + outputDirectory);
if(isRepository) {
commitFiles();
}
else {
createRepo();
}
// standard path
function commitFiles() {
// commit files
@ -63,6 +97,7 @@ gulp.task('update component repos', false, function() {
})
;
}
function pullFiles() {
console.log('Pulling files');
git.pull('origin', 'master', { args: '', cwd: outputDirectory }, function(error) {
@ -75,6 +110,7 @@ gulp.task('update component repos', false, function() {
}
});
}
function mergeCommit() {
// commit files
console.log('Adding merge commit', commitArgs);
@ -85,21 +121,18 @@ gulp.task('update component repos', false, function() {
console.log('Nothing new to merge', error);
})
.on('finish', function(callback) {
if(1) {
tagFiles();
}
else {
pushFiles();
}
tagFiles();
})
;
}
function tagFiles() {
console.log('Tagging new version ', version);
git.tag(version, 'Updated version from semantic-ui (automatic)', function (err) {
pushFiles();
});
}
function pushFiles() {
console.log('Pushing files');
git.push('origin', 'master', { args: '', cwd: outputDirectory }, function(error) {
@ -127,6 +160,7 @@ gulp.task('update component repos', false, function() {
}
});
}
function initRepo() {
console.log('Initializing repository in ' + outputDirectory);
git.init(gitOptions, function(error) {
@ -137,10 +171,12 @@ gulp.task('update component repos', false, function() {
addRemote();
});
}
function addRemote() {
console.log('Adding remote origin as ' + gitURL);
git.addRemote('origin', gitURL, gitOptions, firstPushFiles);
}
function firstPushFiles() {
console.log('Pushing files');
git.push('origin', 'master', { args: '-u', cwd: outputDirectory }, function(error) {
@ -154,8 +190,16 @@ gulp.task('update component repos', false, function() {
}
});
}
if(isRepository) {
commitFiles();
}
else {
createRepo();
}
};
return stepRepo();
});
};

4
tasks/build.js

@ -24,10 +24,8 @@ var
replace = require('gulp-replace'),
uglify = require('gulp-uglify'),
// user config
// config
config = require('./config/user'),
// install config
tasks = require('./config/project/tasks'),
install = require('./config/project/install'),

36
tasks/config/admin/github.js

@ -0,0 +1,36 @@
/*******************************
GitHub Login
*******************************/
/*
Logs into GitHub using OAuth
*/
var
fs = require('fs'),
githubAPI = require('github'),
// stores oauth info for GitHub API
oAuth = fs.existsSync('./oauth.js')
? require('./oauth')
: false,
github
;
if(!oAuth) {
console.error('Must add oauth token for GitHub in tasks/admin/oauth.js');
return;
}
github = new githubAPI({
version : '3.0.0',
debug : true,
protocol : 'https',
timeout : 5000
});
github.authenticate({
type: 'oauth',
token: oAuth.token
});
module.exports = github;

2
tasks/config/project/release.js

@ -1,5 +1,5 @@
/*******************************
Set-up
Release Config
*******************************/
var

Loading…
Cancel
Save