Last active
August 29, 2015 14:11
-
-
Save subhog/f50c2055c2733fdf6343 to your computer and use it in GitHub Desktop.
impact-dev
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var Term = { | |
BLACK: '\033[30m', | |
RED: '\033[31m', | |
GREEN: '\033[32m', | |
YELLOW: '\033[33m', | |
BLUE: '\033[34m', | |
MAGENTA: '\033[35m', | |
CYAN: '\033[36m', | |
WHITE: '\033[37m', | |
GRAY: '\033[38m', | |
DEFAULT: '\033[39m', | |
NONE: '\033[0m', | |
}; | |
var Exec = require('child_process').exec; | |
var Spawn = require('child_process').spawn; | |
var Fs = require('fs'); | |
var Path = require('path'); | |
var display = function(error, stdout, stderr) { | |
if(error) console.log(Term.RED, error, Term.NONE); | |
if(stdout) console.log(Term.WHITE, stdout.toString(), Term.NONE); | |
if(stderr) console.log(Term.MAGENTA, stderr.toString(), Term.NONE); | |
}; | |
var appExists = function() { | |
return Fs.existsSync(Path.join(process.cwd(), 'app')); | |
}; | |
var packagesExist = function() { | |
return Fs.existsSync(Path.join(process.cwd(), 'packages')); | |
}; | |
var packageExists = function(name) { | |
return Fs.existsSync(Path.join(process.cwd(), 'app', 'packages', name)); | |
}; | |
//================================================================================ | |
var createApp = function(done) { | |
if(appExists()) { | |
console.log(Term.GREEN, "Application folder already exists", Term.NONE); | |
return done(); | |
} | |
console.log(Term.CYAN, "Cloning application template", Term.NONE); | |
Exec('git clone https://github.com/anticoders/impact-seed', function(error, stdout, stderr) { | |
display(error, stdout, stderr); | |
Fs.renameSync(Path.join(process.cwd(), 'impact-seed'), Path.join(process.cwd(), 'app')); | |
Exec('rm -r .git', { | |
cwd: Path.join(process.cwd(), 'app'), | |
}, function(error, stdout, stderr) { | |
display(error, stdout, stderr); | |
done(); | |
}); | |
}); | |
}; | |
//================================================================================ | |
var createPackages = function(done) { | |
if(packagesExist()) { | |
console.log(Term.GREEN, "Package folder already exists", Term.NONE); | |
return done(); | |
} | |
console.log(Term.CYAN, "Creating packages folder", Term.NONE); | |
Fs.mkdirSync(Path.join(process.cwd(), 'packages')); | |
done(); | |
}; | |
//================================================================================ | |
var createPackage = function(repo, done) { | |
var name = repo.split('/').reverse()[0]; | |
if(packageExists(name)) { | |
console.log(Term.GREEN, "Package " + name + " already exists", Term.NONE); | |
return done(); | |
} | |
console.log(Term.CYAN, "Cloning", name, Term.NONE); | |
Exec('git clone ' + repo, { | |
cwd: Path.join(process.cwd(), 'packages'), | |
}, function(error, stdout, stderr) { | |
display(error, stdout, stderr); | |
Fs.symlink( | |
Path.join(process.cwd(), 'packages', name), | |
Path.join(process.cwd(), 'app', 'packages', name), | |
function(error) { | |
display(error); | |
done(); | |
} | |
); | |
}); | |
}; | |
var packages = [ | |
'https://github.com/anticoders/meteor-entry', | |
'https://github.com/anticoders/impact', | |
'https://github.com/anticoders/impact-theme-basic', | |
'https://github.com/anticoders/impact-theme-layouts', | |
'https://github.com/anticoders/impact-theme-semantic', | |
'https://github.com/anticoders/impact-module-blog', | |
'https://github.com/anticoders/impact-module-newsletter', | |
'https://github.com/anticoders/impact-widget-cover', | |
]; | |
(function() { | |
createApp(function() { | |
createPackages(function() { | |
var idx = 0; | |
var iterate = function() { | |
if(idx >= packages.length) return done(); | |
idx++; | |
createPackage(packages[idx-1], iterate); | |
}; | |
var done = function() { | |
console.log("========================================"); | |
console.log("All done!"); | |
console.log(""); | |
}; | |
iterate(); | |
}); | |
}); | |
})(); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment