{"id":14667916,"url":"https://github.com/shikaan/shmux","last_synced_at":"2025-08-22T15:31:21.705Z","repository":{"id":65097824,"uuid":"581603064","full_name":"shikaan/shmux","owner":"shikaan","description":"🐚 Run multiple scripts from one file. In (almost) any language.","archived":false,"fork":false,"pushed_at":"2024-12-01T10:11:51.000Z","size":50,"stargazers_count":49,"open_issues_count":6,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-09T07:50:29.500Z","etag":null,"topics":["bash","cli","go","language","makefile","productivity","scripts","shell","shell-script","terminal"],"latest_commit_sha":null,"homepage":"","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/shikaan.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2022-12-23T17:27:02.000Z","updated_at":"2024-12-01T10:11:54.000Z","dependencies_parsed_at":"2023-12-22T03:38:18.738Z","dependency_job_id":"92e28520-f598-42b2-9fa5-8f15a66e3251","html_url":"https://github.com/shikaan/shmux","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/shikaan/shmux","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shikaan%2Fshmux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shikaan%2Fshmux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shikaan%2Fshmux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shikaan%2Fshmux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shikaan","download_url":"https://codeload.github.com/shikaan/shmux/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shikaan%2Fshmux/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271658658,"owners_count":24798135,"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","status":"online","status_checked_at":"2025-08-22T02:00:08.480Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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","go","language","makefile","productivity","scripts","shell","shell-script","terminal"],"created_at":"2024-09-12T01:00:35.821Z","updated_at":"2025-08-22T15:31:21.385Z","avatar_url":"https://github.com/shikaan.png","language":"Go","funding_links":[],"categories":["Alternatives"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg width=\"96\" height=\"96\" src=\"./docs/96x96.png\" alt=\"logo\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eshmux\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\nRun multiple scripts from one file. In (almost) any language.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://asciinema.org/a/548928\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://asciinema.org/a/548928.svg\" height=\"288\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## ⚡️ Quick start\n\n### Installation\n\n_MacOS and Linux_\n```sh\nsudo sh -c \"curl -s https://shikaan.github.io/sup/install | REPO=shikaan/shmux sh -\"\n```\nor\n```\nsudo sh -c \"wget -q https://shikaan.github.io/sup/install -O- | REPO=shikaan/shmux sh -\"\n```\n\n_Windows and manual instructions_\n\nHead to the [releases](https://github.com/shikaan/shmux/releases) page and download the executable for your system and architecture.\n\n### Usage\n\n`shmux` makes you execute different scripts in any scripting language from one one configuration file.\n\nThe scripts are called _recipes_ and the configuration file is called _shmuxfile_.\n\n#### Writing a recipe\n\nFor example, a `shmuxfile.sh` for a Go project might look like: \n\n```sh\ntest:\n  go test ./...\n\nbuild:\n  go generate\n  GOOS=$1 go build\n\ngreet:\n  echo \"Hello $1, my old friend\"\n\necho:\n  echo \"$@\"  \n```\n\nThe last two recipes could be also written in JavaScript like:\n\n```js\ngreet:\n  #!/usr/bin/env node\n\n  const friend = \"$1\"\n  console.log(`Hello ${friend}, my old friend`)\n\necho:\n  #!/usr/bin/env node\n\n  console.log(`$@`)\n```\n\n#### Running a recipe\n\nRunning the recipes then is as simple as:\n\n```bash\n# Runs the test command\n$ shmux test\n\n# Runs the build command with \"linux\" as $1\n$ shmux build -- \"linux\"\n\n# Runs the greet command with \"darkness\" as $1\n$ shmux greet -- \"darkness\" \n# =\u003e Hello darkness, my old friend\n```\n\n#### Recipe dependencies\n\nSimilar to a `Makefile`, recipes can have dependencies:\n\n```sh\ntest:\n  go test ./...\n\nbuild: test\n  go build\n```\n\n```bash\n$ shmux build\n```\nRunning `shmux build` will execute `test` before `build`.\n\n## 📄 Documentation\n\nMore detailed documentation can be found [here](./docs/docs.md).\n\n## ❓ FAQs\n\n* _Isn't this just another GNU Make?_\n\n  `shmux` draws inspiration from `make` but stands out as a script runner, not a build system. This distinction eliminates common build system constraints like the presumption that outputs are files. Moreover, it offers:\n\n  * Command line arguments support.\n  * Compatibility with various scripting languages.\n  * Pre-runtime issue detection.\n  * Execution capability from any subdirectory.\n  * Native support on MacOS and Windows, no extra dependencies required.\n\n* _Which languages are supported?_\n  \n  `shmux` makes no assumptions about the underlying scripting language to utilize, because it always requires you to specify the shell (either via flag or shebang).\n\n  To this day, `shmux` is known to be working with:\n\n  * sh and derviatives (bash, dash, fish, zsh...)\n  * JavaScript / TypeScript (with ts-node)\n  * Perl\n  * Python\n  * Ruby\n\n* _Does it have editor support?_\n\n  As long as the language you choose is fine with having strings like `script:` in its syntax, you can just piggy-back on the existing editor support. \n  \n  For example, if your _shmuxfile_ hosts JavaScript code, calling it `shmuxfile.js` will give you decent syntax highlighting out of the box in most editors.\n\n  More sophisticated editor support may be coming soon. If you are interested, feel free to open an issue.\n\n## 🤓 Contributing\n\nHave a look through existing [Issues](https://github.com/shikaan/shmux/issues) and [Pull Requests](https://github.com/shikaan/shmux/pulls) that you could help with. If you'd like to request a feature or report a bug, please create a [GitHub Issue](https://github.com/shikaan/shmux/issues).\n\n## License\n\n[MIT](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshikaan%2Fshmux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshikaan%2Fshmux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshikaan%2Fshmux/lists"}