{"id":28704900,"url":"https://github.com/linbreux/flockrunner","last_synced_at":"2025-06-14T14:08:56.017Z","repository":{"id":297928145,"uuid":"997997176","full_name":"Linbreux/FlockRunner","owner":"Linbreux","description":"YAML command executor ","archived":false,"fork":false,"pushed_at":"2025-06-08T11:09:10.000Z","size":117,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-08T12:21:42.260Z","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":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Linbreux.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2025-06-07T16:41:28.000Z","updated_at":"2025-06-08T11:09:14.000Z","dependencies_parsed_at":"2025-06-08T12:32:16.300Z","dependency_job_id":null,"html_url":"https://github.com/Linbreux/FlockRunner","commit_stats":null,"previous_names":["linbreux/flockrunner"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Linbreux/FlockRunner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Linbreux%2FFlockRunner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Linbreux%2FFlockRunner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Linbreux%2FFlockRunner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Linbreux%2FFlockRunner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Linbreux","download_url":"https://codeload.github.com/Linbreux/FlockRunner/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Linbreux%2FFlockRunner/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259827667,"owners_count":22917714,"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","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":"2025-06-14T14:08:51.974Z","updated_at":"2025-06-14T14:08:56.001Z","avatar_url":"https://github.com/Linbreux.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"![FlockRunner logo](./logo.png)\n\n⚠️ WARNING: FlockRunner is currently in active development and not yet ready for production use. Expect frequent changes and potential instability. ⚠️\n\nFlockRunner is a powerful and highly customizable command executor designed to streamline your project workflows. It operates based on a simple YAML configuration file, giving you complete control over how your commands are organized and executed.\n\n# Installation\n\nCurrently only nix is supported:\n\n```\nnix profile install github:Linbreux/FlockRunner\n```\nor (running it directly)\n```\nnix run github:Linbreux/FlockRunner\n```\n\n# Development\n\n```\nnix develop\ncargo build\n```\n\n# The goal\n\nI wanted a straightforward method for managing and running tools tailored to individual projects. Despite the probable existence of numerous solutions, I decided to develop my own as a practical way to learn Rust.\n\nYou can place your flockrunner.yaml file right in your project's main folder. No matter where you're running FlockRunner from within your project's hierarchy, it'll automatically look for that configuration file by searching parent directories. The first one it finds on its way up is the one it'll use, ensuring you're always using the correct project configuration.\n\nA project file should look like the example.\n\n![example with the config bellow](./vhs/example.gif)\n```yaml\nproject: \"FlockRunner\"\n\nvariables:\n  greeting: \"Hello from FlockRunner!\"\n  user: \"Flock user\"\n\nshells:\n  # A shell definition to run commands inside a Docker container\n  docker-shell: docker run {{os}} sh -c \n  # An alternative shell using zsh\n  zsh: zsh -c \n\ncommands:\n  hello:\n    cmd: echo hello {{user}}\n    alias: \"h\"\n    help: \"Greets the current user.\"\n\n  time:\n    cmd: date\n    help: \"Shows the current system date and time.\"\n\n  create:\n    help: \"Creates a 'flock' directory and a 'test.txt' file within it.\"\n    cmd:\n      - echo \"Creating folder...\"\n      - mkdir flock\n      - \"echo new textfile \u003e flock/test.txt \u0026\u0026 echo Created textfile: flock/test.txt\"\n      - echo \"Done creating files, bye {{user}}!\"\n\n  clean:\n    help: \"Removes the 'flock' directory and its contents.\"\n    keep_going: true # Continues execution even if `rm` fails (e.g., directory doesn't exist)\n    cmd:\n      - rm -rf flock \u0026\u0026 echo \"Removed 'flock' directory!\" || echo \"'flock' directory not found or could not be removed.\"\n\n  greet_date:\n    help: \"Displays a greeting, the current date, and then exits with an error.\"\n    cmd: echo {{greeting}} \u0026\u0026 date \u0026\u0026 exit 1 # cmd will file because of exit code.\n\n  run_on_os:\n    help: \"Runs a command inside a specified Docker container (defaulting to fedora).\"\n    # Uses the 'docker-shell' defined above (shells)\n    shell: docker-shell\n    variables:\n      os: fedora # Overrides the project's 'os' variable for this command only\n    cmd:\n      - echo Running 'cat /etc/os-release' inside {{os}} container...\n      - cat /etc/os-release\n      - echo == Command executed within the {{os}} container ==\n\nsequence:\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinbreux%2Fflockrunner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinbreux%2Fflockrunner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinbreux%2Fflockrunner/lists"}