aboutsummaryrefslogtreecommitdiff
path: root/semantic/tasks/admin/distributions
diff options
context:
space:
mode:
Diffstat (limited to 'semantic/tasks/admin/distributions')
-rw-r--r--semantic/tasks/admin/distributions/create.js208
-rw-r--r--semantic/tasks/admin/distributions/init.js168
-rw-r--r--semantic/tasks/admin/distributions/update.js177
3 files changed, 0 insertions, 553 deletions
diff --git a/semantic/tasks/admin/distributions/create.js b/semantic/tasks/admin/distributions/create.js
deleted file mode 100644
index 6fe6921..0000000
--- a/semantic/tasks/admin/distributions/create.js
+++ /dev/null
@@ -1,208 +0,0 @@
-/*******************************
- 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
- fs = require('fs'),
- path = require('path'),
- mergeStream = require('merge-stream'),
-
- // admin dependencies
- flatten = require('gulp-flatten'),
- jsonEditor = require('gulp-json-editor'),
- plumber = require('gulp-plumber'),
- rename = require('gulp-rename'),
- replace = require('gulp-replace'),
-
- // 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 : {
- files : '{files}',
- version : '{version}'
- }
- },
- task = {
- all : distribution + ' copying files',
- repo : distribution + ' create repo',
- meteor : distribution + ' create meteor package.js',
- package : distribution + ' create package.json'
- },
- gatherFiles,
- createList
- ;
-
- // get files for meteor
- gatherFiles = function(dir) {
- var
- dir = dir || path.resolve('.'),
- list = fs.readdirSync(dir),
- omitted = [
- '.git',
- 'node_modules',
- 'package.js',
- 'LICENSE',
- 'README.md',
- 'package.json',
- 'bower.json',
- '.gitignore'
- ],
- files = []
- ;
- list.forEach(function(file) {
- var
- isOmitted = (omitted.indexOf(file) > -1),
- filePath = path.join(dir, file),
- stat = fs.statSync(filePath)
- ;
- if(!isOmitted) {
- if(stat && stat.isDirectory()) {
- files = files.concat(gatherFiles(filePath));
- }
- else {
- files.push(filePath.replace(outputDirectory + path.sep, ''));
- }
- }
- });
- return files;
- };
-
- // spaces out list correctly
- createList = function(files) {
- var filenames = '';
- for(var file in files) {
- if(file == (files.length - 1) ) {
- filenames += "'" + files[file] + "'";
- }
- else {
- filenames += "'" + files[file] + "',\n ";
- }
- }
- return filenames;
- };
-
- tasks.push(function() {
- var
- files = gatherFiles(outputDirectory),
- filenames = createList(files)
- ;
- gulp.src(release.templates.meteor[distLowerCase])
- .pipe(plumber())
- .pipe(flatten())
- .pipe(replace(regExp.match.version, version))
- .pipe(replace(regExp.match.files, filenames))
- .pipe(rename(release.files.meteor))
- .pipe(gulp.dest(outputDirectory))
- ;
- });
-
- if(distribution == 'CSS') {
- tasks.push(function() {
- var
- themes,
- components,
- releases
- ;
- themes = gulp.src('dist/themes/default/**/*', { base: 'dist/' })
- .pipe(gulp.dest(outputDirectory))
- ;
- components = gulp.src('dist/components/*', { base: 'dist/' })
- .pipe(gulp.dest(outputDirectory))
- ;
- releases = gulp.src('dist/*', { base: 'dist/' })
- .pipe(gulp.dest(outputDirectory))
- ;
- return mergeStream(themes, components, releases);
- });
- }
- else if(distribution == 'LESS') {
- tasks.push(function() {
- var
- definitions,
- themeImport,
- themeConfig,
- siteTheme,
- themes
- ;
- definitions = gulp.src('src/definitions/**/*', { base: 'src/' })
- .pipe(gulp.dest(outputDirectory))
- ;
- themeImport = gulp.src('src/semantic.less', { base: 'src/' })
- .pipe(gulp.dest(outputDirectory))
- ;
- themeImport = gulp.src('src/theme.less', { base: 'src/' })
- .pipe(gulp.dest(outputDirectory))
- ;
- themeConfig = gulp.src('src/theme.config.example', { base: 'src/' })
- .pipe(gulp.dest(outputDirectory))
- ;
- siteTheme = gulp.src('src/_site/**/*', { base: 'src/' })
- .pipe(gulp.dest(outputDirectory))
- ;
- themes = gulp.src('src/themes/**/*', { base: 'src/' })
- .pipe(gulp.dest(outputDirectory))
- ;
- return mergeStream(definitions, themeImport, themeConfig, siteTheme, themes);
- });
- }
-
- // extend package.json
- tasks.push(function() {
- return gulp.src(packageFile)
- .pipe(plumber())
- .pipe(jsonEditor(function(package) {
- if(version) {
- package.version = version;
- }
- return package;
- }))
- .pipe(gulp.dest(outputDirectory))
- ;
- });
-
- })(distribution);
- }
-
- gulp.series(...tasks)(callback);
-}; \ No newline at end of file
diff --git a/semantic/tasks/admin/distributions/init.js b/semantic/tasks/admin/distributions/init.js
deleted file mode 100644
index 124e131..0000000
--- a/semantic/tasks/admin/distributions/init.js
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************
- 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'),
- 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 = '[email protected]:' + 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();
-
-
-};
diff --git a/semantic/tasks/admin/distributions/update.js b/semantic/tasks/admin/distributions/update.js
deleted file mode 100644
index bc3614b..0000000
--- a/semantic/tasks/admin/distributions/update.js
+++ /dev/null
@@ -1,177 +0,0 @@
-/*******************************
- 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'),
-
- // 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 distribution, to avoid issues
- stepRepo = function() {
-
- index = index + 1;
- if(index >= total) {
- callback();
- return;
- }
-
- var
- distribution = release.distributions[index],
- outputDirectory = path.resolve(path.join(release.outputRoot, distribution.toLowerCase() )),
- repoName = release.distRepoRoot + distribution,
-
- 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 },
- versionOptions = { args : 'rev-parse --verify HEAD', 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 changes to remote
- function pushFiles() {
- console.info('Pushing files for ' + distribution);
- git.push('origin', 'master', { args: '', cwd: outputDirectory }, function(error) {
- console.info('Push completed successfully');
- getSHA();
- });
- }
-
- // gets SHA of last commit
- function getSHA() {
- git.exec(versionOptions, function(error, version) {
- version = version.trim();
- createRelease(version);
- });
- }
-
- // create release on GitHub.com
- function createRelease(version) {
- if(version) {
- releaseOptions.target_commitish = version;
- }
- github.repos.createRelease(releaseOptions, function() {
- nextRepo();
- });
- }
-
- // Steps to next repository
- function nextRepo() {
- console.log('Sleeping for 1 second...');
- // avoid rate throttling
- global.clearTimeout(timer);
- timer = global.setTimeout(stepRepo, 100);
- }
-
-
- if(localRepoSetup) {
- setConfig();
- }
- else {
- console.error('Repository must be setup before running update distributions');
- }
-
- };
-
- stepRepo();
-
-};