New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

atm3-command-init

Package Overview
Dependencies
Maintainers
2
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

atm3-command-init - npm Package Compare versions

Comparing version

to
0.2.0

html-templates/fis-conf.js

255

index.js

@@ -11,136 +11,171 @@ var Promise = require('bluebird');

exports.name = 'init';
exports.usage = '<mobile|pc|conf>';
exports.desc = 'scaffold with specifed template mobile or pc or just update fis-conf.js file. default is mobile';
exports.usage = '<react|mobile|pc|conf>';
exports.desc = 'scaffold with specifed template react/mobile/pc or just update fis-conf.js file. default is react';
exports.register = function (commander) {
commander
.option('-u, --username <userName>', 'set username')
.option('-p, --projectname <projectName>', 'set projectname')
.action(function (template) {
var args = [].slice.call(arguments);
var options = args.pop();
commander
.option('-u, --username <userName>', 'set username')
.option('-p, --projectname <projectName>', 'set projectname')
.action(function (template) {
var args = [].slice.call(arguments);
var options = args.pop();
var settings = {
userName: options.username || '',
projectName: options.projectname || '',
template: args[0] || 'mobile'
};
var settings = {
userName: trim(options.username),
projectName: trim(options.projectname),
template: args[0] || 'mobile'
};
// 根据 fis-conf.js 确定 root 目录
Promise.try(function () {
if (!settings.root) {
var findup = require('findup');
// 根据 fis-conf.js 确定 root 目录
Promise.try(function () {
return findupAsync(settings);
}).then(function () {// prompt
return promptAsync(settings);
}).then(function () {
return settings.template == 'react' ? generateReactTemplateAsync(settings) : generateHtmlTemplateAsync(settings);
});
return new Promise(function (resolve, reject) {
var fup = findup(process.cwd(), 'fis-conf.js');
var dir = null;
});
};
fup.on('found', function (found) {
dir = found;
fup.stop();
});
function findupAsync(settings) {
if (!settings.root) {
var findup = require('findup');
fup.on('error', reject);
return new Promise(function (resolve, reject) {
var fup = findup(process.cwd(), 'fis-conf.js');
var dir = null;
fup.on('end', function () {
resolve(dir);
});
}).then(function (dir) {
settings.root = dir || process.cwd();
});
}
}).then(function () {// prompt
fis.log.info('Current Dir: %s', settings.root);
fup.on('found', function (found) {
dir = found;
fup.stop();
});
if (settings.userName && settings.projectName) {
return settings;
} else {
var schema = [];
var variables = {
username: '',
projectname: ''
};
fup.on('error', reject);
Object.keys(variables).forEach(function (key) {
schema.push({
name: key,
required: true,
'default': variables[key]
});
});
fup.on('end', function () {
resolve(dir);
});
}).then(function (dir) {
settings.root = dir || process.cwd();
});
} else {
return Promise.resolve(settings);
}
}
if (schema.length) {
var prompt = require('prompt');
prompt.start();
function promptAsync(settings) {
return new Promise(function (resolve, reject) {
fis.log.info('Current Dir: %s', settings.root);
return new Promise(function (resolve, reject) {
prompt.get(schema, function (error, result) {
if (error) {
return reject(error);
}
if (settings.userName && settings.projectName) {
return resolve(settings);
} else {
var schema = [];
var variables = {
username: '',
projectname: ''
};
settings.userName = result.username;
settings.projectName = result.projectname;
resolve(settings);
});
});
}
Object.keys(variables).forEach(function (key) {
schema.push({
name: key,
required: true,
'default': variables[key]
});
});
return settings;
}
}).then(function () {
fis.log.info("settings: ", settings);
if (!settings.userName || !settings.projectName) {
fis.log.error("userName and projectName is required!");
return process.exit(0);
}
var projectDir = settings.root + '/' + settings.projectName;
if (path.basename(settings.root) === settings.projectName) {
projectDir = settings.root;
}
if (!exists(projectDir)) {
mkdir(projectDir);
fis.log.info("mkdir %s [OK]", projectDir);
}
if (schema.length) {
var prompt = require('prompt');
prompt.start();
copyFiles(projectDir, settings.userName, settings.projectName, settings.template);
prompt.get(schema, function (error, result) {
if (error) {
return reject(error);
}
if (settings.template === 'mobile' || settings.template === 'pc') {
var dirs = ['design', 'font', 'img', 'slice'];
settings.userName = trim(result.username);
settings.projectName = trim(result.projectname);
resolve(settings);
});
} else {
return resolve(settings);
}
}
});
}
dirs.forEach(function (dir) {
if (!exists(projectDir + '/' + dir))
mkdir(projectDir + '/' + dir);
});
fis.log.info('mkdir empty dirs: ', dirs, " [OK]");
function generateHtmlTemplateAsync(settings) {
return new Promise(function (resolve, reject) {
var projectDir = prepareProjectDirHook(settings);
generateFisConf(settings, projectDir);
copyHtmlFiles(projectDir, settings.template);
fis.log.info('init ' + settings.template + ' project done!');
}
});
if (settings.template === 'mobile' || settings.template === 'pc') {
var dirs = ['design', 'font', 'img', 'slice'];
dirs.forEach(function (dir) {
if (!exists(projectDir + '/' + dir)) mkdir(projectDir + '/' + dir);
});
fis.log.info('mkdir empty dirs: ', dirs, " [OK]");
fis.log.info('init ' + settings.template + ' project done!');
}
});
}
});
};
function generateReactTemplateAsync(settings) {
return new Promise(function (resolve, reject) {
var projectDir = prepareProjectDirHook(settings);
generateFisConf(settings, projectDir);
fis.util.copy(__dirname + "/react-guide-template", projectDir, null, null, true);
});
}
function copyFiles(projectDir, username, projectName, template) {
var isMobile = template !== 'pc';
function copyHtmlFiles(projectDir, template) {
var isMobile = template !== 'pc';
var fisConf = fs.readFileSync(__dirname + '/templates/fis-conf.js', {encoding: 'utf8'});
fisConf = fisConf.replace('__userName__', username)
.replace('__projectName__', projectName)
.replace('__scale__', isMobile ? 0.5 : 1.0);
if (template !== 'mobile' && template !== 'pc') {
fis.log.info("just update fis-conf.js file!");
return false;
}
write(projectDir + "/fis-conf.js", fisConf, {encoding: 'utf8'});
fis.log.info("generate fis-conf.js OK");
if (isMobile) {
fis.util.copy(__dirname + "/html-templates/mobile", projectDir, null, null, true);
} else {
fis.util.copy(__dirname + "/html-templates/pc", projectDir, null, null, true);
}
fis.log.info("copy html, css, js files OK!");
}
if (template !== 'mobile' && template !== 'pc') {
fis.log.info("just update fis-conf.js file!");
return false;
}
function prepareProjectDirHook(settings) {
fis.log.info("settings: ", settings);
if (!settings.userName || !settings.projectName) {
fis.log.error("userName and projectName is required!");
return process.exit(0);
}
var projectDir = settings.root + '/' + settings.projectName;
if (path.basename(settings.root) === settings.projectName) {
projectDir = settings.root;
}
if (!exists(projectDir)) {
mkdir(projectDir);
fis.log.info("mkdir %s [OK]", projectDir);
}
return projectDir;
}
if (isMobile) {
fis.util.copy(__dirname + "/templates/mobile", projectDir, null, null, true);
} else {
fis.util.copy(__dirname + "/templates/pc", projectDir, null, null, true);
}
fis.log.info("copy html, css, js files OK!");
function generateFisConf(settings, projectDir) {
var isMobile = settings.template !== 'pc';
var confPath = settings.template == 'react' ? '/react-guide-template/fis-conf.js' : '/html-templates/fis-conf.js';
var fisConf = fs.readFileSync(__dirname + confPath, { encoding: 'utf8' });
fisConf = fisConf.replace(/__userName__/g, settings.userName)
.replace(/__projectName__/g, settings.projectName)
.replace(/__scale__/g, isMobile ? 0.5 : 1.0);
write(projectDir + "/fis-conf.js", fisConf, { encoding: 'utf8' });
fis.log.info("generate fis-conf.js OK");
}
function trim(str) {
return (str || '').replace(/^\s+|\s+$/g, "");
}
{
"name": "atm3-command-init",
"version": "0.1.6",
"version": "0.2.0",
"description": "scaffold for atm",

@@ -5,0 +5,0 @@ "main": "index.js",

Sorry, the diff of this file is not supported yet