3.0.0 • Published 3 years ago

msnode-cmd v3.0.0

Weekly downloads
-
License
DBAD
Repository
github
Last release
3 years ago

msnode-cmd

Node.js commandline/terminal interface.

Simple commandline or terminal interface to allow you to run cli or bash style commands as if you were in the terminal.

Run commands asynchronously, and if needed can get the output as a string.

NPM Stats

npm info :
NPM
See npm trends and stats for node-cmd
node-cmd npm version supported node version for node-cmd total npm downloads for node-cmd monthly npm downloads for node-cmd npm licence for node-cmd

RIAEvangelist

GitHub info :
node-cmd GitHub Release GitHub license node-cmd license open issues for node-cmd on GitHub

Package details websites :

This work is licenced via the DBAD Public Licence.

Methods

methodargumentsfunctionality
runcommandruns a command asynchronously
getcommand,callbackruns a command asynchronously, when the command is complete all of the stdout will be passed to the callback

Examples

    var cmd=require('node-cmd');

    cmd.get(
        'pwd',
        function(err, data, stderr){
            console.log('the current working dir is : ',data)
        }
    );

    cmd.run('touch example.created.file');

    cmd.get(
        'ls',
        function(err, data, stderr){
            console.log('the current dir contains these files :\n\n',data)
        }
    );

    cmd.get(
        `
            git clone https://github.com/RIAEvangelist/node-cmd.git
            cd node-cmd
            ls
        `,
        function(err, data, stderr){
            if (!err) {
               console.log('the node-cmd cloned dir contains these files :\n\n',data)
            } else {
               console.log('error', err)
            }

        }
    );

With promises

this example by @stephen-last

import Promise from 'bluebird'
import cmd from 'node-cmd'

const getAsync = Promise.promisify(cmd.get, { multiArgs: true, context: cmd })

getAsync('node -v').then(data => {
  console.log('cmd data', data)
}).catch(err => {
  console.log('cmd err', err)
})

Accessing the CMD Process

If you need PIDs, stdio,stdin, stdout, stderr, etc. access, for use in your code, or cleaning up, @freemany added in some functionality to get a reference to the child process as the returned value of the get and run calls.

Getting Process ID

    var cmd=require('../cmd.js');

    var process=cmd.get('node');
    console.log(process.pid);

Running a python shell from node

const cmd=require('../cmd.js');

const processRef=cmd.get('python -i');
let data_line = '';

//listen to the python terminal output
processRef.stdout.on(
  'data',
  function(data) {
    data_line += data;
    if (data_line[data_line.length-1] == '\n') {
      console.log(data_line);
    }
  }
);

const pythonTerminalInput=`primes = [2, 3, 5, 7]
for prime in primes:
    print(prime)

`;

//show what we are doing
console.log(`>>>${pythonTerminalInput}`);

//send it to the open python terminal
processRef.stdin.write(pythonTerminalInput);

Output :

>>>primes = [2, 3, 5, 7]
for prime in primes:
    print(prime)


2
3
5
7