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

package-menu-cli

Package Overview
Dependencies
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

package-menu-cli - npm Package Compare versions

Comparing version 1.0.5 to 1.1.0

11

cli.js

@@ -12,4 +12,5 @@ #!/usr/bin/env node

Options
--sort, -s Sort Scripts (default: false)
--version Show Package Menu Version
--help, -h Shows Help (this screen)
--sort, -s Sort Scripts (default: false)
--version, -V Show Package Menu Version

@@ -20,3 +21,5 @@ Examples

alias: {
s: 'sort'
s: 'sort',
h: 'help',
V: 'version'
}

@@ -28,5 +31,5 @@ });

packageMenu.build(cli.flags)
const menu = packageMenu.print('', cli.flags)
// foo(cli.input[0], cli.flags);
{
"name": "package-menu-cli",
"version": "1.0.5",
"version": "1.1.0",
"description": "Displays menu of scripts from folder package.json",

@@ -12,3 +12,4 @@ "main": "cli.js",

"test": "mocha",
"menu": "node ./cli.js"
"menu": "node ./cli.js",
"all": "npm run eslint && npm run test"
},

@@ -15,0 +16,0 @@ "keywords": [

const chalk = require('chalk');
const Table = require('cli-table2'); // INFO: https://www.npmjs.com/package/cli-table2
const fs = require('fs');
function buildMenu(opts = {}) {
const filename = process.env.PWD + '/package.json';
const pkgInfo = require(filename);
function buildMenu(pkgInfo = {}, opts = {}) {
if (!pkgInfo.hasOwnProperty('scripts')) {
return {err: true, messasge: 'package.json does not contain any scripts'};
}
// instantiate

@@ -15,3 +15,3 @@ let table = new Table({

let scripts = pkgInfo.scripts;
const scripts = pkgInfo.scripts;
const scriptNames = Object.keys(scripts);

@@ -26,26 +26,48 @@ if (opts.sort) {

});
return table;
}
function printMenu(filename = '', options = {}) {
const pkgInfo = getPackageInfo(filename);
console.log(chalk.cyan.bold(pkgInfo.name) + ': ' + chalk.white.bold(pkgInfo.version));
console.log('');
console.log(chalk.white.cyan(pkgInfo.name) + ': ' + chalk.white.bold(pkgInfo.version));
console.log('');
console.log(chalk.yellow(
`Example: Run any script using script name
$ npm run <name>
`
`
));
console.log(table.toString());
return scripts;
const table = buildMenu(pkgInfo, options);
return table.toString();
}
function getPackageInfo(filename = '') {
let packageMenu = {
build: (options) => {
return buildMenu(options);
if (filename.length === 0) {
filename = process.env.PWD + '/package.json';
}
if (!fs.existsSync(filename)) {
const err = {error: -43, msg:`Error: Unable to locate ${chalk.red.bold(filename)}`};
return err;
}
const pkgInfo = require(filename);
return pkgInfo;
}
let packageMenu = {
getPackageInfo: (filename) => {
return getPackageInfo(filename);
},
build: (pkgInfo, options) => {
return buildMenu(pkgInfo, options);
},
print: (filename = '', options = {}) => {
console.log(printMenu(filename, options));
}
}
module.exports = packageMenu;

@@ -1,8 +0,32 @@

var chai = require('chai');
var expect = chai.expect;
var chai = require('chai');
var expect = chai.expect;
var assert = chai.assert;
var packageMenu = require('../src/packageMenu.js');
describe('==> Package Name CLI', () => {
it('should pass', function () {
expect(true).to.be.true;
let pkgInfo;
let menuData;
it('should fail when unable to locate `package.json`', function () {
pkgInfo = packageMenu.getPackageInfo('badFilename');
expect(pkgInfo).to.include.keys('error');
});
it('should return package information for supplied filename', function () {
pkgInfo = {'scripts': {}};
expect(pkgInfo).to.include.keys('scripts');
});
it('should return table of scripts', function () {
menuData = packageMenu.build(packageMenu.getPackageInfo());
expect(menuData).to.be.instanceof(Array);
});
it('should properly sort result [uses --sort flag]', function () {
menuData = packageMenu.build(packageMenu.getPackageInfo(),{sort: true});
// console.log(menuData);
expect(menuData[0][0]).to.equal('all'); // first element from this project is `all`
});
});
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