{"id":13602883,"url":"https://github.com/DannyBen/rush","last_synced_at":"2025-04-11T13:31:45.479Z","repository":{"id":36651775,"uuid":"223402718","full_name":"DannyBen/rush","owner":"DannyBen","description":"Personal Package Manager - run your GitHub hosted scripts, locally.","archived":false,"fork":false,"pushed_at":"2024-10-28T04:58:32.000Z","size":475,"stargazers_count":37,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-28T08:41:14.748Z","etag":null,"topics":["bash","package-manager","script-runner"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DannyBen.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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}},"created_at":"2019-11-22T12:53:42.000Z","updated_at":"2024-10-28T04:58:33.000Z","dependencies_parsed_at":"2024-01-05T07:30:42.997Z","dependency_job_id":"78568a6b-672d-42b0-9058-933de773b0dc","html_url":"https://github.com/DannyBen/rush","commit_stats":{"total_commits":283,"total_committers":2,"mean_commits":141.5,"dds":"0.028268551236749095","last_synced_commit":"1ba7c777cccd87c9fb15efc469d2aa0b107cb075"},"previous_names":["dannyben/rush"],"tags_count":54,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DannyBen%2Frush","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DannyBen%2Frush/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DannyBen%2Frush/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DannyBen%2Frush/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DannyBen","download_url":"https://codeload.github.com/DannyBen/rush/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223470305,"owners_count":17150531,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","package-manager","script-runner"],"created_at":"2024-08-01T18:01:41.541Z","updated_at":"2024-11-07T06:30:34.153Z","avatar_url":"https://github.com/DannyBen.png","language":"Shell","funding_links":[],"categories":["package-manager"],"sub_categories":[],"readme":"# Rush - Personal Package Manager\n\n```\n_______                       ______  \n____  /  ___________  ___________  /_ \n___  /   __  ___/  / / /_  ___/_  __ \\\n__  /    _  /   / /_/ /_(__  )_  / / /\n_  /     /_/    \\__,_/ /____/ /_/ /_/ \n/_/      Personal Package Manager     \n```\n\n[![Build Status](https://github.com/DannyBen/rush/workflows/Test/badge.svg)](https://github.com/DannyBen/rush/actions?query=workflow%3ATest)\n\n---\n\nRush is a bash script that executes other scripts (bash or other languages)\nfrom compatible GitHub repositories or local folders. It provides a simple\ncommand line interface for downloading, updating and running these scripts.\n\nSee [this minimal sample rush repo][sample], or a real life example\nrepo at [DannyBen/rush-repo][dannyben-repo].\n\nRush was designed to easily allow bootstrapping of new linux machines with \nyour desired configuration and installed packages and to \"normalize\" the way\nyou install things.\n\nRush was developed using the [Bashly Command Line Framework][bashly].\n\n\n## Prerequisites\n\n- Bash 4.0 or higher (`brew install bash` on mac).\n- curl \n- git\n\n\n## Installation\n\n### Installing using the setup script\n\nThis setup script will download the rush executable to `/usr/local/bin/` and\ninstall an autocomplete script in the bash completions directory.\n\n```shell\n$ curl -Ls get.dannyb.co/rush/setup | bash\n```\n\nFeel free to inspect the [setup script](setup) before running.\n\n\n### Installing manually\n\nDownload the [rush](rush) script to `/usr/local/bin/` or anywhere in your\n`PATH`, and make it executable.\n\nIf you wish to have all package name auto-completed for all `rush` commands, \nadd this line to your startup script (for example: `~/.bashrc`):\n\n```bash\ncomplete -W '$(rush list -s)' rush\n```\n\n\n## Quick Start\n\nAfter installing, you can follow these steps to quickly see how it works:\n\n```shell\n# Clone a sample package repository\n$ rush clone dannyben/rush-repo-template --name sample\n\n# View the config file and verify it was added\n$ rush config\n\n# View list of packages\n$ rush list\n\n# Install (execute) a sample package\n# (All packages in the sample repository only print some messages)\n$ rush get sample:hello \n\n# Optionally, make this repository the default\n$ rush default sample\n\n# And now you can omit the repository name when getting a package\n$ rush get hello\n\n# Since `get` is the default command, the above command is the same as\n$ rush hello\n```\n\nIn case you prefer testing Rush in a clean, isolated docker environment, you\ncan use [this docker image][docker-image], which has Rush copied to its path:\n\n    $ docker run --rm -it --entrypoint bash dannyben/rush\n    \u003e rush --help\n\n\n## Usage\n\n```\n$ rush --help\n\nrush - Personal package manager\n\nUsage:\n  rush COMMAND\n  rush [COMMAND] --help | -h\n  rush --version | -v\n\nRepository Commands:\n  add           Register a local repository\n  remove        Unregister a local repository\n\nGit Commands:\n  clone         Clone a GitHub package repository\n  pull          Git pull one or all repositories\n  push          Git push one or all repositories\n\nConfig Commands:\n  config        Show or edit the configuration file\n  default       Set a default repository\n\nPackage Commands:\n  get           Install a package (default)\n  undo          Uninstall a package\n  snatch        Install a package from a remote repo\n  copy          Copy a package between local repositories\n  info          Show information about a package\n  list          Show packages in one or all repositories\n  search        Search in package names and info files\n  edit          Edit package files\n  show          Show package files\n\nInternal Commands:\n  completions   Generate bash completions\n\nOptions:\n  --help, -h\n    Show this help\n\n  --version, -v\n    Show version number\n\nEnvironment Variables:\n  RUSH_CONFIG\n    Location of the rush config file\n\n    Default: ~/rush.ini\n\n  RUSH_ROOT\n    Location of the default base directory for cloning repositories.\n\n    Default: ~/rush-repos\n```\n\n\n## Building your own Rush repository\n\nCreate your own repository, either manually or by using\n[this Github template][sample]. In any case, it is recommended you name your \nrepository **rush-repo**.\n\nTo create a repository manually, follow these steps:\n\n1. Create a new repository on GitHub, named `rush-repo`.\n2. Each folder you create in this repository is considered a package.\n3. Each package needs to have these files:\n   - An executable script named `main` - this will be executed when running\n     `rush get yourpackage`.\n   - A plain text file called `info` - this will be shown when running\n     `rush info yourpackage`.\n   - An executable script named `undo` (optional) - this will be executed \n     when running `rush undo yourpackage`.\n4. In the `main` and `undo` scripts, you have the following environment\n   variables available to you:\n   - `$REPO` - name of the rush repo\n   - `$REPO_PATH` - path of the rush repo\n   - `$USER_CWD` - the directory from which rush was executed\n   - `$VERBOSE` - if the user passed `--verbose`\n   - `$FORCE` - if the user passed `--force`\n5. Note that the `main` and `undo` scripts are executed in the same folder they\n   live in, so you can copy files from the package's directory to wherever\n   they need to be.\n6. If you need to read/write files in the user's current directory, use the\n   `$USER_CWD` environment variable.\n7. The `main` and `undo` scripts can be written in any language, as long as\n   they have a shebang line.\n\n\n\n## Using with GitHub Actions\n\nRush can be very useful for running remote shell scripts as part of your\nGitHub Actions workflow. This sample configuration shows how to install rush\nand connect to your rush repository from a GitHub Actions workflow.\n\n```yaml\n# .github/workflows/main.yml\nname: Test\non: [push]\n\njobs:\n  main:\n    name: Rush demo\n    runs-on: ubuntu-latest\n\n    steps:\n    - name: Install rush\n      run: curl -Ls http://get.dannyb.co/rush/setup | bash\n\n    # Replace with your own repository\n    - name: Connect to rush repository\n      run: rush clone dannyben/rush-repo-template --default --shallow\n\n    - name: Run a sample script from the repo\n      run: rush get hello\n```\n\n## Uninstalling\n\n```shell\n$ curl -Ls get.dannyb.co/rush/uninstall | bash\n```\n\n## Contributing / Support\n\nIf you experience any issue, have a question or a suggestion, or if you wish\nto contribute, feel free to [open an issue][issues].\n\n---\n\n[sample]: https://github.com/DannyBen/rush-repo-template\n[dannyben-repo]: https://github.com/dannyben/rush-repo\n[bashly]: https://bashly.dannyb.co/\n[docker-image]: https://github.com/dannyben/docker-rush\n[issues]: https://github.com/DannyBen/rush/issues\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDannyBen%2Frush","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDannyBen%2Frush","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDannyBen%2Frush/lists"}