{"id":22963368,"url":"https://github.com/kettek/gobl","last_synced_at":"2025-08-01T23:33:35.576Z","repository":{"id":57506564,"uuid":"232831653","full_name":"kettek/gobl","owner":"kettek","description":"Go as a Makefile! Sort of!","archived":false,"fork":false,"pushed_at":"2024-11-02T00:33:49.000Z","size":65,"stargazers_count":4,"open_issues_count":2,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-01T18:57:39.345Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kettek.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":"2020-01-09T14:47:24.000Z","updated_at":"2024-11-02T00:33:05.000Z","dependencies_parsed_at":"2024-02-02T01:43:14.717Z","dependency_job_id":"b75ed5a0-ad61-4b53-8dcb-e2d64c4b28fe","html_url":"https://github.com/kettek/gobl","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/kettek/gobl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kettek%2Fgobl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kettek%2Fgobl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kettek%2Fgobl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kettek%2Fgobl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kettek","download_url":"https://codeload.github.com/kettek/gobl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kettek%2Fgobl/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268311172,"owners_count":24230295,"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-01T02:00:08.611Z","response_time":67,"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":[],"created_at":"2024-12-14T19:34:41.302Z","updated_at":"2025-08-01T23:33:35.448Z","avatar_url":"https://github.com/kettek.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gobl - Go Build\n[![Go Reference](https://pkg.go.dev/badge/github.com/kettek/gobl.svg)](https://pkg.go.dev/github.com/kettek/gobl)\n\n`gobl` is an experimental build system that uses Go to define and run build tasks. Although it is actively used to develop other programs, it is by no means stable and may have breaking API changes if any redesigns are required. However, syntax _should_ largely remain the same, as I find its current syntax to be simple to use, which is one of the primary goals of it.\n\n## Quickstart\nIn your project root directory, simply create a file called `gobl.go` and fill its contents with the following:\n\n```go\npackage main\n\nimport (\n\t. \"github.com/kettek/gobl\"\n)\n\nfunc main() {\n\tTask(\"listFiles\").\n\t\tExec(\"ls\")\n\n\tGo()\n}\n\n```\n\nYou will likely have to get the gobl dependency by issuing `go get -d github.com/kettek/gobl`.\n\nAt this point, you can list the tasks by issuing `go run .` and then run the specific task with `go run . listFiles`\n\nA more complex example that would allow automatic rebuilding + running, would be:\n\n```go\npackage main\n\nimport (\n\t. \"github.com/kettek/gobl\"\n)\n\nfunc main() {\n\tTask(\"build\").\n\t\tExec(\"go\", \"build\", \"./cmd/mycmd\")\n\n\tTask(\"run\").\n\t\tExec(\"mycmd\")\n\n\tTask(\"watch\").\n\t\tWatch(\"./pkg/*/*.go\").\n\t\tSignaler(SigQuit).\n\t\tRun(\"build\").\n\t\tRun(\"run\")\n\n\tGo()\n}\n```\n\n## Task Steps\nFor a complete rundown of available steps, see the [godoc task reference](https://pkg.go.dev/github.com/kettek/gobl@v0.1.0/pkg/task).\n\n## Visual Studio Code Integration\nThere is a task provider extension for VSCode that allows using gobl tasks as VSCode tasks. It is available as [Gobl Task Provider](https://marketplace.visualstudio.com/items?itemName=kettek.gobl-task-provider) and has a GitHub repository [here](https://github.com/kettek/vscode-gobl-task-provider).\n\n## Why\n\t* 1. I like Go.\n\t* 2. Having the full power of Go available for setting up and running build tasks is very convenient.\n\t* 3. Go's syntax is elegant.\n\t* 4. It's an interesting concept.\n\nOf course, there are some inconveniences, such as:\n\n\t* 1. Technically running `go run .` does first compile the task script and run it from a temporary directory.\n\t* 2. It takes the place of `main() {...}` in whatever directory it is in. This shouldn't be problem for most popular go project layout styles, but could be an issue for some.\n\t* 3. `go.mod` and `go.sum` adds some clutter.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkettek%2Fgobl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkettek%2Fgobl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkettek%2Fgobl/lists"}