{"id":13587034,"url":"https://github.com/rash-sh/rash","last_synced_at":"2026-01-20T22:01:28.966Z","repository":{"id":37017770,"uuid":"261565986","full_name":"rash-sh/rash","owner":"rash-sh","description":"Declarative shell scripting using Rust native bindings inspired by Ansible","archived":false,"fork":false,"pushed_at":"2026-01-16T12:24:08.000Z","size":1890,"stargazers_count":234,"open_issues_count":10,"forks_count":9,"subscribers_count":8,"default_branch":"master","last_synced_at":"2026-01-17T01:30:26.507Z","etag":null,"topics":["bash","cli","cloud","containers","docker","rust","shell"],"latest_commit_sha":null,"homepage":"https://rash-sh.github.io","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rash-sh.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":"DCO","cla":null}},"created_at":"2020-05-05T19:35:09.000Z","updated_at":"2026-01-16T12:24:12.000Z","dependencies_parsed_at":"2023-02-15T10:01:45.200Z","dependency_job_id":"3c69f5c0-59d0-4fa4-88a4-b3b9a4113b6f","html_url":"https://github.com/rash-sh/rash","commit_stats":{"total_commits":355,"total_committers":6,"mean_commits":"59.166666666666664","dds":0.06760563380281692,"last_synced_commit":"b09f4015781dc8c46dbeb11e4ac028f787ddc7f3"},"previous_names":["pando85/rash"],"tags_count":78,"template":false,"template_full_name":null,"purl":"pkg:github/rash-sh/rash","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rash-sh%2Frash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rash-sh%2Frash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rash-sh%2Frash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rash-sh%2Frash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rash-sh","download_url":"https://codeload.github.com/rash-sh/rash/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rash-sh%2Frash/sbom","scorecard":{"id":128020,"data":{"date":"2025-08-04","repo":{"name":"github.com/rash-sh/rash","commit":"8e5e6917bc7eb5446ee0c91158fce6c97882ae50"},"scorecard":{"version":"v5.2.1-28-gc1d103a9","commit":"c1d103a9bb9f635ec7260bf9aa0699466fa4be0e"},"score":4.3,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/16 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/aur-publish.yml:1","Warn: no topLevel permission defined: .github/workflows/auto-tag.yml:1","Warn: no topLevel permission defined: .github/workflows/docker_images.yml:1","Warn: no topLevel permission defined: .github/workflows/pages.yml:1","Warn: no topLevel permission defined: .github/workflows/pre-commit.yml:1","Warn: no topLevel permission defined: .github/workflows/rust.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v2.16.1 not signed: https://api.github.com/repos/rash-sh/rash/releases/228817408","Warn: release artifact v2.16.0 not signed: https://api.github.com/repos/rash-sh/rash/releases/227752086","Warn: release artifact v2.15.0 not signed: https://api.github.com/repos/rash-sh/rash/releases/226483671","Warn: release artifact v2.14.2 not signed: https://api.github.com/repos/rash-sh/rash/releases/226017549","Warn: release artifact v2.14.1 not signed: https://api.github.com/repos/rash-sh/rash/releases/225647861","Warn: release artifact v2.16.1 does not have provenance: https://api.github.com/repos/rash-sh/rash/releases/228817408","Warn: release artifact v2.16.0 does not have provenance: https://api.github.com/repos/rash-sh/rash/releases/227752086","Warn: release artifact v2.15.0 does not have provenance: https://api.github.com/repos/rash-sh/rash/releases/226483671","Warn: release artifact v2.14.2 does not have provenance: https://api.github.com/repos/rash-sh/rash/releases/226017549","Warn: release artifact v2.14.1 does not have provenance: https://api.github.com/repos/rash-sh/rash/releases/225647861"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/aur-publish.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/aur-publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/aur-publish.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/aur-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/auto-tag.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/auto-tag.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/auto-tag.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/auto-tag.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker_images.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/docker_images.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker_images.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/docker_images.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker_images.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/docker_images.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker_images.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/docker_images.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker_images.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/docker_images.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker_images.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/docker_images.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker_images.yml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/docker_images.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker_images.yml:65: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/docker_images.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker_images.yml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/docker_images.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker_images.yml:75: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/docker_images.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pages.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/pages.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pages.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/pages.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pages.yml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/pages.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pre-commit.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/pre-commit.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pre-commit.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/pre-commit.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pre-commit.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/pre-commit.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/rust.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/rust.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/rust.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/rust.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/rust.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/rust.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/rust.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/rust.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/rust.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/rust.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/rust.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/rust.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/rust.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/rust.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/rust.yml:94: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/rust.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/rust.yml:104: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/rust.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/rust.yml:112: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/rust.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/rust.yml:128: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/rust.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/rust.yml:166: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/rust.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/rust.yml:172: update your workflow using https://app.stepsecurity.io/secureworkflow/rash-sh/rash/rust.yml/master?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:2","Warn: containerImage not pinned by hash: Dockerfile:9: pin your Docker image by updating debian:trixie-20240904-slim to debian:trixie-20240904-slim@sha256:43788d0fe1fee841d09707fbb9355c938c6eb5b0c6bde2de31a07443f1bc6750","Warn: containerImage not pinned by hash: examples/envar-api-gateway/Dockerfile:1","Warn: containerImage not pinned by hash: examples/envar-api-gateway/Dockerfile:2: pin your Docker image by updating nginx to nginx@sha256:84ec966e61a8c7846f509da7eb081c55c1d56817448728924a87ab32f12a72fb","Warn: pipCommand not pinned by hash: .github/workflows/pre-commit.yml:23","Info:   0 out of  12 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  21 third-party GitHubAction dependencies pinned","Info:   0 out of   1 pipCommand dependencies pinned","Info:   0 out of   4 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: RUSTSEC-2021-0119 / GHSA-76w9-p8mg-j927 / GHSA-wgrg-5h56-jg27"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-16T04:29:01.400Z","repository_id":37017770,"created_at":"2025-08-16T04:29:01.400Z","updated_at":"2025-08-16T04:29:01.400Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28615544,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T21:52:42.722Z","status":"ssl_error","status_checked_at":"2026-01-20T21:52:20.513Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","cli","cloud","containers","docker","rust","shell"],"created_at":"2024-08-01T15:05:58.738Z","updated_at":"2026-01-20T22:01:28.947Z","avatar_url":"https://github.com/rash-sh.png","language":"Rust","funding_links":[],"categories":["Rust","cloud"],"sub_categories":[],"readme":"\u003cimg src=\"https://raw.githubusercontent.com/rash-sh/rash/master/artwork/shelly.svg\" width=\"20%\" height=\"auto\" /\u003e\n\n# rash\n\n![Build status](https://img.shields.io/github/actions/workflow/status/rash-sh/rash/rust.yml?branch=master)\n[![Documentation](https://docs.rs/rash_core/badge.svg)](https://docs.rs/rash_core)\n[![crates.io](https://img.shields.io/crates/v/rash_core)](https://crates.io/crates/rash_core)\n[![concept-map](https://img.shields.io/badge/design-concept--map-blue)](https://mind42.com/mindmap/f299679e-8dc5-48d8-b0f0-4d65235cdf56)\n![Rash license](https://img.shields.io/github/license/rash-sh/rash)\n[![Rash Aur package](https://img.shields.io/aur/version/rash)](https://aur.archlinux.org/packages/rash)\n\nRash is a lightweight, container-friendly shell scripting language that uses a declarative YAML\nsyntax inspired by [Ansible](https://www.ansible.com/). It brings the simplicity and readability of\nAnsible playbooks to local scripting and container entrypoints, all in a single Rust binary with no\ndependencies.\n\n## Why Rash?\n\n- **Declarative vs Imperative**: Define what your script should accomplish, not how\n- **Container-Optimized**: Single binary with no dependencies, perfect for minimal containers\n- **Lightweight**: Runs on any Linux system, even resource-constrained IoT devices\n- **Template-Powered**: Uses [MiniJinja](https://github.com/mitsuhiko/minijinja) for powerful\n  templating capabilities\n- **Intuitive Syntax**: Familiar YAML structure for those who know Ansible\n- **Built-in Command-Line Parsing**: Elegant [docopt](http://docopt.org) implementation for clean\n  script interfaces\n- **Modular Design**: Focused modules for different tasks\n\n## Example: Imperative vs Declarative\n\n### Bash (Imperative)\n\n```bash\n#!/bin/bash\nset -e\n\n# Validate required environment variables\nREQUIRED_PARAMS=\"\nDATABASE_URL\nDATABASE_USER\nDATABASE_PASSWORD\nLOG_LEVEL\n\"\n\nfor required in $REQUIRED_PARAMS ; do\n  [[ -z \"${!required}\" ]] \u0026\u0026 echo \"$required IS NOT DEFINED\" \u0026\u0026 exit 1\ndone\n\n# Configure the application\necho \"[$0] Configuring application...\"\nCONFIG_FILE=\"/app/config.json\"\ncat \u003e $CONFIG_FILE \u003c\u003c EOF\n{\n  \"database\": {\n    \"url\": \"$DATABASE_URL\",\n    \"user\": \"$DATABASE_USER\",\n    \"password\": \"$DATABASE_PASSWORD\"\n  },\n  \"server\": {\n    \"port\": \"${SERVER_PORT:-8080}\",\n    \"log_level\": \"$LOG_LEVEL\"\n  }\n}\nEOF\n\n# Set correct permissions\nchmod 0600 $CONFIG_FILE\n\necho \"[$0] Starting application...\"\nexec \"$@\"\n```\n\n### Rash (Declarative)\n\n```yaml\n#!/usr/bin/env rash\n\n- name: Verify input parameters\n  assert:\n    that:\n      - env.DATABASE_URL is defined\n      - env.DATABASE_USER is defined\n      - env.DATABASE_PASSWORD is defined\n      - env.LOG_LEVEL is defined\n\n- name: Configure application\n  template:\n    src: config.j2\n    dest: /app/config.json\n    mode: \"0600\"\n  vars:\n    server_port: \"{{ env.SERVER_PORT | default('8080') }}\"\n\n- name: Launch command\n  command:\n    cmd: \"{{ rash.argv }}\"\n    transfer_pid: yes\n```\n\n## Installation\n\n### Binary (Linux/macOS)\n\n```bash\ncurl -s https://api.github.com/repos/rash-sh/rash/releases/latest \\\n    | grep browser_download_url \\\n    | grep -v sha256 \\\n    | grep $(uname -m) \\\n    | grep $(uname | tr '[:upper:]' '[:lower:]') \\\n    | grep -v musl \\\n    | cut -d '\"' -f 4 \\\n    | xargs curl -s -L \\\n    | sudo tar xvz -C /usr/local/bin\n```\n\n### Arch Linux (AUR)\n\n```bash\nyay -S rash\n```\n\n### Cargo\n\n```bash\ncargo install rash_core\n```\n\n### Docker\n\n```bash\ndocker run --rm -v /usr/local/bin/:/output --entrypoint /bin/cp ghcr.io/rash-sh/rash:latest /bin/rash /output/\n```\n\n## Key Features\n\n### Built-in Command-Line Interface Parser\n\n```yaml\n#!/usr/bin/env -S rash --\n#\n# Copy files from source to dest dir\n#\n# Usage:\n#   copy.rh [options] \u003csource\u003e... \u003cdest\u003e\n#   copy.rh\n#\n# Options:\n#   -h --help    show this help message and exit\n#   --mode MODE  dest file permissions [default: 0644]\n\n- copy:\n    src: \"{{ item }}\"\n    dest: \"{{ dest }}/{{ item | split('/') | last }}\"\n    mode: \"{{ options.mode }}\"\n  loop: \"{{ source | default([]) }}\"\n```\n\n### Container Entrypoints\n\nPerfect for creating maintainable container entrypoints that handle environment validation,\nconfiguration management, and service initialization:\n\n```dockerfile\nFROM alpine:3.16\n\n# Install rash binary\nADD https://github.com/rash-sh/rash/releases/download/v0.6.0/rash-x86_64-unknown-linux-musl.tar.gz /tmp/\nRUN tar xvzf /tmp/rash-x86_64-unknown-linux-musl.tar.gz -C /usr/local/bin \u0026\u0026 \\\n    rm /tmp/rash-x86_64-unknown-linux-musl.tar.gz\n\n# Add entrypoint script\nCOPY entrypoint.rh /entrypoint.rh\nRUN chmod +x /entrypoint.rh\n\nENTRYPOINT [\"/entrypoint.rh\"]\n```\n\n### Templating System\n\nAccess environment variables and use powerful filters:\n\n```yaml\n- name: Configure application\n  template:\n    src: config.j2\n    dest: /etc/app/config.json\n  vars:\n    app_port: \"{{ env.PORT | default('8080') }}\"\n    app_log_level: \"{{ env.LOG_LEVEL | default('info') }}\"\n    database_url: \"{{ env.DATABASE_URL }}\"\n```\n\n### Privilege Escalation\n\nRun commands as different users with the built-in `become` functionality:\n\n```yaml\n- name: Configure system DNS\n  become: true\n  copy:\n    dest: /etc/resolv.conf\n    content: |\n      nameserver 208.67.222.222\n      nameserver 208.67.220.220\n```\n\n## Documentation\n\nFor comprehensive documentation, visit:\n[https://rash-sh.github.io/docs/rash/master/](https://rash-sh.github.io/docs/rash/master/)\n\n## Community\n\n- GitHub: [https://github.com/rash-sh/rash](https://github.com/rash-sh/rash)\n- Report Issues: [https://github.com/rash-sh/rash/issues](https://github.com/rash-sh/rash/issues)\n\n## License\n\nRash is distributed under the\n[GPL-3.0 License](https://github.com/rash-sh/rash/blob/master/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frash-sh%2Frash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frash-sh%2Frash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frash-sh%2Frash/lists"}