{"id":50588464,"url":"https://github.com/karbunkul/dart_foreman_cli","last_synced_at":"2026-06-05T08:30:32.717Z","repository":{"id":344623590,"uuid":"1181652291","full_name":"karbunkul/dart_foreman_cli","owner":"karbunkul","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-09T09:53:04.000Z","size":65,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-09T11:32:35.572Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/karbunkul.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-14T12:45:25.000Z","updated_at":"2026-05-09T10:02:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/karbunkul/dart_foreman_cli","commit_stats":null,"previous_names":["karbunkul/dart_foreman_cli"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/karbunkul/dart_foreman_cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karbunkul%2Fdart_foreman_cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karbunkul%2Fdart_foreman_cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karbunkul%2Fdart_foreman_cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karbunkul%2Fdart_foreman_cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/karbunkul","download_url":"https://codeload.github.com/karbunkul/dart_foreman_cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karbunkul%2Fdart_foreman_cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33937661,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-05T02:00:06.157Z","response_time":120,"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":"2026-06-05T08:30:32.097Z","updated_at":"2026-06-05T08:30:32.710Z","avatar_url":"https://github.com/karbunkul.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Foreman CLI 🏗️\n\n**Foreman CLI** is a production-grade orchestration tool for [Mason](https://brickhub.dev). It transforms simple bricks into complex, intelligent generators by adding advanced logic, variable processing, and automation workflows.\n\n## Why Foreman? 🤔\n\nWhile Mason is great for single-template generation, real-world projects often require:\n- 📦 **Multi-brick generation**: Generate a Feature package, Unit Tests, and UI Kit components in one go.\n- 📡 **Dynamic data**: Fetch information from Shell, Git, or the File System.\n- 📂 **Smart pickers**: Interactive file and directory selection.\n- ⚙️ **Automation**: Run scripts like `dart run build_runner build` automatically after generation.\n\n## Installation 📥\n\n### From source (recommended for developers)\n```bash\ndart pub global activate --source path .\n```\n\n### Via Shell Script (for compiled binaries)\nYou can install Foreman directly to `/usr/local/bin` using the following command:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/karbunkul/dart_foreman_cli/main/scripts/install.sh | bash\n```\n\n## Uninstallation 🗑️\n\nIf you installed Foreman via the shell script, you can remove it using:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/karbunkul/dart_foreman_cli/main/scripts/uninstall.sh | bash\n```\n\n## Configuration (`foreman.yaml`) 📄\n\nThe core of Foreman is the `foreman.yaml` file. Place it in your project root.\n\n```yaml\nblueprints:\n  # Blueprint name\n  feature:\n    tags: [core, feature]\n    # Global variables for all bricks in this blueprint\n    vars:\n      feature_name:\n        prompt: \"Feature name:\"\n    \n    bricks:\n      # Brick name from your .mason/bricks.json\n      feature_package:\n        path: \"packages/features/{{feature_name}}\"\n        # Local variables for this brick only\n        vars:\n          include_extra:\n            behavior: confirm\n            prompt: \"Add extra boilerplate?\"\n        # Scripts to run after this brick is generated\n        hooks:\n          after:\n            - cd packages/features/{{feature_name}} \u0026\u0026 flutter pub get\n```\n\n## Variable Behaviors 🛠️\n\nForeman extends standard Mason variables with powerful \"Behaviors\".\n\n### 1. `mason` (Default) ✍️\nStandard text input with optional pattern validation.\n```yaml\nname:\n  prompt: \"Enter name:\"\n  pattern: \"^[a-z]+$\"\n```\n\n### 2. `select` 🎯\nInteractive list selection.\n```yaml\nplatform:\n  behavior: select\n  options: [ios, android, web]\n```\n\n### 3. `confirm` ✅\nBoolean (Yes/No) prompt.\n```yaml\nuse_analytics:\n  behavior: confirm\n  default: true\n```\n\n### 4. `select_file` \u0026 `select_directory` 📁\nInteractive pickers for your project files.\n```yaml\ntarget_file:\n  behavior: select_file\n  path: \"lib/src\"\n  filter: \"**/*.dart\"\n```\n\n### 5. `shell` 🐚\nExecutes a shell command and uses its `stdout` as the value.\n```yaml\ngit_user:\n  behavior: shell\n  exec: \"git config --get user.name\"\n```\n\n### 6. `combine` 🔗\nCombines multiple variables using a Mustache template.\n```yaml\nfull_path:\n  behavior: combine\n  template: \"src/{{feature_name.snakeCase()}}/{{class_name.pascalCase()}}.dart\"\n```\n\n## Commands ⌨️\n\n### `build` 🚀\nRuns the blueprint generation process.\n\n```bash\n# Run specific blueprint\nforeman build my_blueprint\n\n# Filter by tags\nforeman build --tag core\n\n# Interactive tag selector\nforeman build -t\n\n# Pass project directory explicitly\nforeman build -p ./my_app\n```\n\n## Architecture 🏛️\n\nForeman automatically discovers your project root by looking for `foreman.yaml` in the current and parent directories. It uses the local `.mason/bricks.json` to resolve brick paths, ensuring compatibility with your existing Mason setup.\n\n## License ⚖️\n\n(c) 2026, Alexander Pokhodyun (karbunkul)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarbunkul%2Fdart_foreman_cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkarbunkul%2Fdart_foreman_cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarbunkul%2Fdart_foreman_cli/lists"}