Executes commands in response to file modifications

Overview

watchexec

Build status Crates.io status Docs status

Software development often involves running the same commands over and over. Boring!

watchexec is a simple, standalone tool that watches a path and runs a command whenever it detects modifications.

Example use cases:

  • Automatically run unit tests
  • Run linters/syntax checkers

Features

  • Simple invocation and use
  • Runs on OS X, Linux, and Windows
  • Monitors current directory and all subdirectories for changes
    • Uses most efficient event polling mechanism for your platform (except for BSD)
  • Coalesces multiple filesystem events into one, for editors that use swap/backup files during saving
  • By default, uses .gitignore and .ignore to determine which files to ignore notifications for
  • Support for watching files with a specific extension
  • Support for filtering/ignoring events based on glob patterns
  • Launches child processes in a new process group
  • Sets the following environment variables in the child process:
    • If a single file changed (depending on the event type):
      • $WATCHEXEC_CREATED_PATH, the path of the file that was created
      • $WATCHEXEC_REMOVED_PATH, the path of the file that was removed
      • $WATCHEXEC_RENAMED_PATH, the path of the file that was renamed
      • $WATCHEXEC_WRITTEN_PATH, the path of the file that was modified
      • $WATCHEXEC_META_CHANGED_PATH, the path of the file whose metadata changed
    • If multiple files changed:
      • $WATCHEXEC_COMMON_PATH, the longest common path of all of the files that triggered a change
    • This can be disabled or limited with --no-environment and --no-meta
  • Optionally clears screen between executions
  • Optionally restarts the command with every modification (good for servers)
  • Does not require a language runtime

Anti-Features

  • Not tied to any particular language or ecosystem
  • Does not require a cryptic command line involving xargs

Usage Examples

Watch all JavaScript, CSS and HTML files in the current directory and all subdirectories for changes, running make when a change is detected:

$ watchexec --exts js,css,html make

Call make test when any file changes in this directory/subdirectory, except for everything below target:

$ watchexec -i target make test

Call ls -la when any file changes in this directory/subdirectory:

$ watchexec -- ls -la

Call/restart python server.py when any Python file in the current directory (and all subdirectories) changes:

$ watchexec -e py -r python server.py

Call/restart my_server when any file in the current directory (and all subdirectories) changes, sending SIGKILL to stop the child process:

$ watchexec -r -s SIGKILL my_server

