{"id":13577068,"url":"https://github.com/rliebz/tusk","last_synced_at":"2026-01-05T23:15:49.152Z","repository":{"id":46280169,"uuid":"101936565","full_name":"rliebz/tusk","owner":"rliebz","description":"The modern task runner","archived":false,"fork":false,"pushed_at":"2025-03-05T02:09:29.000Z","size":8167,"stargazers_count":239,"open_issues_count":21,"forks_count":21,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-05T03:19:28.428Z","etag":null,"topics":["cli","go","task-runner","tusk","yaml-configuration"],"latest_commit_sha":null,"homepage":"https://rliebz.github.io/tusk/","language":"Go","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/rliebz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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":"2017-08-30T23:02:33.000Z","updated_at":"2025-02-25T02:45:47.000Z","dependencies_parsed_at":"2025-02-24T03:22:02.019Z","dependency_job_id":null,"html_url":"https://github.com/rliebz/tusk","commit_stats":null,"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rliebz%2Ftusk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rliebz%2Ftusk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rliebz%2Ftusk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rliebz%2Ftusk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rliebz","download_url":"https://codeload.github.com/rliebz/tusk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247318024,"owners_count":20919448,"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":["cli","go","task-runner","tusk","yaml-configuration"],"created_at":"2024-08-01T15:01:17.587Z","updated_at":"2026-01-05T23:15:49.128Z","avatar_url":"https://github.com/rliebz.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# Tusk\n\n[![GitHub release](https://img.shields.io/github/release/rliebz/tusk.svg)][releases]\n[![Test Workflow](https://github.com/rliebz/tusk/actions/workflows/test.yml/badge.svg)](https://github.com/rliebz/tusk/actions?query=workflow%3ATest+branch%3Amain++)\n[![Go Report Card](https://goreportcard.com/badge/github.com/rliebz/tusk)](https://goreportcard.com/report/github.com/rliebz/tusk)\n[![license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n\nTusk is a yaml-based task runner. By creating a `tusk.yml` in the root of a\nrepository, Tusk becomes a custom command line tool with minimal configuration.\n\nDetails on the usage and configuration options can be found in the [project\ndocumentation][documentation].\n\n## Features\n\n- **Customizable**: Specify your own tasks and options with support for\n  command-line flags, environment variables, conditional logic, and more.\n- **Explorable**: All the help you need to get started is available straight\n  from the command line. Help documentation is generated dynamically, and\n  support for Bash and Zsh tab completion is available.\n- **Accessible**: Built for usability with a simple YAML configuration,\n  familiar syntax for passing options, Bash-like variable interpolation, and a\n  colorful terminal output.\n- **Zero Dependencies**: All you need is a single binary file to get started on\n  Linux, macOS, or Windows.\n\n## Getting Started\n\n### Installation\n\n#### Go\n\nWith Go 1.21+ installed:\n\n```bash\ngo install github.com/rliebz/tusk@latest\n```\n\n#### Homebrew\n\nOn macOS, installation is also available through [homebrew][homebrew]:\n\n```bash\nbrew install rliebz/tusk/tusk\n```\n\nWith Homebrew, tab completion is installed automatically.\n\n#### Compiled Releases\n\nThe latest version can be downloaded from the [releases page][releases].\n\nTo install automatically:\n\n```bash\ncurl -sL https://git.io/tusk | bash -s -- -b /usr/local/bin latest\n```\n\nTo pin to a specific version, replace `latest` with the tag for that version.\n\nTo install to another directory, change the path passed to `-b`.\n\n### Installing Tab Completion\n\nFor bash:\n\n```bash\ntusk --install-completion bash\n```\n\nFor fish:\n\n```fish\ntusk --install-completion fish\n```\n\nFor zsh:\n\n```zsh\ntusk --install-completion zsh\n```\n\nCompletions can be uninstalled with the `--uninstall-completion` flag.\n\n### Usage\n\nCreate a `tusk.yml` file in the root of a project repository:\n\n```yaml\ntasks:\n  greet:\n    usage: Say hello to someone\n    options:\n      name:\n        usage: A person to say \"Hello\" to\n        default: World\n    run: echo \"Hello, ${name}!\"\n```\n\nAs long as there is a `tusk.yml` file in the working or any parent directory,\ntasks can be run:\n\n```console\n$ tusk greet --name friend\nRunning: echo \"Hello, friend!\"\nHello, friend!\n```\n\nHelp messages are dynamically generated based on the YAML configuration:\n\n```console\n$ tusk --help\ntusk - the modern task runner\n\nUsage:\n   tusk [global options] \u003ctask\u003e [task options]\n\nTasks:\n   greet  Say hello to someone\n\nGlobal Options:\n   -f, --file \u003cfile\u003e  Set file to use as the config file\n   -h, --help         Show help and exit\n   ...\n```\n\nIndividual tasks have help messages as well:\n\n```console\n$ tusk greet --help\ntusk greet - Say hello to someone\n\nUsage:\n   tusk greet [options]\n\nOptions:\n   --name \u003cvalue\u003e  A person to say \"Hello\" to\n```\n\nAdditional information on the configuration spec can be found in the [project\ndocumentation][spec].\n\nFor more detailed examples, check out the project's own [`tusk.yml`][tusk.yml]\nfile.\n\n## Contributing\n\nSet-up instructions for a development environment and contribution guidelines\ncan be found in [CONTRIBUTING.md][contributing].\n\n[contributing]: https://github.com/rliebz/tusk/blob/main/CONTRIBUTING.md\n[documentation]: https://rliebz.github.io/tusk/\n[homebrew]: https://brew.sh\n[releases]: https://github.com/rliebz/tusk/releases\n[spec]: https://rliebz.github.io/tusk/spec/\n[tusk.yml]: https://github.com/rliebz/tusk/blob/main/tusk.yml\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frliebz%2Ftusk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frliebz%2Ftusk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frliebz%2Ftusk/lists"}