Skip to content

pmuellr/wr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NAME

wr -- watch files and run a command when they change

SYNOPSIS

wr [-cvV] command [file ...]

DESCRIPTION

wr will watch the set of files and directories specified on the command line, and run the specified command when any of the files changes. For each file operand which is a directory, all the files in the directory (recursively) will be watched.

If no files are specified, it's as if you passed "." as the file parameter.

The following options are available:

-c --chime minutes

Write a diagnostic message after minutes have elapsed since last running a command, to remind you wr is running. The default is 5 minutes. Use the value 0 to disable the chime.

-v --verbose

Generate additional diagnostic information.

--exec

Use exec instead of spawn to run the command.

-p --poll seconds

Use a polling file watcher. The default is to use a non-polling file watcher. The non-polling file watcher may have a relatively small maximum number of files it can watch (200), but the polling file watcher has no maximum. The polling file watcher may incur delays between a file changing and the command running, compared to the non-polling file watcher.

-V

Display the version number and exit.

-? -h

Display help.

EXAMPLES

The following is how to run make when any file in the current directory changes:

    wr make

More likely you can whittle the list of source files checked a bit. The following will run make any file in the src, doc or test directories changes:

    wr make src doc test

To run a command with arguments, quote the command you want to run. The following will run the command "echo a file changed" when any file in the current directory changes:

    wr "echo a file changed"

DIAGNOSTICS

wr will not normally exit. Use ctrl-c or equivalent to kill the process from the command-line.

Diagnostic information from wr will be written to stderr.

ENVIRONMENT

If the current directory has a .wr file in it, that file is assumed to have the contents of a wr invocation in it. Options, option/value pairs, the command to run, and each file to be watched should be specified on separate lines. The file may contain blank lines or lines starting with the # character, which are considered comments.

The stdout and stderr from the command being run are passed directory to wr's stdout and stderr. stdin for the command will not be available for the command.

The command will be run in either spawn or exec mode, as determined by command-line options. Here are the differences:

exec:

  • the command will not be parsed, as will be run as given
  • should handle i/o redirection shell operators
  • stdout and stderr output will be buffered until the command is complete

spawn:

  • the command will be parsed into space separated tokens, probably misinterpreting any quotes you have in your command
  • will not handle i/o redirection shell operators
  • stdout and stderr output will not be buffered

HISTORY

wr is a port of Patrick Mueller's run-when-changed.py script to node.

2012-05-03: version 1.2.0

2012-05-03: version 1.2.0

  • issue 8 - add elapsed time to success and failure messages
  • fixed bug where wr fired off it's command when the access time changed on a file

2012-01-11: version 1.1.0

  • issue 1 - chime should print the time
  • issue 2 - chime should default to 5 minutes
  • issue 3 - .wr file parser should accept option/value on a single line
  • issue 5 - provide option to use stat-based polling
  • issue 6 - use spawn instead of exec to run commands
  • issue 7 - colorize stdout and stderr

2012-01-10: version 1.0.1

  • fixed some stupid bugs

2012-01-09: version 1.0.0

  • initial release

About

watch files and run a command when they change

Resources

Stars

Watchers

Forks

Packages

No packages published