{"id":20119859,"url":"https://github.com/shellshape/fw","last_synced_at":"2026-06-08T19:31:45.922Z","repository":{"id":157081016,"uuid":"633007282","full_name":"shellshape/fw","owner":"shellshape","description":"A very simple tool to watch files and execute commands on transitions.","archived":false,"fork":false,"pushed_at":"2024-05-15T21:21:23.000Z","size":22,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-04T09:29:57.620Z","etag":null,"topics":["cli","file-watcher","filewatcher","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/shellshape.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}},"created_at":"2023-04-26T15:22:59.000Z","updated_at":"2023-08-19T15:26:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"82232a05-5951-44d8-9657-856f179ed76b","html_url":"https://github.com/shellshape/fw","commit_stats":null,"previous_names":["shellshape/fw"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/shellshape/fw","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellshape%2Ffw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellshape%2Ffw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellshape%2Ffw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellshape%2Ffw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shellshape","download_url":"https://codeload.github.com/shellshape/fw/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellshape%2Ffw/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34078019,"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-08T02:00:07.615Z","response_time":111,"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":["cli","file-watcher","filewatcher","rust"],"created_at":"2024-11-13T19:17:28.672Z","updated_at":"2026-06-08T19:31:45.892Z","avatar_url":"https://github.com/shellshape.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fw\n\nA very simple tool to watch files and execute commands on transitions.\n\nYou can download the pre-built binaries from the [Releases page](https://github.com/zekroTJA/fw/releases).\n\nIf there is no binary for your system configuration available, you can also use cargo to install the application.\n```\ncargo install --git https://github.com/zekrotja/fw fw\n```\n\n## Why?\n\nThis tool is mostly purpose built to simplify and speed up some task during my development at work by restarting services when re-building modules. But still the target of the project is to make it as general purpose as possible, so that other automation tasks can be realized using this tool. Feel free to contribute ideas and bugs via [the issues](https://github.com/zekroTJA/fw/issues) or by creating [a pull request](https://github.com/zekroTJA/fw/compare).\n\n## Configuration\n\nConfiguration can be provided as `TOML`, `YML` or `JSON` file either in the current working directory as `fw.*` or in the users home config directory, which maps to the following directories depending on the OS.\n- Linux: `$HOME/.config/fw/config.*`\n- macOS: `$HOME/Library/Application Support/de.zekro.fw/config.*`\n- Windows: `%APPDATA%/zekro/fw/config.*`\n\nYou can also pass a configuration via the `--config` parameter.\n\nFollowing, you can see an example configuration in `YML` format.\n```yml\n# The interval in which files will be checked\n# for changes in milliseconds.\n# optional\n# default: 1000\ncheck_interval_ms: 1000\n\n# Conbinations of targets with commands\n# which are executed for each target if\n# it matches.\n# required\nactions:\n  # ID of the action\n  myaction:\n    # Define commands that shall run on the tool\n    # startup for this action. This overwrites\n    # run_commands_on_startup to true.\n    startup_commands:\n      - \"killall -s TERM myapp\"\n    # Set this to true to run the defined action\n    # commands on startup of the tool.\n    run_commands_on_startup: true\n    # List of files to be watched and\n    # transitions which will trigger the\n    # command execution.\n    # required\n    targets:\n      - \"some/path/file\"\n        # The file path of the watched file.\n        # required\n      - path: \"another/path/file\"\n        # The list of transitions on the file\n        # triggering the command execution.\n        # optional\n        # default: all transitions\n        transitions:\n          - \"created\"\n          - \"modified\"\n          - \"deleted\"\n      - path: \"/last/path/file\"\n    commands:\n      - 'sh -c \"echo hello world!\"' \n        # The command to be executed.\n        # required\n      - cmd: \"cargo build\"\n        # The directory in which the command\n        # will be executed.\n        # optional\n        # default: \"./\"\n        cwd: \"/dir/to/app\"\n        # Defaultly, the next command in line\n        # will only be executed after the previous\n        # one has resulted. When this is set to\n        # true though, the next command is\n        # executed immediately after calling \n        # the command and the current command\n        # is executed in the background.\n        # optional\n        # default: false\n        async: true\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshellshape%2Ffw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshellshape%2Ffw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshellshape%2Ffw/lists"}