atom-common
A lightweight Node.js utility library providing file system traversal helpers and runtime environment detectors.
Installation
npm install @appthreat/atom-common
# or
yarn add @appthreat/atom-common
Usage
import { getAllFiles, detectJava, detectRuby } from "@appthreat/atom-common";
// 1. Recursively get all .js files in a directory
const jsFiles = getAllFiles("./src", ".js");
console.log(jsFiles);
// 2. Check if runtimes are available
if (detectJava()) {
console.log("Java is installed!");
}
if (detectRuby("3.4.x")) {
console.log("Ruby 3.4.x is installed!");
}
API Reference
File System Utilities
getAllFiles(dir, extn, ...args)
Recursively scans a directory for files with a specific extension. It automatically ignores node_modules, dotfiles (hidden files), and specific directories defined in the configuration.
- dir
(string): The root directory to start scanning. - extn
(string): The file extension to look for (e.g.,.js,.ts). - ignore_node_modules
(boolean): Defaults totrue.
Returns: An array of file paths.
Runtime Detection Utilities
These functions spawn a child process to check version flags. They return true if the runtime is found and exits successfully, otherwise false.
detectJava(): Checks forjava.detectPhp(): Checks forphp.detectScala(): Checks forscala.detectScalac(): Checks for the Scala compilerscalac.detectRuby(versionNeeded): Checks forruby.- versionNeeded (optional): A string (e.g.,
"3.4.7","3.4.x","4.0.x"). If provided, verifies the installed version matches.
- versionNeeded (optional): A string (e.g.,
Configuration
You can configure the behavior of the utilities using Environment Variables.
File Ignoring
| Variable | Description | Default |
|---|---|---|
ASTGEN_IGNORE_DIRS | CSV string of directory names to ignore during scan. | venv, docs, e2e, cypress, node_modules (and others) |
ASTGEN_IGNORE_FILE_PATTERN | Regex string for files to ignore. | (three|\.d)\.(js|ts|jsx|tsx)$ |
Custom Binary Paths
If your binaries are not in the global system PATH, you can override the commands used for detection:
| Variable | Description | Default |
|---|---|---|
JAVA_CMD | Command to run Java | java |
PHP_CMD | Command to run PHP | php |
RUBY_CMD | Command to run Ruby | ruby |
SCALA_CMD | Command to run Scala | scala |
SCALAC_CMD | Command to run Scalac | scalac |
License
MIT