PullWatch logo

PullWatch ShipDigital

Use this command to install PullWatch:
winget install --id=ShipDigital.PullWatch -e

A tool that watches a git repository for changes and runs a specified command

PullWatch is a tool designed to watch a Git repository for changes and execute a specified command upon detecting updates. This automation saves time by eliminating manual checks and ensures commands run automatically when changes occur.

Key features of PullWatch include:

  • Configurable poll intervals for flexible monitoring.
  • Graceful process management to stop tasks gently.
  • Support for different Git directories, allowing versatile setup.
  • Smart logging levels to control output verbosity.
  • Proper signal handling for robust operation.

Ideal for developers and DevOps engineers working with Git repositories, PullWatch streamlines workflows by automating responses to repository changes. It can be installed via winget, ensuring easy setup across environments.

This tool enhances productivity by providing a reliable way to automate tasks in response to code updates.

README

             _ _                      _       _
            | | |                    | |     | |
 _ __  _   _| | |________      ____ _| |_ ___| |__
| '_ \| | | | | |______\ \ /\ / / _` | __/ __| '_ \
| |_) | |_| | | |       \ V  V / (_| | || (__| | | |
| .__/ \__,_|_|_|        \_/\_/ \__,_|\__\___|_| |_|
| |
|_|

pull-watch -- ./do_something_when_your_git_repo_changes.sh

A hobbyist-grade tool that watches a git repository for changes and runs a specified command when changes are detected.

Your friendly neighborhood Git repository watchdog! ๐Ÿ• Guards your watch, your time, avoids wasting it, get it? No? Never mind. I am just a dad. It's muscle memory at this point!

Which way?

> How it started: ๐Ÿ”„ git pull && ./run.sh && CTRL/CMD+C && git pull && ./run.sh && CTRL/CMD+C && โ™พ๏ธ... ๐Ÿ˜ต > > How it's going: pull-watch -- ./run.sh

โœจ Features

  • ๐Ÿ•’ Configurable poll interval (because sometimes you need a coffee break)
  • ๐ŸŽฏ Graceful process management (no rough handling here!)
  • ๐Ÿ“ Support for different git directories (home is where your .git is)
  • ๐Ÿ“ข Smart logging levels (quiet, normal, and verbose - you choose how chatty it gets!)
  • ๐Ÿ›ก๏ธ Proper signal handling (catches signals like a pro)
  • โฑ๏ธ Context-aware git operations with timeouts (patience is a virtue, but timeouts are better)
  • ๐Ÿ”„ Run on start option (for the eager beavers)
  • โŒš Optional timestamps in logs (when you need to know when things happened)

๐Ÿš€ Installation

Quick and easy - just like ordering pizza!

Go Install

go install github.com/ship-digital/pull-watch@latest

Homebrew

brew tap ship-digital/tap
brew install pull-watch

NPM / NPX

You can install it globally:

npm install -g @ship-digital/pull-watch

Or run it directly using npx:

npx @ship-digital/pull-watch -- 

๐ŸŽฎ Usage


  Usage: pull-watch [options] -- 

   Watch git repository for remote changes and run commands.

   It's like: 'git pull && ' but with polling and automatic process management.

  Options:
    -git-dir string
      	Git repository directory (default ".")
    -graceful
      	Try graceful stop before force kill
    -interval duration
      	Poll interval (e.g. 15s, 1m) (default 15s)
    -no-restart
      	Pull changes without restarting the command, useful if the command has a built-in auto-reload feature
    -quiet
      	Show only errors and warnings
    -run-on-start
      	Run command on startup regardless of git state
    -stop-timeout duration
      	Timeout for graceful stop before force kill (default 5s)
    -timestamp
      	Show timestamps in logs
    -verbose
      	Enable verbose logging
    -version
      	Show version information

๐ŸŒŸ Examples

Watch current directory and restart a server when changes are detected:

Keep your server fresh and up-to-date!

pull-watch -- go run main.go

Watch specific directory with custom interval:

For when you want to keep an eye on things from a distance...

pull-watch -git-dir /path/to/repo -interval 1m -- npm start

Force kill processes (default):

The "no time for chitchat" approach

pull-watch -- node server.js

Graceful stop before force kill:

For the gentler souls among us

pull-watch -graceful -stop-timeout 10s -- ./my-server

Watch with different logging levels:

# Default mode - shows important info
pull-watch -- npm start

# Quiet mode - shows only errors and warnings
pull-watch -quiet -- npm start

# Verbose mode - shows all the details
pull-watch -verbose -- npm start

Made with โค๏ธ by @deblasis for developers who appreciate a touch of automation in their lives.

Versions
1.7.13
1.7.0
1.5.4
1.0.1
Website
License