Skip to content

carlocorradini/shellcheck

 
 

Repository files navigation

shellcheck

ci codeql

ShellCheck - A shell script static analysis tool.

Downloads the most recent version of koalaman's ShellCheck.

Installation

Warning: Node.js version >= 18.4.0 || >= 16.17.0 is required

npm install --save-dev shellcheck

Usage

Note: On first execution shellcheck it's automatically downloaded

Note: It's recommended to execute shellcheck using npx

Note: Proxy support via HTTP_PROXY, HTTPS_PROXY and NO_PROXY environment variables

Note: By default, all GitHub requests are anonymous. If you encounter error 403 | rate limit exceeded (e.g., in CI), set the environment variable GITHUB_TOKEN to use your own personal access token

Execute shellcheck directly from your npm scripts:

{
  "scripts": {
    "lint": "npx shellcheck path/to/script.sh"
  }
}

Programmatic

Note: More functions, utilities, and constants are available

import { shellcheck, download, config } from 'shellcheck';

/**
 * Spawn ShellCheck.
 * Download ShellCheck if not found or invalid.
 */
await shellcheck({
  args: ['path/to/script.sh', 'path/to/another/script.sh']
  // Options...
})
  .then((result) => {
    // Check error
    if (result.error) throw result.error;

    // Print stdout
    if (result.stdout) console.log(result.stdout.toString('utf8'));
    // Print stderr
    if (result.stderr) console.error(result.stderr.toString('utf8'));

    // Exit code
    if (result?.status !== 0) throw new Error(`Exit code: ${result?.status}`);
  })
  .catch((err) => {
    console.error(`Error: ${err}`);
    throw err;
  });

/**
 * Download ShellCheck.
 */
await download({
  destination: `path/to/destination/shellcheck`
  // destination: `path/to/destination/${config.bin}` // Platform-dependent name (add .exe on Windows)
  // Options...
});

Compatibility

Note: Platform and Architecture follow Node.js naming convention

Platform Architecture
linux x64
linux arm64
darwin x64
darwin arm64
win32 x64

Contributing

I would love to see your contribution ❤️

See CONTRIBUTING guidelines.

License

This project is licensed under the MIT License.
See LICENSE file for details.

About

Linting for your bash code

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 95.1%
  • Shell 3.1%
  • JavaScript 1.8%