{"id":19658183,"url":"https://github.com/cdaringe/rad","last_synced_at":"2025-04-28T20:31:17.739Z","repository":{"id":29406069,"uuid":"121595843","full_name":"cdaringe/rad","owner":"cdaringe","description":"general purpose build tool. statically typed, batteries included. command, function, and make-style tasks supported.","archived":false,"fork":false,"pushed_at":"2025-01-23T04:21:27.000Z","size":714,"stargazers_count":26,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-22T16:02:50.792Z","etag":null,"topics":["build-tool","deno","make","npm-scripts","polyglot","rad","task","tasks"],"latest_commit_sha":null,"homepage":"https://cdaringe.github.io/rad","language":"TypeScript","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/cdaringe.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":".github/contributing.md","funding":null,"license":null,"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":"2018-02-15T05:51:45.000Z","updated_at":"2025-01-23T04:21:25.000Z","dependencies_parsed_at":"2024-11-11T15:38:52.407Z","dependency_job_id":"529d2611-6d35-4d63-a016-54cb7d36e70c","html_url":"https://github.com/cdaringe/rad","commit_stats":{"total_commits":181,"total_committers":4,"mean_commits":45.25,"dds":0.3425414364640884,"last_synced_commit":"883989afbe299f3bc3624cb62883b56587d1a004"},"previous_names":[],"tags_count":48,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdaringe%2Frad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdaringe%2Frad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdaringe%2Frad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdaringe%2Frad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cdaringe","download_url":"https://codeload.github.com/cdaringe/rad/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251383660,"owners_count":21580916,"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":["build-tool","deno","make","npm-scripts","polyglot","rad","task","tasks"],"created_at":"2024-11-11T15:36:23.435Z","updated_at":"2025-04-28T20:31:17.710Z","avatar_url":"https://github.com/cdaringe.png","language":"TypeScript","readme":"\u003cimg width=\"100%\" src=\"./img/banner.png\"\u003e\u003c!--NOSITE--\u003e\n\n\u003cdiv style=\"text-align: center;width: 100%;\"\u003e\u003c!--NOSITE--\u003e\n   \u003ca href=\"https://cdaringe.github.io/rad/\" alt=\"docs page\"\u003erad - documentation site\u003c/a\u003e\u003c!--NOSITE--\u003e\n \u003c/div\u003e\u003c!--NOSITE--\u003e\n\n# rad 💯\n\nA general purpose build tool.\n\n- Concise, statically typed, batteries included.\n- No DSL, no stringly typed tasks, no malarkey.\n- Command tasks, function tasks, and `make`-like tasks supported.\n\nJump to:\n\n1. [Documentation site](https://cdaringe.github.io/rad/) \u003c!--NOSITE--\u003e\n2. [Usage](#usage)\n3. [Install](#install)\n4. [What](#what-is-it)\n5. [Why not `\u003cmy-favorite-build-tool\u003e`?](https://cdaringe.github.io/rad/#why-not)\n6. [Manual](https://cdaringe.github.io/rad/#manual)\n\n| branch | status                                                                                                                                         |\n| ------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |\n| main   | [![main](https://github.com/cdaringe/rad/workflows/main/badge.svg)](https://github.com/cdaringe/rad/actions?query=workflow%3Amain)             |\n| next   | [![next](https://github.com/cdaringe/rad/workflows/next/badge.svg?branch=next)](https://github.com/cdaringe/rad/actions?query=workflow%3Anext) |\n\n\u003ca id=\"usage\" href=\"#usage\"\u003e\u003c/a\u003e\n\n## Usage\n\nRad is generally used as a CLI:\n\n`$ rad \u003ctask-name\u003e [--help]`\n\nFor example, `$ rad build` or `$ rad --log-level=info test`!\n\nIt can be used as a library too :).\n\nRad always consumes a `rad.ts` file, such as the one shown here:\n\n```ts\n// rad.ts\nimport { Task, Tasks } from \"https://deno.land/x/rad@v8.0.3/src/mod.ts\";\n\n// command/shell tasks\n// [name: string, cmd: string]\nconst format = [\"format\", `prettier --write`];\nconst test = [\"test\", `deno test`];\n\n// function tasks\nconst compile: Task = {\n  dependsOn: [format],\n  fn: ({ sh, ...toolkit }) =\u003e sh(\"tsc\"),\n  // name: \"compile\" [optional]\n};\nconst greet = {\n  fn: ({ fs }) =\u003e fs.writeFile(\"/tmp/hello\", \"world\"),\n};\n\n// make-style tasks\nconst transpile: Task = {\n  target: \"phony\",\n  prereqs: [\"prereq1\", \"prereq2\"],\n  async onMake({ logger }, { changedPrereqs /*, prereqs */ }) {\n    for await (const req of changedPrereqs) {\n      logger.info(`req: ${req.path} ${req.isFile}`);\n    }\n  },\n};\n\nexport const tasks: Tasks = {\n  compile,\n  format,\n  greet,\n  test,\n};\n```\n\n\u003ca id=\"install\" href=\"#install\"\u003e\u003c/a\u003e\n\n## Install\n\nThere are a few formal ways to use `rad`. Regardless of the route you choose,\nknow that all strategies support using pinned versions, adherent to semver. See\nthe [releases page](https://github.com/cdaringe/rad/releases).\n\n| usage   | install-method | install-steps                                                                                                                                                                                                                       |\n| ------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| cli     | `deno`         | `deno install --global -f -A -n rad https://raw.githubusercontent.com/cdaringe/rad/v8.0.3/src/bin.ts`                                                                                                                               |\n| cli     | `docker`       | `docker pull cdaringe/rad` \u003csup\u003e1\u003c/sup\u003e                                                                                                                                                                                             |\n| cli     | `curl`         | \u003ccode\u003ecurl -fsSL https://raw.githubusercontent.com/cdaringe/rad/v8.0.3/assets/install.sh \\| sh\u003c/code\u003e (versioned)\u003cbr /\u003e\u003ccode\u003ecurl -fsSL https://raw.githubusercontent.com/cdaringe/rad/main/assets/install.sh \\| sh\u003c/code\u003e (latest) |\n| library | `deno`         | `import * as rad from https://github.com/cdaringe/rad/blob/main/v8.0.3/mod.ts`                                                                                                                                                      |\n\n\u003csup\u003e1\u003c/sup\u003eFor docker users, consider making a nice shell alias\n\n```bash\n# shell profile, e.g. .bash_profile\nfunction rad() {\n  docker run --rm -v $PWD:/rad cdaringe/rad --log-level info \"$@\";\n}\n```\n\n\u003ca id=\"what-is-it\" href=\"#what-is-it\"\u003e\u003c/a\u003e\n\n## What is it\n\nA build tool! It competes with make, npm-scripts, velociraptor, bazel, gradle,\nant, gulp, or any of the other many tools out there! On various metrics, `rad`\nis subjectively better than some of the outstanding tools out there, and in some\ncases, not-so-much. We invite you to understand some of its core characteristics\nand interfaces.\n\n`rad` offers:\n\n- simple, **programmable** task interfaces\n- **easy to understand**, declarative build steps\n- **type-checked** tasks\n- **no quirky DSLs** (`make`, `gradle`, and friends 😢). **your build is code**,\n  not an arbitrary language or stringly (read: bummerly) typed script runner.\n- productive toolkit API for nuanced tasks that benefit from programming. see\n  [toolkit](#toolkit)\u003c!-- @todo write toolkit docs--\u003e\n- bottom-up, `make`-style build targets\n  - fast builds, skip redundant work when inputs haven't changed\n- cli mode, or library mode\n- portability. build automation for _any_ language or project, in many\n  environments (\\*limited to _Deno_ target architectures, for the time being.\n  long term, we may package this in `Rust`)\n- great UX\n- debug-ability. 🐛 inspect your data, tasks, or even _rad_ itself\n- employs a real scripting language--**not** `bash/sh`! shell languages are\n  great for running other programs, not for plumbing data\n\nSee\n[why not `\u003cmy-favorite-build-tool\u003e`?](https://cdaringe.github.io/rad/#why-not)\n\nRead more on our [documentation site](https://cdaringe.github.io/rad/)\n\n\u003c!--NOSITE--\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdaringe%2Frad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcdaringe%2Frad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdaringe%2Frad/lists"}