cartridge-cli
Advanced tools
Comparing version 0.0.2 to 0.0.3
@@ -10,2 +10,3 @@ "use strict"; | ||
var inArray = require('in-array'); | ||
var releaseService = require('../releaseService'); | ||
@@ -21,2 +22,4 @@ var utils = require('../utils'); | ||
var TEMPLATE_FILES_PATH = path.join(process.cwd(), '_cartridge'); | ||
module.exports = function(appDir) { | ||
@@ -41,3 +44,3 @@ | ||
_log.warn(chalk.red('Warning: The directory you are currently in is not empty!')); | ||
_log.warn(chalk.red('Going through the setup will perform a clean slate installation.')); | ||
_log.warn(chalk.red('Going through the setup will perform a clean cartridge installation.')); | ||
_log.warn(chalk.red('This will overwrite any user changes')); | ||
@@ -87,5 +90,5 @@ _log.warn(''); | ||
return { | ||
projectNameFileName: _promptAnswers.projectName.toLowerCase().replace(/ /g,"-"), | ||
projectNameFileName: _promptAnswers.projectName.toLowerCase().replace(/ /g,"-"), | ||
projectGeneratedDate: [date.getDate(), date.getMonth() + 1, date.getFullYear()].join('/'), | ||
slateCurrentVersion: pkg.version | ||
currentVersion: pkg.version | ||
} | ||
@@ -100,7 +103,11 @@ } | ||
_log.info(''); | ||
_log.info('Copying over files...'); | ||
_log.info('Inserting the cartridge...'); | ||
fs.copy(appDir, process.cwd(), { | ||
filter: fileCopyFilter | ||
}, fileCopyComplete) | ||
releaseService | ||
.downloadLatestRelease(_log) | ||
.then(function() { | ||
fs.copy(appDir, process.cwd(), { | ||
filter: fileCopyFilter | ||
}, fileCopyComplete) | ||
}) | ||
@@ -155,3 +162,3 @@ } else { | ||
_log.debug(''); | ||
_log.info('Templating files...'); | ||
_log.info('Booting up files...'); | ||
@@ -172,8 +179,29 @@ var templateData = extend({}, _promptAnswers, getTemplateData()) | ||
function getTemplateFileList() { | ||
var fileList = []; | ||
var fileList = []; | ||
var destPath = process.cwd(); | ||
fileList.push(path.join('_config', 'creds.json')); | ||
fileList.push('package.json') | ||
fileList.push('.slaterc'); | ||
// Creds file | ||
fileList.push({ | ||
src: path.join(TEMPLATE_FILES_PATH, 'creds.tpl'), | ||
dest: path.join(destPath, '_config', 'creds.json') | ||
}); | ||
// Project package file | ||
fileList.push({ | ||
src: path.join(TEMPLATE_FILES_PATH, 'package.tpl'), | ||
dest: path.join(destPath, 'package.json') | ||
}); | ||
// Project readme | ||
fileList.push({ | ||
src: path.join(TEMPLATE_FILES_PATH, 'readme.tpl'), | ||
dest: path.join(destPath, 'readme.md') | ||
}); | ||
// Cartridge config | ||
fileList.push({ | ||
src: path.join(TEMPLATE_FILES_PATH, 'rc.tpl'), | ||
dest: path.join(destPath, '.cartridgerc') | ||
}); | ||
return fileList; | ||
@@ -187,13 +215,29 @@ } | ||
function installNpmPackages() { | ||
npmInstallPackage(_promptAnswers.slateModules, { saveDev: true}, function(err) { | ||
npmInstallPackage(_promptAnswers.cartridgeModules, { saveDev: true}, function(err) { | ||
if (err) throw err; | ||
finishSetup(); | ||
postInstallCleanUp(); | ||
}) | ||
} | ||
function postInstallCleanUp() { | ||
_log.debug('Emptying templates file directory: ' + TEMPLATE_FILES_PATH); | ||
fs.emptyDir(TEMPLATE_FILES_PATH, function (err) { | ||
if (err) console.error(err) | ||
_log.debug('Deleting templates file directory: ' + TEMPLATE_FILES_PATH); | ||
fs.rmdir(TEMPLATE_FILES_PATH, function(err){ | ||
if(err) console.error(err); | ||
finishSetup(); | ||
}) | ||
}) | ||
} | ||
function finishSetup() { | ||
_log.info(''); | ||
_log.info(chalk.green('Setup complete!')); | ||
_log.info('Slate project ' + chalk.yellow(_promptAnswers.projectName) + ' has been installed!'); | ||
_log.info('Cartridge project ' + chalk.yellow(_promptAnswers.projectName) + ' has been installed!'); | ||
_log.info(''); | ||
@@ -200,0 +244,0 @@ _log.info('Final steps:'); |
module.exports = [{ | ||
name: "titlecase", | ||
name: "cartridge-sass", | ||
checked: true | ||
}, { | ||
name: "save", | ||
checked: true | ||
}, { | ||
name: "express" | ||
} | ||
] |
@@ -31,8 +31,7 @@ "use strict"; | ||
function templateFile(filePath) { | ||
var filePath = path.join(_config.basePath, filePath); | ||
function templateFile(filePaths) { | ||
var compiled; | ||
var output; | ||
fs.readFile(filePath, 'utf8', function(err, fileContents) { | ||
fs.readFile(filePaths.src, 'utf8', function(err, fileContents) { | ||
if (err) return console.error(err) | ||
@@ -43,6 +42,6 @@ | ||
fs.writeFile(filePath, output, 'utf8', function(err) { | ||
fs.writeFile(filePaths.dest, output, 'utf8', function(err) { | ||
if (err) return console.error(err) | ||
_config.onEachFile(filePath); | ||
_config.onEachFile(filePaths.dest); | ||
@@ -60,2 +59,2 @@ if(_fileNumber === _config.files.length) { | ||
} | ||
} |
@@ -5,3 +5,5 @@ "use strict"; | ||
var path = require('path'); | ||
var appDir = path.resolve(__dirname, '..', 'app'); | ||
var os = require('os'); | ||
// var appDir = path.resolve(__dirname, '..', 'app'); | ||
var appDir = path.resolve(os.tmpDir(), 'cartridge-0.3.2-alpha'); | ||
@@ -8,0 +10,0 @@ var newCommand = require('./commands/new')(appDir); |
@@ -26,3 +26,3 @@ 'use strict'; | ||
_promptOptions.push(getProjectDescriptionPromptOptions()); | ||
_promptOptions.push(getSlateModulesPromptOptions()) | ||
_promptOptions.push(getCartridgeModulesPromptOptions()) | ||
_promptOptions.push(getUserConfirmCopyPromptOptions()) | ||
@@ -33,6 +33,6 @@ | ||
function getSlateModulesPromptOptions() { | ||
function getCartridgeModulesPromptOptions() { | ||
return { | ||
type: 'checkbox', | ||
name: 'slateModules', | ||
name: 'cartridgeModules', | ||
message: 'What modules would you like included?', | ||
@@ -87,3 +87,3 @@ choices: DEFAULT_PLUGIN_OPTIONS | ||
name: 'isOkToCopyFiles', | ||
message: 'Read to start setup! Press enter to confirm', | ||
message: 'Ready to start setup! Press enter to confirm', | ||
default: true | ||
@@ -90,0 +90,0 @@ } |
88
index.js
'use strict'; | ||
var fs = require('fs-extra'); | ||
var del = require('del'); | ||
var path = require('path'); | ||
var ncp = require('ncp').ncp; | ||
var chalk = require('chalk'); | ||
var CONFIG_FILE = '/.cartridgerc'; | ||
var MATCH_REGEX = /(\[\/\/\]: <> \(Modules start\)\s)([^[]*)(\[\/\/\]: <> \(Modules end\)\s)/g; | ||
var fs = require('fs-extra'); | ||
var del = require('del'); | ||
var path = require('path'); | ||
var ncp = require('ncp').ncp; | ||
var chalk = require('chalk'); | ||
var template = require('lodash/template'); | ||
var paths = { | ||
project: path.resolve('../../'), | ||
config: path.resolve('../../_config') | ||
project: path.resolve('../../'), | ||
config: path.resolve('../../', '_config'), | ||
readme: path.resolve('../../', 'readme.md'), | ||
cartridge: path.resolve('../../_cartridge') | ||
}; | ||
var slateCliApi = {}; | ||
var cartridgeApi = {}; | ||
// Checks if the project has been set up with slate | ||
function hasSlate() { | ||
try { | ||
fs.accessSync(paths.project + '/.slaterc', fs.R_OK | fs.W_OK); | ||
fs.accessSync(paths.project + CONFIG_FILE, fs.R_OK | fs.W_OK); | ||
} catch(err) { | ||
@@ -27,2 +34,28 @@ return false; | ||
function insertModulesInToReadme(readmeContents, moduleContent) { | ||
return readmeContents.replace(MATCH_REGEX, moduleContent); | ||
} | ||
function updateReadme(moduleContent) { | ||
fs.readFile(paths.readme, 'utf8', function(err, readmeContents) { | ||
if (err) return console.error(err); | ||
fs.writeFile(paths.readme, insertModulesInToReadme(readmeContents, moduleContent), 'utf8', function(err) { | ||
if (err) return console.error(err); | ||
console.log('Readme updated'); | ||
}); | ||
}); | ||
} | ||
function updateReadmeModules(data) { | ||
var compiledTemplate; | ||
fs.readFile(path.join(paths.cartridge, 'modules.tpl'), 'utf8', function(err, moduleTemplate) { | ||
if (err) return console.error(err); | ||
compiledTemplate = template(moduleTemplate); | ||
updateReadme(compiledTemplate(data)); | ||
}); | ||
} | ||
function modifyJsonFile(path, transform, callback) { | ||
@@ -32,3 +65,5 @@ fs.readJson(path, function (err, fileContents) { | ||
fileContents = transform(fileContents); | ||
fs.writeJson(path, fileContents, callback); | ||
fs.writeJson(path, fileContents, function(err) { | ||
callback(err, fileContents); | ||
}); | ||
} else { | ||
@@ -40,7 +75,12 @@ callback(err); | ||
var modulePrototype = {}; | ||
cartridgeApi.ensureCartridgeExists = function ensureCartridgeExists() { | ||
if(!hasSlate()) { | ||
console.error(chalk.red('Slate is not set up in this directory. Please set it up first before installing this module')); | ||
process.exit(1); | ||
} | ||
}; | ||
// Adds the specified module to the .slaterc file | ||
slateCliApi.addToSlaterc = function addToSlaterc(module, callback) { | ||
modifyJsonFile(paths.project + '/.slaterc', function addModule(data) { | ||
cartridgeApi.addToRc = function addToRc(module, callback) { | ||
modifyJsonFile(paths.project + CONFIG_FILE, function addModule(data) { | ||
if(!data.hasOwnProperty('modules')) { | ||
@@ -53,19 +93,15 @@ data.modules = []; | ||
return data; | ||
}, callback); | ||
}, function(err, jsonContent) { | ||
updateReadmeModules(jsonContent); | ||
callback(err); | ||
}); | ||
}; | ||
// Removes the specified module from the .slaterc file | ||
slateCliApi.removeFromSlaterc = function removeFromSlaterc(module, callback) { | ||
cartridgeApi.removeFromRc = function removeFromRc(module, callback) { | ||
// TODO: implement | ||
}; | ||
slateCliApi.ensureSlateExists = function ensureSlateExists() { | ||
if(!hasSlate()) { | ||
console.error(chalk.red('Slate is not set up in this directory. Please set it up first before installing this module')); | ||
process.exit(1); | ||
} | ||
}; | ||
// Modify the project configuration (project.json) with a transform function | ||
slateCliApi.modifyProjectConfig = function modifyProjectConfig(transform, callback) { | ||
cartridgeApi.modifyProjectConfig = function modifyProjectConfig(transform, callback) { | ||
modifyJsonFile(paths.config + '/project.json', transform, callback); | ||
@@ -75,3 +111,3 @@ }; | ||
// Add configuration files to the project _config directory for this module | ||
slateCliApi.addModuleConfig = function addModuleConfig(configPath, callback) { | ||
cartridgeApi.addModuleConfig = function addModuleConfig(configPath, callback) { | ||
ncp(configPath, paths.config, callback); | ||
@@ -81,6 +117,6 @@ }; | ||
// Remove configuration files from the project _config directory for this module | ||
slateCliApi.removeModuleConfig = function removeModuleConfig() { | ||
cartridgeApi.removeModuleConfig = function removeModuleConfig() { | ||
// TODO: implement | ||
}; | ||
module.exports = slateCliApi; | ||
module.exports = cartridgeApi; |
{ | ||
"name": "cartridge-cli", | ||
"version": "0.0.2", | ||
"version": "0.0.3", | ||
"description": "Start with a clean slate and get yourself going with a ready made basic website setup", | ||
@@ -31,3 +31,5 @@ "license": "ISC", | ||
"npm-install-package": "^1.0.2", | ||
"titleize": "^1.0.0" | ||
"request": "^2.69.0", | ||
"titleize": "^1.0.0", | ||
"unzip": "^0.1.11" | ||
}, | ||
@@ -34,0 +36,0 @@ "devDependencies": { |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
47520
1039
1
16
30
+ Addedrequest@^2.69.0
+ Addedunzip@^0.1.11
+ Addedajv@6.12.6(transitive)
+ Addedasn1@0.2.6(transitive)
+ Addedassert-plus@1.0.0(transitive)
+ Addedasynckit@0.4.0(transitive)
+ Addedaws-sign2@0.7.0(transitive)
+ Addedaws4@1.13.2(transitive)
+ Addedbcrypt-pbkdf@1.0.2(transitive)
+ Addedbinary@0.3.0(transitive)
+ Addedbuffers@0.1.1(transitive)
+ Addedcaseless@0.12.0(transitive)
+ Addedchainsaw@0.1.0(transitive)
+ Addedcombined-stream@1.0.8(transitive)
+ Addedcore-util-is@1.0.21.0.3(transitive)
+ Addeddashdash@1.14.1(transitive)
+ Addeddelayed-stream@1.0.0(transitive)
+ Addedecc-jsbn@0.1.2(transitive)
+ Addedextsprintf@1.3.0(transitive)
+ Addedfast-deep-equal@3.1.3(transitive)
+ Addedfast-json-stable-stringify@2.1.0(transitive)
+ Addedforever-agent@0.6.1(transitive)
+ Addedform-data@2.3.3(transitive)
+ Addedfstream@0.1.31(transitive)
+ Addedgetpass@0.1.7(transitive)
+ Addedgraceful-fs@3.0.12(transitive)
+ Addedhar-schema@2.0.0(transitive)
+ Addedhar-validator@5.1.5(transitive)
+ Addedhttp-signature@1.2.0(transitive)
+ Addedis-typedarray@1.0.0(transitive)
+ Addedisarray@0.0.1(transitive)
+ Addedisstream@0.1.2(transitive)
+ Addedjsbn@0.1.1(transitive)
+ Addedjson-schema@0.4.0(transitive)
+ Addedjson-schema-traverse@0.4.1(transitive)
+ Addedjson-stringify-safe@5.0.1(transitive)
+ Addedjsprim@1.4.2(transitive)
+ Addedmatch-stream@0.0.2(transitive)
+ Addedmime-db@1.52.0(transitive)
+ Addedmime-types@2.1.35(transitive)
+ Addedminimist@1.2.8(transitive)
+ Addedmkdirp@0.5.6(transitive)
+ Addednatives@1.1.6(transitive)
+ Addedoauth-sign@0.9.0(transitive)
+ Addedover@0.0.5(transitive)
+ Addedperformance-now@2.1.0(transitive)
+ Addedpsl@1.15.0(transitive)
+ Addedpullstream@0.4.1(transitive)
+ Addedpunycode@2.3.1(transitive)
+ Addedqs@6.5.3(transitive)
+ Addedreadable-stream@1.0.34(transitive)
+ Addedrequest@2.88.2(transitive)
+ Addedsafe-buffer@5.2.1(transitive)
+ Addedsafer-buffer@2.1.2(transitive)
+ Addedsetimmediate@1.0.5(transitive)
+ Addedslice-stream@1.0.0(transitive)
+ Addedsshpk@1.18.0(transitive)
+ Addedstring_decoder@0.10.31(transitive)
+ Addedtough-cookie@2.5.0(transitive)
+ Addedtraverse@0.3.9(transitive)
+ Addedtunnel-agent@0.6.0(transitive)
+ Addedtweetnacl@0.14.5(transitive)
+ Addedunzip@0.1.11(transitive)
+ Addeduri-js@4.4.1(transitive)
+ Addeduuid@3.4.0(transitive)
+ Addedverror@1.10.0(transitive)