{"id":15748201,"url":"https://github.com/binaryphile/mash","last_synced_at":"2025-03-31T06:43:17.833Z","repository":{"id":143324970,"uuid":"202173988","full_name":"binaryphile/mash","owner":"binaryphile","description":"Bash utility for project-specific aliases/functions inspired by Makefiles","archived":false,"fork":false,"pushed_at":"2019-08-14T13:27:42.000Z","size":10,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-06T11:31:19.832Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/binaryphile.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-08-13T15:32:12.000Z","updated_at":"2022-03-17T20:20:53.000Z","dependencies_parsed_at":"2023-05-14T21:15:16.022Z","dependency_job_id":null,"html_url":"https://github.com/binaryphile/mash","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binaryphile%2Fmash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binaryphile%2Fmash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binaryphile%2Fmash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binaryphile%2Fmash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/binaryphile","download_url":"https://codeload.github.com/binaryphile/mash/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246429447,"owners_count":20775805,"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":[],"created_at":"2024-10-04T05:40:52.565Z","updated_at":"2025-03-31T06:43:17.813Z","avatar_url":"https://github.com/binaryphile.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"Mash\n====\n\nBash utility for project-specific aliases/functions inspired by\nMakefiles\n\nMash allows you to create project-specific Mashfiles which define bash\naliases and functions that you can call from the command-line.\n\nIt is not a build utility like make, it simply gives you a way to define\n\"targets\" which you can call directly as arguments to mash much like\nmake does.\n\nQuick Start\n-----------\n\nClone this repo and add **bin** to your PATH. You can use a bash package\nmanager such as [basher] to automate this for you.\n\nCreate a Mashfile in your project directory. Create aliases or functions\nnormally in that file (no need for a [shebang]).\n\nCall the function/alias from the Mashfile directory with:\n\n    mash FUNCTION_OR_ALIAS [ARGS]\n\nARGS are passed to the function or appended to the alias command.\n\nIf no Mashfile is found in the current directory, mash will search up\nthe directory tree until it finds one, so it works in subdirectories of\nyour project as well.\n\nExamples\n--------\n\nMashfile:\n\n    alias ctl=\"supervisorctl -c $(dirname \"$BASH_SOURCE\")/supervisor.conf\"\n\nWhere **supervisor.conf** is in the same directory as the Mashfile.\n\nCLI:\n\n    mash ctl status\n\nNote that mash doesn't prevent you from calling functions or commands\ndefined outside the Mashfile, such as:\n\n    mash echo hello\n\nWhile that's not a feature, it's not something I plan to remove as it's\ntricky to limit the called functions to those defined in an arbitrary\nfile.\n\nImports\n-------\n\nUnless the environment variable **MASH\\_LEGIBLE** is set to *0*, mash\nwill automatically load all of the libraries from the [legible bash]\nframework.\n\nThese functions will be available to your Mashfile.\n\nExtending Mash\n--------------\n\nMash will autoload any **\\*.bash** file in the **mash** folder under\nMashfile's location. You can manually source files within Mashfile, but\nyou don't have to by following this convention.\n\nWhy Mash?\n---------\n\nMash is a portmanteau of *make* and *bash*, much like rake is for *ruby*\nand *make*. Since several projects already use *bake*, I went the other\nway. I do find it interesting that both ways are popular things you can\ndo with potatoes, however.\n\n------------------------------------------------------------------------\n\nThe Markdown in this document was formatted with [pandoc].\n\n  [basher]: https://github.com/basherpm/basher\n  [shebang]: https://wiki-dev.bash-hackers.org/scripting/basics#the_shebang\n  [legible bash]: https://github.com/binaryphile/legible\n  [pandoc]: https://pandoc.org/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbinaryphile%2Fmash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbinaryphile%2Fmash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbinaryphile%2Fmash/lists"}