Skip to main content

No project description provided

Project description

RunSH

Transform your shell scripts into powerful CLI tools with autocomplete, help messages, and argument validation.

✨ Features

  • 🔧 Zero Configuration: Add simple comments to your scripts
  • 🌍 GitHub Integration: Run scripts directly from GitHub repositories
  • 💾 Smart Caching: Offline support with automatic cache management
  • 🎯 Auto-completion: Rich CLI experience with argument validation
  • 📁 Organized: All files managed in .runsh/ directory

🚀 Quick Start

Installation

pip install runsh

Basic Usage

  1. Create a script with metadata comments:
#!/bin/bash
# @description: Deploy application to production
# @arg environment: Target environment (staging/prod)
# @option verbose,v [flag]: Show detailed output
# @option dry-run,d [flag]: Preview changes without executing

echo "Deploying to $ENVIRONMENT..."
[ "$VERBOSE" = "1" ] && echo "Verbose mode enabled"
  1. Run with RunSH:
# Auto-discovers scripts in ./scripts/
runsh deploy production --verbose

# Get help automatically
runsh deploy --help

GitHub Integration

# Initialize configuration
runsh config init

# Edit .runsh/config.yaml
scripts_dir: "https://github.com/user/repo/tree/main/scripts"

# Use scripts from GitHub
runsh list
runsh deploy --help

📖 Documentation

🎯 Key Commands

# Script Management
runsh list                    # List available scripts
runsh <script-name> --help    # Get script help

# Configuration  
runsh config show             # Show current config
runsh config init             # Create config file

# Cache Management
runsh cache list              # List cached scripts
runsh cache clean             # Clean expired cache
runsh cache clean --all       # Clean all cache

📁 Project Structure

.runsh/
├── config.yaml              # Main configuration
└── cache/                    # GitHub script cache
    └── github_user_repo_main_scripts/
        ├── script1.sh
        └── .metadata

🔧 Script Metadata

Add these comments to your shell scripts:

# @description: Brief description of what the script does
# @arg name [optional] [default=value]: Argument description  
# @option name,short [flag]: Option description
# @option timeout [default=30]: Value option with default

→ Complete syntax reference

🌍 Remote Scripts

# .runsh/config.yaml
scripts_dir: "https://github.com/team/devops-scripts/tree/main/tools"
default_shell: "bash"

→ GitHub integration guide

📚 Examples

Python Package Publishing

#!/bin/bash
# @description: Publish Python package to PyPI
# @option test,t [flag]: Upload to TestPyPI instead
# @option skip-build,s [flag]: Skip building step

# Build and publish logic here...
runsh publish-python --test  # Test on TestPyPI first
runsh publish-python         # Publish to PyPI

→ More examples

🛠️ Configuration

Environment Variables

export RUNSH_SCRIPTS_DIR="~/my-scripts"
export RUNSH_SHELL="zsh"

Config File

# .runsh/config.yaml
scripts_dir: "./tools"        # Local directory
# scripts_dir: "https://github.com/user/repo/tree/main/scripts"  # GitHub
default_shell: "bash"

→ Full configuration options

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📄 License

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

🔗 Links


Transform your shell scripts into professional CLI tools! 🚀

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

runsh-1.0.0.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

runsh-1.0.0-py3-none-any.whl (21.9 kB view details)

Uploaded Python 3

File details

Details for the file runsh-1.0.0.tar.gz.

File metadata

  • Download URL: runsh-1.0.0.tar.gz
  • Upload date:
  • Size: 17.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.0

File hashes

Hashes for runsh-1.0.0.tar.gz
Algorithm Hash digest
SHA256 18f85c94c4e87eb2725a4e8b9777b66a54c330c59053bec32921aa0c0b227fd8
MD5 099ebbe6d02c61b153a1813412e44fa1
BLAKE2b-256 b957ee8fda718f776189f7d82d2364efab832113a9eebe89ce613a8f6cdf56bf

See more details on using hashes here.

File details

Details for the file runsh-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: runsh-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 21.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.0

File hashes

Hashes for runsh-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f02dcff9be358499e9ef6dbf9ded544153e857c39268607236dc0770a5963bbe
MD5 9fa8c6995ceaa0280f971e72db6ef054
BLAKE2b-256 72fd865b2c4fe8da22ed3cec6a78af150b1f7e8207a92f3bc55e84aa6bfd7ba9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page