Skip to content

gunar/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.