🚀 SHSF CLI
A powerful command-line interface for managing and interacting with your SHSF instance. Built with TypeScript and designed for developers, it provides a seamless experience to perform health checks, run tests, and more—all from your terminal.
🚦 Getting Started
📋 Prerequisites
- Node.js (v22+)
- pnpm (preferred)
📦 Installation
To install SHSF CLI globally on your system:
pnpm add -g shsf-cli
or
npm install -g shsf-cli
Once installed, simply type:
shsf health
and it will ask you for your SHSF instance URL and API token to perform a health check.
🛠️ Usage & Commands
🩺 Health Check
Quickly see if the system is up and running:
shsf health
🔗 Execution URL
Get a function's execution URL by ID:
shsf get exec-url --id <id>
If your repo has a .shsf.json mapping with an id, you can omit --id:
shsf get exec-url
The command prints the standard execution URL and, when available, the alias URL based on the function's executionAlias.
🏗️ Local Development
If you're contributing or running from source:
-
Setup:
git clone https://github.com/Space-Banane/shsf-cli.git cd shsf-cli pnpm install -
Run:
pnpm build # Build the project pnpm start [cmd] # Run a command directly
Ignore & Mapping files
You can control what files shsf remote push ignores using a .shsfignore file (gitignore-style).
Place .shsfignore in the source directory you're pushing or in the repository root. Examples:
# ignore logs and secrets
*.log
secret.txt
node_modules
You can also create a .shsf.json mapping file at the repository root to avoid passing --id and --from every time. Example:
{
"default": {
"id": "my-function-id",
"from": "src/functions/my-fn"
}
}
Command-line options always override values from .shsf.json.
🤝 Contributing
We love builders! To add a new command:
- Create a
.tsfile insrc/commands/. - Export a definition object:
export const myCommand = { name: "run-test", description: "Explanation of what it does", action: async () => { ... } }; - Run
pnpm buildand test it withshsf run-test.
📄 License
Licensed under the MIT-0 License. Happy coding! 🍌