#!/usr/bin/env node var fs = require('fs'); var async = require('async'); var path = require('path'); var controller = require('../lib/controller'); var ProjectManager = require('../lib/aics/project'); var PackageManager = require('../lib/aics/package'); var Account = require('../lib/aics/account'); var commander = require('commander'); var argv = require('minimist')(process.argv.slice(2)); if (!process.env.AICS_HOST) { process.env.AICS_HOST = 'http://storage.fami2u.com'; } process.env.AICS_HOST = 'http://localhost:8080'; var pkg = require('../package.json'); process.title = 'aics'; commander.version(pkg.version) .description(pkg.description) // const updateNotifier = require('update-notifier'); // updateNotifier({pkg}).notify(); // commander.on('--help', function() { // console.log(' Basic Examples:'); // console.log(''); // console.log(''); // console.log(' Deployment project:'); // console.log(''); // console.log(' $ aics deploy appName'); // console.log(''); // console.log(' Command help:'); // console.log(''); // console.log(' $ aics deploy -h'); // console.log(''); // }); // 部署到aics commander.command('deploy ') .option('-m, --mobile-settings ', 'Set mobile-settings from json file') .option('-s, --server-only', 'server only') .option('-e, --env ', 'Set environment variables from json file') .option('-d, --debug', 'debug mode') .description('部署当前项目到 *.fami2x.com') .action(function(argument, privateKey, options) { var pwd = path.resolve('.'); var actionsRegistry = new controller(pwd, options); if (actionsRegistry['deploy']) { actionsRegistry['deploy'](argument, privateKey); } }).on('--help', function() { console.log(' Examples:'); console.log(); console.log(' $ aics deploy appName # Deployment to http://appName.aics.cn '); console.log(); console.log(' $ aics deploy appName --env env.json'); console.log(); }); // 配置服务器运行环境 commander.command('setup') .description('配置私有服务器运行环境(参见:http://aics.fami2u.com/#setup)') .action(function(options) { var pwd = path.resolve('.'); var actionsRegistry = new controller(pwd, options); if (actionsRegistry['setup']) { actionsRegistry['setup'](); } }).on('--help', function() { console.log(' Examples:'); console.log(); console.log(' $ aics setup # configuration your server'); console.log(); }); // 部署到私有的服务器上 commander.command('push') .option('-m, --mobile-settings ', 'Set mobile-settings from json file') .option('-s, --server-only', 'server only') .option('-d, --debug', 'debug mode') .option('-b, --verbose', 'verbose mode') .description('部署当前项目到私有服务器') .action(function(options) { var pwd = path.resolve('.'); // console.log(options); var actionsRegistry = new controller(pwd, options); if (actionsRegistry['push']) { actionsRegistry['push'](); } }).on('--help', function() { console.log(' Examples:'); console.log(); console.log(' $ aics push # config package.js '); console.log(); console.log(' $ aics push'); console.log(); }); // logs commander.command('logs') .option('-l, --lines ', 'output the last N lines, instead of the last 50 by default') .description('打印服务器日志') .action(function(options) { var pwd = path.resolve('.'); // console.log(options); var actionsRegistry = new controller(pwd, options); if (actionsRegistry['logs']) { actionsRegistry['logs'](); } }).on('--help', function() { console.log(' Examples:'); console.log(); console.log(' $ aics logs '); console.log(); console.log(' $ aics logs -t 100'); console.log(); }); // logs commander.command('mongo') .description('连接远程mongodb数据库') .action(function(options) { var pwd = path.resolve('.'); // console.log(options); var actionsRegistry = new controller(pwd, options); if (actionsRegistry['mongo']) { actionsRegistry['mongo'](); } }).on('--help', function() { console.log(' Examples:'); console.log(); console.log(' $ aics mongo'); console.log(); }); //add user commander .command('adduser') .description('登录aics cli') .action(function(env, options) { Account.adduser(); }).on('--help', function() { console.log(' Examples:'); console.log(); console.log(' $ aics adduser # 登录aics cli'); console.log(); }); commander .command('register') .description('创建aics账户') .action(function(env, options) { Account.createUser(); }) .on('--help', function() { console.log("Examples:") console.log(); console.log(" $ aics createuser #create user account") console.log() }) //log logind user info commander .command('info') .description('显示 aics cli 登录用户信息') .action(function(env, options) { var user = Account.get(); console.log(user.username); }).on('--help', function() { console.log(' Examples:'); console.log(); console.log(' $ aics whoami # 显示当前登录用户信息'); console.log(); }); // generate aics codedepot conf or aics project conf commander .command('init') .description('生成aics配置文件') .option('-p, --project ', 'generate aics project conf') .option('-e, --example ', 'generate project from example project conf') .action(function(options) { if (options.project) { ProjectManager.initProject(process.argv); return; } if (options.example) { ProjectManager.initWithSample(options.example); return; } PackageManager.init(process.argv); }).on('--help', function() { console.log(' Examples:'); console.log(); console.log(' $ aics init -p [name] # 生成一个 名为 name 的 project 项目 '); console.log(' $ aics init -e [name] # 根据 name 生成一个项目'); console.log(' $ aics init [name] # 生成一个 名为 name 代码包项目 '); console.log(); }); commander .command('add [name]') .description('添加 aics 代码包 代码包地址: http://codedepot.fami2u.com/') .action(function(env, options) { ProjectManager.add(env) }).on('--help', function() { console.log(' Examples:'); console.log(); console.log(' # aics add fami:readme # 添加代码包到project'); console.log(); }); commander .command('update') .description('更新项目依赖') .action(function() { console.log(argv._) if(argv._.length>1){ ProjectManager.update(argv._.pop()); }else{ ProjectManager.updateAll(); } }).on('--help', function() { console.log(' Examples:'); console.log(); console.log(' $ aics update # 更新项目依赖的代码包的版本'); console.log(' $ aics update [name] # 更新名为 [name] 的代码包依赖的代码包的版本'); console.log(); }); commander .command('publish') .option('-p, --project ', '发布解决方案(项目)') .description('发布aics项目或组件') .action(function(options) { if (options.project) { ProjectManager.publish(); return; } PackageManager.publish(); }).on('--help', function() { console.log(' Examples:'); console.log(); console.log(' $ aics publish -p [name] # 发布名为 [name] 的 aics 项目'); console.log(' $ aics publish [name] # 发布名为 [name] 的 aics 代码包'); console.log(); }); // commander // .command('remove [packagename]') // .description('删除项目中已经添加的代码包') // .action(function(env, options) { // Account.adduser(); // }).on('--help', function() { // console.log(' 说明:'); // console.log(); // console.log(' 在 *.fami2u.com 注册过的账号可直接登录'); // console.log(); // }); commander .command('addfile') .option('-f, --file ', '添加文件到组件') .option('-t, --target ', '添加到的组件名称') .description('添加文件到组件') .action(function(options) { PackageManager.addfile(options.target, options.file); }).on('--help', function() { console.log(' Examples:'); console.log(); console.log(' # aics addfile -f README.md -t depot # 添加文件README.md 到 depot 组件包'); console.log(); }); commander.parse(process.argv);