{"id":36455892,"url":"https://github.com/outofforest/build","last_synced_at":"2026-01-11T23:03:25.156Z","repository":{"id":37569824,"uuid":"332412786","full_name":"outofforest/build","owner":"outofforest","description":"Makefile idea implemented in pure go","archived":false,"fork":false,"pushed_at":"2024-12-27T08:08:19.000Z","size":123,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-27T08:27:57.726Z","etag":null,"topics":["build","deployment","go","makefile"],"latest_commit_sha":null,"homepage":"","language":"Go","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/outofforest.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-01-24T09:46:00.000Z","updated_at":"2024-12-27T08:08:03.000Z","dependencies_parsed_at":"2024-08-12T14:57:29.515Z","dependency_job_id":"4e7b864b-54ec-425f-8376-30914cebc4d1","html_url":"https://github.com/outofforest/build","commit_stats":null,"previous_names":["wojciech-malota-wojcik/build"],"tags_count":72,"template":false,"template_full_name":null,"purl":"pkg:github/outofforest/build","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/outofforest%2Fbuild","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/outofforest%2Fbuild/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/outofforest%2Fbuild/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/outofforest%2Fbuild/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/outofforest","download_url":"https://codeload.github.com/outofforest/build/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/outofforest%2Fbuild/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28326167,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T22:11:01.104Z","status":"ssl_error","status_checked_at":"2026-01-11T22:10:58.990Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["build","deployment","go","makefile"],"created_at":"2026-01-11T23:03:24.720Z","updated_at":"2026-01-11T23:03:25.144Z","avatar_url":"https://github.com/outofforest.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Build\n\nYet another implementation of Makefile concept in go.\nAdvantages over all the other available packages:\n- go only, except small bash script\n- no magic command discovery based on go source code, you explicitly\n  declare paths and functions for your commands\n- bash autocompletion supported\n- set of standard commands\n  \n## Example\n\nTake a look at [example/main.go](../main/example/main.go)\n  \n## Compilation\n\nThis build system is written in pure go so you have to compile it \nusing `go build` before first usage. Take a look at the [script](./bin/builder) I use in my setup.\n\nI configure this script using `alias` feature delivered by `bash` in my `~/.bashrc`:\n\n```\nalias projname=\"\u003cpath-to-project\u003e/bin/builder\"\n```\n\nThen you may execute:\n\n```\n$ projname \u003ccommand\u003e \u003ccommand\u003e\n```\n\nto execute commands.\n\n## Autocompletion\n\n`build` supports autocompletion natively. To use it add this line to\nyour `~/.bashrc`:\n\n```\ncomplete -o nospace -C projname projname\n```\n\nassuming you defined `projname` alias specified above.\n\n## Executing commands\n\nCommands are organised in paths similar to the one in normal filesystem.\nSome examples how commands may be structured:\n\n```\nprojname tools/apiClient\nprojname deploy/db\nprojname tests/backend/web-server\nprojname lint\n```\n\nYou may specify many commands at once:\n\n```\nprojname tests deploy\n```\n\nThey are executed in specified order. This will save some time if both commands execute same dependencies.\n\n### Dependencies\n\nEvery command may specify dependencies - other commands which have to finish before the actual one may continue.\nIt allows you to move some code common to many commands to another function.\n\nIf many commands require the same dependency, it is executed once. \n\nDependencies are executed one by one in order.\n\nIf circular dependency is detected error is raised.\n\n## Other features\n\n### List of commands\n\nExecute\n\n```\n$ projname\n```\n\nto print available commands with their descriptions.\n\n### Verbose logging\n\nIf you want to see more logs during command execution, use `-v` or `--verbose`:\n\n```\n$ projname \u003ccommand\u003e -v\n```\n\n## Errors\n\n`build` always breaks on first failure.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foutofforest%2Fbuild","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foutofforest%2Fbuild","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foutofforest%2Fbuild/lists"}