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

cartridge-cli

Package Overview
Dependencies
Maintainers
8
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cartridge-cli - npm Package Compare versions

Comparing version 0.0.2 to 0.0.3

bin/releaseService.js

74

bin/commands/new.js

@@ -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 @@ }

'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": {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc