#!/usr/bin/env node var version = "0.2.14"; var targz = require('tar.gz'); var toolset = require('toolset'); var sh = require("shelljs"); var program = require('commander'); var prompt = require('prompt'); var lingo = require('lingo'); var colors = require('colors'); var path = require('path'); var pv = require('./bin/pagevamp'); pv.directory = sh.pwd(); // Current working directory pv.version = version; pv.init(); colors.setTheme({ silly: 'rainbow', input: 'grey', verbose: 'cyan', prompt: 'grey', info: 'green', data: 'grey', help: 'cyan', warn: 'yellow', debug: 'blue', error: 'red' }); program.version(version); program.command('stash [name]').description('Save the current directory as a template').action(function(name){ if (!name) { console.log( "Error: Wrong or missing argument.\n".error, "Use:\n".data, "pagevamp stash ".warn+"[name]\n".info, "where ".data+"name".info+" is the name of your new template.".verbose ); return false; } pv.stash(name); }); program.command('create [type]').description('Create a new project').action(function(type){ if (!type) { console.log( "Error: Wrong or missing argument.\n".error, "Use:\n".data, "pagevamp create ".warn+"[type]\n".info, "where ".data+"type".info+" can be ".data+"widget".verbose+", ".data+"theme or any of the custom project type you have saved..".verbose ); return false; } var projectPrompt = function(link) { prompt.start() prompt.message = ""; prompt.delimiter = ""; var prompts = { properties: { name: { pattern: /^[a-zA-Z0-9\s\.\-]+$/, message: 'Name must be only numbers, letters, points, spaces, or dashes', description: "Project name?", required: true } } }; prompt.get(prompts, function (err, result) { if (result && result.name) { pv.createProject(type, result.name, link); } else { console.log("Canceled".error); } }); } // Check if we are already in a project directory pv.getProjectData(function(data) { if (data === false) { projectPrompt(); } else { if (data.type == 'theme') { if (type == 'theme') { console.log("You can't create a theme inside another theme's directory.".error); } else { // Component inside a theme: allowed // Link the project to the theme's ID projectPrompt(data.id); } } else { console.log("You can't create a component inside another component's directory.".error); } } }, false, true); }); program.command('logout').action(function(){ pv.logout(function() { console.log("You have been logged out.".error); }); }); program.command('login').action(function(){ pv.login(function() { console.log("You are now logged in.".data); }); }); program.command('publish [versionType]').action(function(versionType) { pv.publish(versionType, function() {}); }); program.command('*').action(function(env){ console.log('Enter a Valid command'); }); program.parse(process.argv);