Skip to content

igorskyflyer/npm-simple-exec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Icon of SimpleExec

SimpleExec


๐Ÿ•บ Command. Execution. Made. Simple. โ–ถ


๐Ÿ“ƒ Table of Contents



๐Ÿค– Features

  • โšก Synchronous command execution with trimmed output
  • โณ Asynchronous command execution with error handling
  • ๐Ÿ“ž Callback-based result delivery for executed commands
  • ๐Ÿ“ค Promise-based command execution returning standard output
  • ๐Ÿงฉ Parallel execution of multiple commands in one call
  • ๐Ÿ›ก๏ธ Input validation with descriptive error messages
  • ๐Ÿ—‚๏ธ Flexible support for both rest parameters and string arrays
  • ๐Ÿงน Automatic trimming of standard output for clean results


๐Ÿ•ต๐Ÿผ Usage

Install it by executing any of the following, depending on your preferred package manager:

pnpm add @igorskyflyer/simple-exec
yarn add @igorskyflyer/simple-exec
npm i @igorskyflyer/simple-exec


๐Ÿคน๐Ÿผ API

The API exposes two types:

  • ExecResult
  • ExecCallback

Types

ExecResult

A simple object structured as:

{ 
  error: string,
  output: string
}

ExecCallback

A callback with the method signature of:

type ExecCallback = (result: ExecResult) => void

Functions

executeSync(command: string): ExecResult

Synchronously executes the specified command.

command - Command to execute.


Will throw an error if no command is provided.
Returns the ExecResult object with standard and error outputs.


import { executeSync } from '@igorskyflyer/simple-exec'

const result = executeSync('dir /b')

if (result.error) {
  console.error(result.error) // log the error
} else {
  console.log(result.output) // log the contents of the directory
}

executeCallback(command: string, callback: ExecCallback): void

Asynchronously, with a callback executes the specified command.

command - Command to execute.
callback - The function to call after the command is executed.


Will throw an error if no command is provided.


import { executeCallback } from '@igorskyflyer/simple-exec'

executeCallback('node --version', (result) => {
  if (result.error) {
    console.error(result.error) // log the error
  } else {
    console.log(result.output) // log Node version
  }
})

execute(command: string): Promise<string>

Asynchronously executes the specified command.

command - Command to execute.


Will throw an error if no command is provided.
Returns the standard output.


import { execute } from '@igorskyflyer/simple-exec'

try {
  const result: string = await execute('npm --version')

  console.log(result) // log NPM version
} catch(exp) {
  console.error(exp) // log the error
}

executeParallel(...commands: string[]): Promise<string[]>;

Asynchronously and in parallel executes the specified commands.

commands - Commands to execute, rest string parameters, e.g. executeParallel('command-one', 'command-two', 'command-three').


Will throw an error if any of the commands causes an error.
Returns the standard output of each command.


import { executeParallel } from '@igorskyflyer/simple-exec'

try {
  const results: string[] = await executeParallel('npm --version', 'node --version', 'npm pack')
  console.log(results) // log the results which is a string array
} catch(exp) {
  console.error(exp) // log the error
}

executeParallel(commands: string[]): Promise<string[]>

Asynchronously and in parallel executes the specified commands.

commands - Commands to execute, a string array, e.g. executeParallel(['command-one', 'command-two', 'command-three']).


Will throw an error if any of the commands causes an error.
Returns the standard output of each command.


import { executeParallel } from '@igorskyflyer/simple-exec'

try {
 const results: string[] = executeParallel(['npm --version', 'node --version', 'npm pack'])
  console.log(results) // log the results which is a string array
} catch(exp) {
  console.error(exp) // log the error
}

โœจ Examples

example.ts

import { executeParallel } from '@igorskyflyer/simple-exec'

const result: string[] = await executeParallel([
  'npm --version',
  'node --version',
  'npm --version'
]) // will log ['<npm version>', '<Node version>', '<npm version>']
  // e.g. [ '10.8.2', 'v22.5.1', '10.8.2' ]


๐Ÿ“ Changelog

๐Ÿ“‘ The changelog is available here, CHANGELOG.md.



๐Ÿชช License

Licensed under the MIT license which is available here, MIT license.



๐Ÿ’– Support

I work hard for every project, including this one and your support means a lot to me!
Consider buying me a coffee. โ˜•

Donate to igorskyflyer

Thank you for supporting my efforts! ๐Ÿ™๐Ÿ˜Š


๐Ÿงฌ Related

@igorskyflyer/mp3size

๐Ÿงฎ Calculates an estimated file size of Mp3 files. ๐ŸŽถ


@igorskyflyer/windev

๐Ÿƒ Provides ways of checking whether a path is a legacy Windows device. ๐Ÿ’พ


@igorskyflyer/emojilyzer

๐Ÿ’ฌ Emojifies strings, converting textual representations of emojis to graphical ones. ๐Ÿ–Œ๏ธ


@igorskyflyer/astro-post-excerpt

โญ An Astro component that renders post excerpts for your Astro blog - directly from your Markdown and MDX files. Astro v2+ collections are supported as well! ๐Ÿ’Ž


@igorskyflyer/scrollend-polyfill

๐Ÿ›ด A performant and light (< 1.5KB) JavaScript polyfill for the scrollend Event. โ›ธ๏ธ




๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป Author

Created by Igor Dimitrijeviฤ‡ (@igorskyflyer).