{"id":15888217,"url":"https://github.com/corecii/lunar","last_synced_at":"2026-02-03T22:05:25.037Z","repository":{"id":241372783,"uuid":"806712869","full_name":"Corecii/Lunar","owner":"Corecii","description":"A Task Runner for Lune","archived":false,"fork":false,"pushed_at":"2024-05-27T19:31:48.000Z","size":24,"stargazers_count":5,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-06T20:07:28.687Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/Corecii.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":"2024-05-27T18:35:12.000Z","updated_at":"2025-05-28T12:36:30.000Z","dependencies_parsed_at":"2024-05-28T02:49:23.232Z","dependency_job_id":"60f450d8-02d4-4216-9057-9bf9b540a255","html_url":"https://github.com/Corecii/Lunar","commit_stats":null,"previous_names":["corecii/lunar"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Corecii/Lunar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Corecii%2FLunar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Corecii%2FLunar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Corecii%2FLunar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Corecii%2FLunar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Corecii","download_url":"https://codeload.github.com/Corecii/Lunar/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Corecii%2FLunar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29059043,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T20:13:53.544Z","status":"ssl_error","status_checked_at":"2026-02-03T20:13:40.507Z","response_time":96,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2024-10-06T06:06:42.261Z","updated_at":"2026-02-03T22:05:25.022Z","avatar_url":"https://github.com/Corecii.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Lunar: Task Runner for Lune\n\nA task runner that runs [Lune](https://github.com/lune-org/lune) scripts.\n\nRun any lune script in your workspace, or link to repos, directories, or other local files to run shared scripts. It's as easy as `lunar script args`!\n\nUse `lunar help` to show a list of all tasks it can run in the current directory.\n\nUse Lunar as an alternative to other task runners or makefile tools.\n\n## Installation\n\nAdd `lunar` to your `aftman.toml` (or equivalent toolchain manager):\n```toml\nlunar = \"corecii/lunar@0.1.0\"\n```\n\nOR download it from [the Releases page](https://github.com/corecii/lunar/releases/latest) and put it in your `PATH`.\n\n## Cheat Sheet\n\nI figure the easiest way to get across what Lunar can do is to give some examples.\n\n### A Simple Script\n\nLunar will show any script under `lune`, `.lune`, `lunar`, or `.lunar` directories as a runnable task without any extra configuration.\n\n### A Script with a Description and Argument Help\n\nAdd a comment anywhere in the script like so:\n\n```lua\n--[=[ lunar\n\tabout = \"your description here\"\n\targs = \"your arguments here\"\n]=]\n```\n\nBoth fields are optional.\n\n### A Script with Multiple Tasks\n\nDefine subtasks in the script like so:\n\n```lua\n--[=[ lunar\n\t[tasks.task_name]\n\t\targs = \"your arguments here\"\n\t\tabout = \"your description here\"\n\n\t[tasks.another_task]\n\t\t# Fields are optional\n\n\t[tasks.yet_another_task]\n]=]\n```\n\nYou can also hide the main task:\n\n```lua\n\thide = true\n\n\t[tasks.task_name]\n\t\targs = \"your arguments here\"\n\t\tabout = \"your description here\"\n```\n\n### Link to a Script\n\nCreate a `your_script_name.lunar.toml` file in any of `lune`, `.lune`, `lunar`, or `.lunar` directories, like so:\n\n```toml\n\tscript = \"path/to/your/script.luau\"\n```\n\nYou can also give it a name to override the `.lunar.toml` name:\n\n```toml\n\tname = \"my_task\"\n\tscript = \"path/to/your/script.luau\"\n```\n\n### Link to a Directory\n\nWhen you link to a directory, Lunar will search `lune`, `.lune`, `lunar`, or `.lunar` for scripts in that directory, just like it does in the working directory.\n\nCreate a `any_hame_here.lunar.toml` file, like so:\n\n```toml\n\t[directory]\n\t\tpath = \"path/to/your/directory\"\n```\n\nYou can also filter to only show specific tasks:\n\n```toml\n\t[directory]\n\t\tpath = \"path/to/your/directory\"\n\t\ttasks = [\"task_name\", \"another_task\"]\n```\n\nOr give all tasks in this directory a prefix:\n\n```toml\n\t[directory]\n\t\tpath = \"path/to/your/directory\"\n\t\tprefix = \"your-prefix-\"\n```\n\n### Link to a Repo\n\nLinking to a repo is a lot like linking to a directory:\n\n```toml\n\t[repo]\n\t\turl = \"https://github.com/owner/repo\"\n```\n\nYou can also specify a branch or tag with the `tag` field:\n\n```toml\n\t[repo]\n\t\turl = \"https://github.com/owner/repo\"\n\t\ttag = \"main\"\n```\n\nOr, you can specify a hash with the `hash` field:\n\n```toml\n\t[repo]\n\t\turl = \"https://github.com/owner/repo\"\n\t\thash = \"1ddd252d7161f57bccfd171788801c3e41302a1c\"\n\t\t# Must be a full 40-character hash\n```\n\nRepos support all of the script filtering and prefixing fields that directories do.\n\n### Using a Single Script from a Repo\n\n```toml\n\t# my_repo_task.lunar.toml\n\t[repo]\n\t\turl = \"https://github.com/owner/repo\"\n\n\t\tscript = \"script_name\"\n```\n\nThis will take on the name of the `lunar.toml` file, so the task will be named `my_repo_task`.\nIf you want to give it a different name, use the top-level `name` field:\n\n```toml\n\t# my_repo_task.lunar.toml\n\tname = \"my_task\"\n\n\t[repo]\n\t\turl = \"https://github.com/owner/repo\"\n\t\t\n\t\tscript = \"script_name\"\n```\n\nWith the name field, this will be renamed to `my_task`.\n\n## Repo Setup Scripts\n\nIf you're publishing a repo with Lune scripts for Lunar, and they depend on prerequisites, you can include a\n`lunar-setup.luau` script in the top-level directory.\n\nWhenever a repo is downloaded, `lunar-setup.luau` will be run to set it up for the first time. You can invoke package managers, grab some stuff from git, etc. If your script fails, the repo will be considered a failure and will try again next time.\n\n`lunar-setup.luau` is run with the repo as the current working directory.\n\n## Warning on Repo Tasks and Security\n\nLune is powerful. It can run any command on your system and modify the filesystem. Using any Lune script should be treated as seriously as running any executable.\n\nLunar will run any task you give it. It will also run setup scripts automatically after downloading tasks from the Internet.\n\nLunar has a simple trust procedure to prevent mistakes, but we are not liable for any damage caused by downloading and running malicious scripts that you instruct it to download. You should ensure every script comes from someone you trust.\n\n## Lune, Git and Misc. Information\n\n### Caching\n\nLunar caches each repo+hash the first time it's used. If the current hash for a tag or branch can't be fetched from the internet, the cached hash and data for that hash will be used.\n\nLunar caches each repo by doing a shallow clone of the specific git hash that was targeted. If targeting a tag or a branch, the git hash is fetched first. When specifying a tag or branch, Lunar will automatically download newer versions of the repo when the tag or branch points to a newer commit. **Cached repos are not automatically cleaned up,** but they are shallow clones so they _don't_ contain the full history.\n\nLunar by default keeps data in `data_local/.lunar-tr` . You can change this directory with the `LUNAR_TR_DIR` environment variable. See [dirs documentation](https://docs.rs/dirs/5.0.1/dirs/fn.data_local_dir.html) for information about where `data_local` is on your system.\n\n### Versions\n\nLunar doesn't bundle Lune or Git. It uses the versions installed on your system. If we bundled these, we'd have to make a new release every time Lune or Git updated.\n\nBecause we use the system Git executable, Git authentication is handled by Git and its global settings. If you want Lunar to be able to download private repositories, just log in to your account as part of your global Git settings.\n\nWe recommend keeping both Lune and Git up-to-date. Git, in particular, needs to be at least version `2.24` or so for `lunar` to work with remote repos.\n\nLune runs approximately the following git command to cache repos: (see [this](https://stackoverflow.com/a/43136160) StackOverflow answer for more details)\n```sh\ngit init\ngit remote add origin \u003curl\u003e\ngit fetch --depth 1 origin \u003csha1\u003e\ngit checkout FETCH_HEAD\n```\n\n### Why the name?\n\n`Lune Run` -\u003e `Luner[un]` -\u003e `Luner` -\u003e `Lunar`.\n\n\"Luner\" sounds silly and \"Lunerun\" is too verbose!\n\nI'm open to other name suggestions.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcorecii%2Flunar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcorecii%2Flunar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcorecii%2Flunar/lists"}