Send a SIGHUP to the child process upon changes (Note: with using -n | --no-shell here, we're executing my_server directly, instead of wrapping it in a shell:

$ watchexec -n -s SIGHUP my_server

Run make when any file changes, using the .gitignore file in the current directory to filter:

$ watchexec make

Run make when any file in lib or src changes:

$ watchexec -w lib -w src make

Run bundle install when the Gemfile changes:

$ watchexec -w Gemfile bundle install

Installation

All platforms

Cargo

Requires Rust 1.38 or later.

$ cargo install watchexec

Pre-built

Use the GitHub Releases tab to obtain the tarball/zipfile appropriate for your platform and architecture, extract it, and place it in your PATH.

macOS

Homebrew

$ brew install watchexec

Webi

$ curl -sS https://webinstall.dev/watchexec | bash

Linux

PRs for packaging in unsupported distros are welcome.

Debian

A deb package is available for amd64 architectures in the GitHub Releases.

Arch Linux

Available in the community repository:

$ pacman -S watchexec

Webi

$ curl -sS https://webinstall.dev/watchexec/ | bash

Windows

Scoop

#> scoop install watchexec

Chocolatey

#> choco install watchexec

Webi

#> curl.exe -A MS https://webinstall.dev/watchexec | powershell

Shell completions

Currently available shell completions:

  • zsh: completions/zsh should be installed to /usr/share/zsh/site-functions/_watchexec

Credits

  • notify for doing most of the heavy-lifting
  • globset for super-fast glob matching
Comments
  • Issues with `--ignore` option

    Issues with `--ignore` option

    I'm testing the command with --ignore on a directory and seems to be not working at all.

    The system is: Linux * Ubuntu SMP Fri Jul 13 07:23:34 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

    Besides passing the directory name (from the current directory), I have also tried glob patterns for the specific files. No luck.

    Also, doing so, realized that the documentation (https://github.com/watchexec/watchexec) is not clear at all about what kind of "pattern" it's supporting. Would be great to improve that to be clear if it's glob, regex, or something else.

    opened by behnam 21
  •  Can't pass argument containing a whitespace to underlying command without quoting the entire command

    Can't pass argument containing a whitespace to underlying command without quoting the entire command

    See difference in following:

    $ watchexec /usr/bin/printf '[%s]' foo 'bar baz'
    [foo][bar][baz]
    ^C
    

    vs

    $ /usr/bin/printf '[%s]' foo 'bar baz'                                                                                                                          
    [foo][bar baz]
    
    not a bug documentation 
    opened by keras 21
  • Lib: Watchexec simply hangs and isn't responsive

    Lib: Watchexec simply hangs and isn't responsive

    Version: watchexec = "=2.0.0-pre.14" OS: Linux (Ubuntu)

    Code
      pub(crate) async fn watch(opt: Options) -> Result<()> {
        let mut init = InitConfig::default();
        init.on_error(PrintDebug(std::io::stderr()));
    
        let mut runtime = RuntimeConfig::default();
        runtime.file_watcher(Watcher::Poll(Duration::from_millis(100))); // the same without this line
    
        let we = Watchexec::new(init, runtime.clone())?;
    
        async {
            println!("starting... (this is printed)");
        }.await;
    
        runtime.on_action(move |action: Action| {
            dbg!(&action);
            async { Ok::<(), Infallible>(()) }
        });
    
        we.main().await.context("run watchexec main loop")??;
        Ok(())
    }
    

    Expected: action should be printed whenever something changes in the directory Actual: nothing happens. ctrl-c is ignored, and I have to kill -9 the process to get it to exit.

    Not sure what I'm doing wrong here...

    question 
    opened by SuperCuber 18
  • Too many open files (os error 24) (again)

    Too many open files (os error 24) (again)

    lsb_release -a
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 21.10
    Release:        21.10
    Codename:       impish
    
    watchexec --version
    watchexec 1.18.6
    

    The command

    watchexec -p --exts md,css -f '*/justfile' -f '*/.env' "just run"
    

    still fails with

    Error: watchexec::critical::elevated_runtime
    
      × elevated: Native watcher failed to instantiate: Too many open files (os error 24)
      ├─▶ Native watcher failed to instantiate: Too many open files (os error 24)
      ╰─▶ Too many open files (os error 24)
    

    I wrote a quick diagnostic shell function that displays values for all related parameters (to my knowledge). I cannot find any possible explanation for why error 24 would be raised.

    See for yourself:

    fs_ressources_diag(){
        file_nr="$(awk '{print $1}' /proc/sys/fs/file-nr)"
        file_max="$(cat /proc/sys/fs/file-max)"
        h_ulimit="$(ulimit -Hn)"
        s_ulimit="$(ulimit -Sn)"
        inotify_max="$(cat /proc/sys/fs/inotify/max_user_watches)"
        cat <<EOF
    System
        Number of open file handles: current=${file_nr} / max=${file_max}
    Current process
        Maximum number of open file handles: hard=${h_ulimit} / soft=${s_ulimit}
    Inotify
        fs.inotify.max_user_watches=${inotify_max}
    EOF
    }
    
    fs_ressources_diag
    
    System
        Number of open file handles: current=59180 / max=9223372036854775807
    Current process
        Maximum number of open file handles: hard=1000000 / soft=1000000
    Inotify
        fs.inotify.max_user_watches=1048576
    
    not a bug OS: Linux improvement has fix 
    opened by ngirard 16
  • watchexec will jam up if executed in a leaf dir of a very large directory

    watchexec will jam up if executed in a leaf dir of a very large directory

    • 1.18.11
    • Arch Linux

    Scenario is that my home dir has a lot of code in it and probably millions of files all in all. Running watchexec inside any leaf directory, even if it's empty, even using a specific path, will cause it to scan apparently every file inside my home dir. I don't want it to do that! I just want it to look at the current dir and nothing else.

    Excerpt of me running watchexec -w . -vvv in ~/somewhere/very/deep/git/repo will result in many millions of lines like these:

    2022-04-12T00:07:31.160581Z TRACE discover_file{path="/home/svenstaro/go/pkg/mod/github.com/hashicorp/[email protected]/tfexec/internal/e2etest/testdata/pre_011_syntax/.hgignore" applies_in=Some("/home/svenstaro/go/pkg/mod/github.com/hashicorp/[email protected]/tfexec/internal/e2etest/testdata/pre_011_syntax") applies_to=Some(Mercurial)}: watchexec::ignore::files: new
    2022-04-12T00:07:31.160607Z TRACE discover_file{path="/home/svenstaro/go/pkg/mod/github.com/hashicorp/[email protected]/tfexec/internal/e2etest/testdata/pre_011_syntax/.hgignore" applies_in=Some("/home/svenstaro/go/pkg/mod/github.com/hashicorp/[email protected]/tfexec/internal/e2etest/testdata/pre_011_syntax") applies_to=Some(Mercurial)}: watchexec::ignore::files: found nothing
    2022-04-12T00:07:31.160615Z TRACE discover_file{path="/home/svenstaro/go/pkg/mod/github.com/hashicorp/[email protected]/tfexec/internal/e2etest/testdata/pre_011_syntax/.hgignore" applies_in=Some("/home/svenstaro/go/pkg/mod/github.com/hashicorp/[email protected]/tfexec/internal/e2etest/testdata/pre_011_syntax") applies_to=Some(Mercurial)}: watchexec::ignore::files: close time.busy=27.0µs time.idle=7.44µs
    2022-04-12T00:07:31.160632Z TRACE visit_path{path="/home/svenstaro/go/pkg/mod/github.com/hashicorp/[email protected]/tfexec/internal/e2etest/testdata/non_default_statefile_014"}: watchexec::ignore::files: new
    2022-04-12T00:07:31.160649Z TRACE visit_path{path="/home/svenstaro/go/pkg/mod/github.com/hashicorp/[email protected]/tfexec/internal/e2etest/testdata/non_default_statefile_014"}:check_dir{path="/home/svenstaro/go/pkg/mod/github.com/hashicorp/[email protected]/tfexec/internal/e2etest/testdata/non_default_statefile_014"}: watchexec::ignore::filter: new
    

    Notice how those are entirely unrelated paths.

    Sadly this renders watchexec completely useless as it never gets to watch the five or so files I actually want it to watch.

    bug 
    opened by svenstaro 13
  • Modified file appears 3 times in WATCHEXEC_WRITTEN_PATH, cannot debounce

    Modified file appears 3 times in WATCHEXEC_WRITTEN_PATH, cannot debounce

    Using Watchexec 1.15.1, then 1.18.4 on Ubuntu 21.10.

    The following invocation used to work flawlessly using v1.15.1 when a markdown file was modified:

    watchexec -p -w ~/Obsidian -e md -i './at/' "just handle_md"
    

    Now, using v1.18.4, when f.md is modified, WATCHEXEC_WRITTEN_PATH contains f.md:f.md:f.md. I've tried using --debounce, with a value ranging from 50 to 1000, to no avail.

    bug not a bug has workaround has fix 
    opened by ngirard 13
  • Regression: SIGINT not handled correctly in new watchexec version

    Regression: SIGINT not handled correctly in new watchexec version

    On old version of watchexec-cli, when I used Ctrl+C to send SIGINT, it would shut down the watchexec process and clean up the child process.

    On the latest version (I assume since 1.18), this behavior doesn't work. I didn't investigate deeply what happens to the signal, but in my case, neither watchexec nor the child process appear to respond to SIGINT when I press Ctrl+C.

    Right now, I stop the process (Ctrl+Z), and then use kill, but it seems like that approach leaves a process around, using my desired port (I'm running a local dev server).

    I'd like to use the updated version, however this regression prevents doing so.

    bug 
    opened by kurtbuilds 13
  • gitignore and globsets

    gitignore and globsets

    Handling gitignore correctly is hard, and has been one of the larger sources of bugs in my own project. I'm currently working on splitting the gitignore logic into its own separate crate, including support for parent directories, global ignores and even .git/info/exclude. It will also be stupidly fast.

    In the interim, you might find the globset crate helpful, which I built explicitly for this purpose. When you get users that work on projects with large .gitignore files, they will thank you for using globset. :-)

    Anyway, just thought I'd give you a friendly heads up. If you like, I can ping you again when I get the gitignore logic split out. I'm also reaching out to find out if you have any peculiar use cases that might be worth considering as I go through the process!

    In any case, nice project!

    opened by BurntSushi 13
  • Why these commands cannot be executed?

    Why these commands cannot be executed?

    Is your feature request related to a problem? Please describe.

    I'm using modd which allow for commands like:

    daemon: go build -o main.exe ./cmd/main && ./main.exe
    

    I wanna use watchexec but with every option I tried I cannot run the second command (./main.exe), with or without shell it block on the first one only (go build).

    Is there a way to accomplish this?

    Even if you try the command below the "Hello" never gets printed:

    watchexec --shell=pwsh.exe -- dir && echo "Hello"

    Why?

    not a bug question 
    opened by frederikhors 12
  • Debounced Watch

    Debounced Watch

    How open are you to the idea of a batched/debounced watch, where the user specifies a time period (for example) 500milliseconds and the following behavior would occur:

    User edits a file at 0ms, initiating the 500ms countdown. At 500ms, the watchexec executes its target command.

    User edits a file at 0ms, initiating the 500ms countdown. User edits a file at 100ms, resetting the 500ms countdown. User edits a file at 150ms, resetting the 500ms countdown. Finally, after no use, at 650ms, the watchexec executes the target command.

    This would be valuable for me for use in rsync, for example, on a git clone a ton of files are edited at once, and I would not want the target rsync to be executed until the folder is cloned.

    To tie this to my other issue here - https://github.com/mattgreen/watchexec/issues/11, perhaps the debounced watch can add a comma separated string of all of the edited files at $WATCHEXEC_FILE.

    If you are not open to such a thing, that would be fine too, I just would like to know in case I have time at some point to do a PR.

    opened by craftytrickster 12
  • Regression: -f '*/file' should match 'file'

    Regression: -f '*/file' should match 'file'

    With watchexec 1.15.1, this used to work:

    watchexec -p -f '*/justfile' -f '*/.env' "do domething"
    

    With 1.18.6, it requires rewriting to:

    watchexec -p -f '/justfile' -f '/.env' "do domething"
    
    bug has fix 
    opened by ngirard 11
  • Update git-config requirement from 0.12.0 to 0.14.0 in /crates/ignore-files

    Update git-config requirement from 0.12.0 to 0.14.0 in /crates/ignore-files

    Updates the requirements on git-config to permit the latest version.

    Release notes

    Sourced from git-config's releases.

    git-config v0.14.0

    A maintenance release without user-facing changes.

    Commit Statistics

    • 1 commit contributed to the release.
    • 11 days passed between releases.
    • 0 commits were understood as conventional.
    • 0 issues like '(#ID)' were seen in commit messages

    Commit Details

    • Uncategorized
      • prepare changelogs prior to release (30d8ca1)
    Changelog

    Sourced from git-config's changelog.

    0.14.0 (2022-08-17)

    Changed

    • Invert behaviour to open::Options::strict_config(), with lenient being the default. This means API users will get libgit2 behaviour but commands like gix can change options to emulate git behaviour.

    New Features

    • --cat-file flag for gix rev parse to cat instead of resolving.
    • gix rev previous-branches subcommand

    Changed (BREAKING)

    • ein tools to ein tool for as it's more intuitive

    New Features (BREAKING)

    • gix rev resolve --explain

    Commit Statistics

    • 21 commits contributed to the release over the course of 26 calendar days.
    • 26 days passed between releases.
    • 5 commits were understood as conventional.
    • 1 unique issue was worked on: #427

    Commit Details

    • #427
      • --cat-file flag for gix rev parse to cat instead of resolving. (b83f6bd)
      • gix rev resolve --explain (c5846e0)
      • gix rev previous-branches subcommand (e972aad)
      • support for parsing multiple specs in one invocation (84b5448)
      • support overriding cache settings with environment variables in gix (b838202)
    • Uncategorized
      • Merge branch 'core-abbrev-handling' (dbaff13)
      • Control which command is lenient or not. That way gix-config can be lenient. (6a9c58f)
      • Invert behaviour to open::Options::strict_config(), with lenient being the default. (0235111)
      • Merge branch 'main' into remote-ls-refs (c4bf958)
      • Merge branch 'index-write-refactor' (805f432)
      • ein tools to ein tool for as it's more intuitive (edf73dd)
      • Merge branch 'main' into write-index-v2 (a938986)

    ... (truncated)

    Commits
    • 5ac9fbe Release git-features v0.26.0, git-actor v0.16.0, git-attributes v0.8.0, git-o...
    • 30d8ca1 prepare changelogs prior to release
    • fed38c9 fix: improve error message for when an invoked transport program can't be found.
    • f0997bf fix: assure processing thread is up before continuing.
    • c60c89d parse additional ssh messaegs into io-errors.
    • efe0c13 Set a stance regarding lifetimes usage.
    • 5a97bb5 adapt to changes in git-worktree
    • d7ee622 change!: Simplify Cache by removing its lifetime.
    • 4b8abb0 feat: display the underlying permission denied error as source when failng ha...
    • 511ed00 make fmt
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Update clearscreen requirement from 1.0.9 to 2.0.0 in /crates/lib

    Update clearscreen requirement from 1.0.9 to 2.0.0 in /crates/lib

    Updates the requirements on clearscreen to permit the latest version.

    Release notes

    Sourced from clearscreen's releases.

    v2.0.0

    • Don't use BORS.
    • Update dependencies.
    • Update to nix 0.26.
    • Change MSRV policy to stable-5 supported, and bump MSRV to 1.60.0.
    • Handle tmux explicitly (#9).
    • Fall back to hardcoded sequence if terminfo is not available (#9).
    Changelog

    Sourced from clearscreen's changelog.

    v2.0.0 (2022-12-28)

    • Don't use BORS.
    • Update dependencies.
    • Update to nix 0.26.
    • Change MSRV policy to stable-5 supported, and bump MSRV to 1.60.0.
    • Handle tmux explicitly (#9).
    • Fall back to hardcoded sequence if terminfo is not available (#9).

    v1.0.10 (2022-06-01)

    • Use BORS.
    • Update to nix 0.24, limit features to only those used (#6).

    v1.0.9 (2021-12-02)

    • Change CI test to test Windows 10 detection with a manifested test executable.
    • Clarify in documentation the expected behaviour of is_windows_10() and what is or not a bug.

    v1.0.8 (2021-12-02) (yanked)

    • Stop checking powershell's PackageManagement capability as a Win10 check (#5).

    v1.0.7 (2021-08-26)

    • Flush after E3 sequence in Terminfo (#4).

    v1.0.6 (2021-07-22)

    • Omit unsupported UTF8 input flag on non-Linux.

    v1.0.5 (2021-07-22)

    • Update to nix 0.22.

    v1.0.4 (2021-05-22)

    • Fix #1: need to flush after writing sequences.

    v1.0.3 (2021-05-08)

    • Drop unused log dependency.
    • Generalise iTerm workaround from 1.0.1 to default behaviour on macOS when the TERM starts with xterm and the terminfo does not have E3.
    • Hide WindowsConsoleClear and WindowsConsoleBlank under an undocumented feature as they are buggy/do not work as per my testing on Win10. WindowsVtClear and Cls are sufficient for clear.

    v1.0.2 (2021-04-29)

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Update command-group requirement from 1.0.8 to 2.0.1 in /crates/lib

    Update command-group requirement from 1.0.8 to 2.0.1 in /crates/lib

    Updates the requirements on command-group to permit the latest version.

    Changelog

    Sourced from command-group's changelog.

    v2.0.1 (2022-12-28)

    • Fix bug on Windows where the wrong pointer was being null checked, leading to timeout errors. (#13)

    v2.0.0 (2022-12-04)

    • Increase MSRV to 1.60.0 and change policy for increasing it (no longer a breaking change).
    • Wait for all processes in the process group, avoiding zombies. (#7)
    • Update nix to 0.26 and limit features. (#8)

    v1.0.8 (2021-10-16)

    • Bugfix: compiling would fail when Tokio was missing the io-util feature (not io-std).

    v1.0.7 (2021-10-16) (yanked)

    • Bugfix: compiling would fail when Tokio was missing the io-std feature.

    v1.0.6 (2021-08-26)

    • Correctly handle timeouts on Windows. (#2, #3)

    v1.0.5 (2021-08-13)

    • Internal: change usage of feature = "tokio" to feature = "with-tokio".
    • Documentation: remove wrong mention of blocking reads on AsyncGroupChild::wait_with_output().

    v1.0.4 (2021-07-26)

    New: Tokio implementation, gated on the with-tokio feature.

    v1.0.3 (2021-07-21)

    Bugfix: GroupChild::try_wait() would error if called after a child exited by itself.

    v1.0.2 (2021-07-21)

    Bugfix: GroupChild::try_wait() and ::wait() could not be called twice.

    v1.0.1 (2021-07-21)

    Implement Send+Sync on GroupChild on Windows, and add a Drop implementation to close handles too (whoops). Do our best when .into_inner() is used...

    v1.0.0 (2021-07-20)

    Initial release

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Bump taiki-e/install-action from 1 to 2

    Bump taiki-e/install-action from 1 to 2

    Bumps taiki-e/install-action from 1 to 2.

    Release notes

    Sourced from taiki-e/install-action's releases.

    2.0.0

    This release implements a mechanism to automatically track the latest version of the tool on our end. (#27) Hopefully, this will avoid situations such as "new version of the tool has been released, but the maintainer has not been aware of it for a number of months". This also makes it easier to add support for new tools.

    This release also includes the following improvements:

    • Verify SHA256 checksums for downloaded files in all tools installed from GH releases. (#27)

    • Support omitting the patch/minor version in all tools installed from GH releases. (#27)

      For example:

      - uses: taiki-e/install-action@v2
        with:
          tool: [email protected]
      

      You can also omit the minor version if the major version of tool is 1 or greater.

    • Support just. (#34)

    • Support dprint. (#34)

    Note: This release is considered a breaking change because installing on versions not yet recognized by the action or on pre-release versions will no longer work with this release. (They were never officially supported, but they could work before.) Please submit an issue if you need these supports again.

    1.17.3

    • Update wasmtime@latest to 4.0.0.

    1.17.2

    • Update mdbook@latest to 0.4.25.

    1.17.1

    • Update mdbook@latest to 0.4.23.
    • Support mdbook on Linux (musl).
    • Update cargo-llvm-cov@latest to 0.5.3.

    1.17.0

    • Update protoc@latest to 3.21.12.
    • Support aarch64 self-hosted runners (Linux, macOS, Windows).
    • Improve support for Fedora/RHEL based containers/self-hosted runners.

    1.16.0

    • Update cargo-binstall@latest to 0.18.1. (#32, thanks @​NobodyXu)

    • If the host environment lacks packages required for installation, such as curl or tar, install them if possible.

      It is mainly intended to make the use of this action easy on containers or self-hosted runners, and currently supports Debian-based distributions (including Ubuntu) and Alpine.

    ... (truncated)

    Changelog

    Sourced from taiki-e/install-action's changelog.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • watchexec stopped working or listening on files

    watchexec stopped working or listening on files

    Please delete this template text before filing, but you need to include the following:

    • Watchexec's version: 1.20.6
    • The OS you're using: macOS 13.1
    • A log with -vvv --log-file ../watchexec.log (if it has sensitive info you can email it at [email protected] — do that after filing so you can reference the issue ID)

    Not sure how to get above. Where is the location of the .log file, I can't find it.

    • A sample command that you've run that has the issue

    On this repo: https://github.com/nikitavoloboev/ts

    If I run:

    ❯ deno run main.ts
    test
    

    It works. However if I run:

    image

    Nothing happens. Or I usually run it like:

    watchexec --restart --exts ts "tput reset && deno run main.ts"

    This does nothing too now, not sure why.

    bug 
    opened by nikitavoloboev 4
Releases(v1.20.6)
Owner
null
A fast duplicate file finder

The Directory Differential hTool DDH traverses input directories and their subdirectories. It also hashes files as needed and reports findings. The H

Jon Moroney 384 Dec 24, 2022
Multiple USB File Flasher

Popsicle Popsicle is a Linux utility for flashing multiple USB devices in parallel, written in Rust. Build Dependencies If building the GTK front end,

Pop!_OS 476 Dec 30, 2022
A tool for quickly switching between different file configurations, using symbolic links.

config-loader A tool for quickly switching between different file configurations, using symbolic links. Usage To use it, download the latest release f

Zacchary Dempsey-Plante 3 Aug 22, 2022
JackTheBox allows for client & server modifications to s&box independent of the current gamemode

JackTheBox allows for client & server modifications to s&box independent of the current gamemode (or even in the absence of a gamemode).

dank 5 Sep 27, 2022
Rust program to monitor Windows 10 Registry keys for changes or modifications.

RegMon This Rust program monitors changes to multiple registry keys in Windows 10 and writes the changes to a text file. It also periodically sends a

0x44F 3 Jan 16, 2023
A stupid macro that compiles and executes Rust and spits the output directly into your Rust code

inline-rust This is a stupid macro inspired by inline-python that compiles and executes Rust and spits the output directly into your Rust code. There

William 19 Nov 29, 2022
Tests a wide variety of N64 features, from common to hardware quirks. Written in Rust. Executes quickly.

n64-systemtest Tests a wide variety of N64 features, from common to hardware quirks. Written in Rust. Executes quickly. n64-systemtest is a test rom t

null 37 Jan 7, 2023
A discord bot that safely executes whatever rust you throw at it. Remote code execution as a service

RustBot Bot is still under development and not ready for production use RustBot is a discord bot that executes whatever rust code you throw at it. In

Conner Bradley 7 Jan 3, 2022
Workflows make it easy to browse, search, execute and share commands (or a series of commands)--without needing to leave your terminal.

Workflows The repo for all public Workflows that appear within Warp and within commands.dev. To learn how to create local or repository workflows, see

Warp 369 Jan 2, 2023
Workflows make it easy to browse, search, execute and share commands (or a series of commands)--without needing to leave your terminal.

Workflows The repo for all public Workflows that appear within Warp and within commands.dev. To learn how to create local or repository workflows, see

Warp 227 Jun 1, 2022
A small CLI tool to query ArcGIS REST API services, implemented in Rust. The server response is returned as pretty JSON.

A small CLI tool to query ArcGIS REST API services, implemented in Rust. The server response is returned as pretty JSON.

Andrew Vitale 2 Apr 25, 2022
RustHunter is a modular incident response framework to build and compare environmental baselines

RustHunter is a modular incident response framework to build and compare environmental baselines. It is written in Rust and uses Ansible to collect data across multiple hosts.

Giovanni Pecoraro 13 Dec 12, 2022
serde support for http crate types Request, Response, Uri, StatusCode, HeaderMap

serde extensions for the http crate types Allows serializing and deserializing the following types from http: Response Request HeaderMap StatusCode Ur

Andrew Toth 3 Nov 1, 2023
run commands when a file is modified or upon receiving TCP/UDP packets

Witness Command line utility which lets you execute arbitrary commands in response to: File changes UDP packets and TCP connections Installation Using

Christofer Nolander 3 May 23, 2022
Tool written in rust to read for file changes and accordingly run build commands.

Sniff A simple tool written in rust to read for file changes and accordingly run build commands. Note this tool is for linux and linux only. If it hap

Aakash Sen Sharma 4 Oct 2, 2022
:stars: Manage your shell commands.

Pueue Pueue is a command-line task management tool for sequential and parallel execution of long-running tasks. Simply put, it's a tool that processes

Arne Beer 3.3k Jan 8, 2023
Remember me my commands

mme is a search tool that helps you to print commands and their description using a custom file. Installation The binary name for rememberme is mme. A

Roberto 27 Dec 23, 2022
New commands for Dockerfile

Dockerfile+ This project provides Dockerfile syntax extensions that have been rejected by the moby project or haven't been addressed in a long time. C

Ximo Guanter 171 Dec 12, 2022
Turn static CLI commands into TUIs with ease

lazycli Turn static CLI commands into TUIs with ease Demo: Usage Pick a command that spits out either a list or table of content, like ls, docker ps,

Jesse Duffield 255 Dec 20, 2022
🐢 Atuin replaces your existing shell history with a SQLite database, and records additional context for your commands

Atuin replaces your existing shell history with a SQLite database, and records additional context for your commands. Additionally, it provides optional and fully encrypted synchronisation of your history between machines, via an Atuin server.

Ellie Huxtable 4.6k Jan 1, 2023