{"id":26895291,"url":"https://github.com/daylinmorgan/task.mk","last_synced_at":"2025-04-01T01:55:11.361Z","repository":{"id":59612139,"uuid":"532344382","full_name":"daylinmorgan/task.mk","owner":"daylinmorgan","description":"turn GNU Make into a better task runner with one file","archived":false,"fork":false,"pushed_at":"2023-01-30T16:02:35.000Z","size":3700,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2023-03-07T06:52:27.003Z","etag":null,"topics":["make","makefile","shell","task-runner"],"latest_commit_sha":null,"homepage":"https://gh.dayl.in/task.mk","language":"Makefile","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/daylinmorgan.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}},"created_at":"2022-09-03T18:36:52.000Z","updated_at":"2022-09-18T20:05:09.000Z","dependencies_parsed_at":"2023-02-16T09:15:37.654Z","dependency_job_id":null,"html_url":"https://github.com/daylinmorgan/task.mk","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daylinmorgan%2Ftask.mk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daylinmorgan%2Ftask.mk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daylinmorgan%2Ftask.mk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daylinmorgan%2Ftask.mk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/daylinmorgan","download_url":"https://codeload.github.com/daylinmorgan/task.mk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246569003,"owners_count":20798341,"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":["make","makefile","shell","task-runner"],"created_at":"2025-04-01T01:55:10.585Z","updated_at":"2025-04-01T01:55:11.348Z","avatar_url":"https://github.com/daylinmorgan.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003e task.mk \u003c/h1\u003e\n  \u003cimg src=\"./assets/help.svg\" alt=\"help\" width=400 \u003e\n  \u003cp align=\"center\"\u003e\n  the task runner for GNU Make you've been missing\n  \u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n  \u003ca href=\"https://gh.dayl.in/task.mk\"\u003eDocumentation\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\u003c/br\u003e\n\nGNU make is an excellent build tool and the task runner we love to hate, but can't escape.\nSo let's improve the UX to make it the best task runner it can be.\n\n`Task.mk`, is a standalone `Makefile` powered by a little magic (code golfing `python` inside of `make`) and little luck (absurd string manipulation and regexes). \nYou can deploy it alongside your own to add some QOL improvements for your users and fellow maintainers.\n\n\nCurrent Features:\n\n  - ANSI escape code support (including NO_COLOR) \n  - formatted help output\n  - custom print function\n  - confirmation prompt\n  - goal phonifier (disabled by default)\n\nDepends on `GNU Make`, obviously and `Python \u003e=3.7`, and `bash` (or `zsh`).\n\nWait python?!?!, I'm not `pip` installing some package just to parse my makefile.\nI agree, all you need is one file [`.task.mk`](https://github.com/daylinmorgan/task.mk/v2024.1001/task.mk)\nYou can automagically include it with just two additional lines to your `Makefile` (and probably one to your `.gitignore`) and you're good to go.\n\n## Setup\n\nOne line setup to download .task.mk and add appropriate includes to your `Makefile`.\n```bash\nbash \u003c(curl -fsSL gh.dayl.in/task.mk/init) # or w/ TASKMK_VERSION=\n```\n\nYou can include this as an optional dependency on your project by adding the below lines to the end of your `Makefile`.\nIf someone tries to invoke `make help` it will download `.task.mk` for them.\n\n```make\n-include .task.mk\n$(if $(filter help,$(MAKECMDGOALS)),$(if $(wildcard .task.mk),,.task.mk: ; curl -fsSL https://raw.githubusercontent.com/daylinmorgan/task.mk/v2024.1001/task.mk -o .task.mk))\n```\n\nIf you plan to use any features besides the help prompt you may want to instead commit `.task.mk` to version control or drop the `$(MAKECMDGOALS)` check so it's always downloaded once `make` is invoked.\n\n```make\n-include .task.mk\n$(if $(wildcard .task.mk),,.task.mk: ; curl -fsSL https://raw.githubusercontent.com/daylinmorgan/task.mk/v2024.1001/task.mk -o .task.mk)\n```\n\nFor more info see the [documentation](https://gh.dayl.in/task.mk).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaylinmorgan%2Ftask.mk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaylinmorgan%2Ftask.mk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaylinmorgan%2Ftask.mk/lists"}