{"id":13807450,"url":"https://github.com/marghidanu/werk","last_synced_at":"2026-01-20T13:00:57.064Z","repository":{"id":42525238,"uuid":"293473534","full_name":"marghidanu/werk","owner":"marghidanu","description":"Dead simple task runner","archived":false,"fork":false,"pushed_at":"2025-02-22T10:21:16.000Z","size":146,"stargazers_count":30,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-23T02:04:05.341Z","etag":null,"topics":["cli","container","docker","executor","parallel-jobs","shell","task-runner","werk"],"latest_commit_sha":null,"homepage":"","language":"Crystal","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/marghidanu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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}},"created_at":"2020-09-07T08:53:34.000Z","updated_at":"2025-03-10T09:18:11.000Z","dependencies_parsed_at":"2025-04-23T02:04:05.846Z","dependency_job_id":"d382ea46-c405-4e40-a62c-b66331258c7f","html_url":"https://github.com/marghidanu/werk","commit_stats":null,"previous_names":[],"tags_count":57,"template":false,"template_full_name":null,"purl":"pkg:github/marghidanu/werk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marghidanu%2Fwerk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marghidanu%2Fwerk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marghidanu%2Fwerk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marghidanu%2Fwerk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marghidanu","download_url":"https://codeload.github.com/marghidanu/werk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marghidanu%2Fwerk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28603402,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T12:01:53.233Z","status":"ssl_error","status_checked_at":"2026-01-20T12:01:46.545Z","response_time":117,"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":["cli","container","docker","executor","parallel-jobs","shell","task-runner","werk"],"created_at":"2024-08-04T01:01:25.642Z","updated_at":"2026-01-20T13:00:57.042Z","avatar_url":"https://github.com/marghidanu.png","language":"Crystal","funding_links":[],"categories":["Processes and Threads"],"sub_categories":[],"readme":"# werk\n\nDead simple task runner. Now with support for Docker.\n\n## Build status\n\n[![CI Status](https://github.com/marghidanu/werk/workflows/CI/badge.svg)](https://github.com/marghidanu/werk/actions)\n\n## Installation\n\nYou can follow the installation guide available [here](https://github.com/marghidanu/werk/wiki/Installation).\n\n## Documentation\n\nFor more information on how to get started, please check the [wiki](https://github.com/marghidanu/werk/wiki/Guide).\n\n## Features\n\n- [x] Automatic determination of the execution plan\n- [x] Parallel jobs execution\n- [x] Shell executor\n- [x] Docker executor\n- [x] Real-time output support for parallel jobs\n- [x] Simple configuration DSL based on YAML\n- [x] Execution report\n- [ ] Web UI for browsing the execution reports (?)\n- [x] Enable logging\n\n## Example\n\nCreate a **werk.yml** with the following content:\n\n```yaml\nversion: \"1\"\n\ndescription: \"Manage Werk with Werk\"\n\njobs:\n  main:\n    description: \"Build application\"\n    executor: local\n    commands:\n      - shards build\n    needs:\n      - lint\n      - test\n\n  lint:\n    description: \"Lint code\"\n    executor: docker\n    image: veelenga/ameba\n    commands:\n      - ameba\n    can_fail: true\n\n  test:\n    description: \"Test code\"\n    executor: local\n    commands:\n      - crystal spec\n\n  docs:\n    description: Generate API documentation\n    executor: local\n    commands:\n      - crystal docs\n      - open docs/index.html\n    silent: true\n```\n\nafter that, you can run\n\n```\nwerk run\n```\n\n You can also start individual jobs by specifying a target like this:\n\n```\nwerk run lint\n```\n\nHere's another example; in this case, I'm building Werk using itself.\n\n[![asciicast](https://asciinema.org/a/ssMl6y1R2RcaDgfTHj5uJejzH.svg)](https://asciinema.org/a/ssMl6y1R2RcaDgfTHj5uJejzH)\n\n## Contributing\n\n1. Fork it (\u003chttps://github.com/marghidanu/werk/fork\u003e)\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Commit your changes (`git commit -am 'Add some feature'`)\n4. Push to the branch (`git push origin my-new-feature`)\n5. Create a new Pull Request\n\n## Contributors\n\n- [Tudor Marghidanu](https://github.com/marghidanu) - creator and maintainer\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarghidanu%2Fwerk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarghidanu%2Fwerk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarghidanu%2Fwerk/lists"}