shellican

command module
v0.3.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 13, 2025 License: MIT Imports: 4 Imported by: 0

README

shellican

shellican logo

shellican (shell-i-can) is a powerful CLI for managing runnables (scripts/commands) in collections. It allows you to organize your shell scripts, define their environment, and run them easily.

CI Release Go Report Card

shellican demo

Why shellican?

shellican bridges the gap between simple shell aliases and complex Makefile setups.

  • Beyond One-Liners & Aliases: Instead of cluttering your .zshrc or .bashrc with forgotten aliases, turn them into organized runnables. Keep your logic structured, named, and easy to find.
  • Shareable Workflows: Stop saying "copy this script and change line 5". With import / export, you can package your collections and share them with friends or colleagues. They get a ready-to-run environment without manual editing.
  • Self-Documenting: Every runnable supports a help description and a full README. You (and your team) will know exactly what a script does, even months later.

Features

  • Collections & Runnables: Organize your scripts into collections.
  • YAML Configuration: Define runnables and environments in collection.yml and runnable.yml.
  • Environment Management: Inject environment variables defined in configuration.
  • Hooks: Pre (before) and post (after) hooks for runnables.
  • Shell Helper: Generate shell wrappers for easy access.
  • Import/Export: Share collections easily.

Installation

Go Install
go install github.com/brsyuksel/shellican@latest
Binary Releases

You can download the pre-compiled binary for your operating system (macOS, Linux) from the Releases page.

Usage

Structure

Default storage location: ~/.shellican (or $SHELLICAN_HOME/.shellican).

~/.shellican/
  ├── my-collection/
  │   ├── collection.yml
  │   ├── script-a/
  │   │   └── runnable.yml
  │   └── script-b/
  │       ├── runnable.yml
  │       └── main.sh
Commands
  • New Collection: shellican new collection <name>
  • New Runnable: shellican new runnable <collection> <name>
  • Run: shellican run <collection> <runnable> [args...]
  • List: shellican list collections or shellican list runnables <collection>
  • Show: shellican show collection <name> or shellican show runnable <collection> <name>
  • Create Shell Shortcut: shellican create-shell <collection> (creates ~/.local/bin/<collection>-shell)
  • Import/Export: shellican import <source> / shellican export <collection>

Configuration

collection.yml

name: "My Scripts"
help: "A collection of useful scripts"
readme: "README.md"
runnables:
  - script-a
environments:
  GLOBAL_VAR: "true"

script-a/runnable.yml

name: "Script A"
help: "This script does something awesome"
readme: "README.md"
run: "./main.sh" # or "echo hello"
before: "echo 'Starting...'"
after: "echo 'Finished!'"
environments:
  LOCAL_VAR: "123"

Contributing

  1. Fork the repo
  2. Create feature branch
  3. Commit changes
  4. Push and create PR

License

MIT

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL