README
¶
Very simple Compile Daemon for Go 
Watches your .go files in a directory and invokes go build
if
a file changed. Nothing more.
Usage:
$ ./CompileDaemon -directory=yourproject/
Command Line Options
Option | Default | Description |
---|---|---|
actions | ||
-build=… |
go build | Specify the command to run when rebuilding is required. |
-command=… |
none | Specify the command to run after a succesful build. The default is to run nothing. This command is issued with the working directory set to -directory. |
file selection | ||
-directory=… |
. | Which directory to watch. |
-recursive=… |
true | Recurse down the specified directory |
-exclude-dir=… |
none | Do not watch directories matching this glob pattern, e.g. ".git". You may have multiples of this flag. |
-exclude=… |
none | Exclude files matching this glob pattern, e.g. ".#*" ignores emacs temporary files. You may have multiples of this flag. |
-include=… |
none | Include files whose last path component matches this glob pattern. You may have multiples of this flag. |
-pattern=… |
(.+\.go|.+\.c)$ | A regular expression which matches the files to watch. The default watches .go and .c files. |
misc | ||
-color=_ |
false | Colorize the output of the daemon's status messages. |
-log-prefix=_ |
true | Prefix all child process output with stdout/stderr labels and log timestamps. |
-graceful-kill=_ |
false | On supported platforms, send the child process a SIGTERM to allow it to exit gracefully if possible. |
Examples
In its simplest form, the defaults will do. With the current working directory set to the source directory you can simply…
$ CompileDaemon
… and it will recompile your code whenever you save a source file.
If you want it to also run your program each time it builds you might add…
$ CompileDaemon -command="./MyProgram -my-options"
… and it will also keep a copy of your program running. Killing the old one and starting a new one each time you build.
You may find that you need to exclude some directories and files from monitoring, such as a .git repository or emacs temporary files…
$ CompileDaemon -exclude-dir=.git -exclude=".#*" …
If you want to monitor files other than .go and .c files you might…
$ CompileDaemon -include=Makefile -include="*.less" -include="*.tmpl"
Notes
Too many open files
If you get an error for too many open files, you might wish to exclude your .git, .hg, or similar VCS directories using -exclude-dir=…
. This is common on OS X and BSD platforms where each watched file consumes a file descriptor.
If you still have too many open files, then you need to raise your process's file limit using the ulimit
command. Something like ulimit -n 1024
will probably take care of it. There is also a sysctl based limit which you may reach and need to adjust.
Project Details
Credits
CompileDaemon was written by githubnemo.
Code and documentation was contributed by jimstudt.
Repository
CompileDaemon is kept at https://github.com/githubnemo/CompileDaemon
License
CompileDaemon is licensed under the BSD Two Clause License
Documentation
¶
Overview ¶
CompileDaemon is a very simple compile daemon for Go.
CompileDaemon watches your .go files in a directory and invokes `go build` if a file changes.
Examples ¶
In its simplest form, the defaults will do. With the current working directory set to the source directory you can simply…
$ CompileDaemon
… and it will recompile your code whenever you save a source file.
If you want it to also run your program each time it builds you might add…
$ CompileDaemon -command="./MyProgram -my-options"
… and it will also keep a copy of your program running. Killing the old one and starting a new one each time you build.
You may find that you need to exclude some directories and files from monitoring, such as a .git repository or emacs temporary files…
$ CompileDaemon -exclude-dir=.git -exclude=".#*"
If you want to monitor files other than .go and .c files you might…
$ CompileDaemon -include=Makefile -include="*.less" -include="*.tmpl"
Options ¶
There are command line options.
FILE SELECTION -directory=XXX – which directory to monitor for changes -recursive=XXX – look into subdirectories -exclude-dir=XXX – exclude directories matching glob pattern XXX -exlude=XXX – exclude files whose basename matches glob pattern XXX -include=XXX – include files whose basename matches glob pattern XXX -pattern=XXX – include files whose path matches regexp XXX MISC -color - enable colorized output -log-prefix - Enable/disable stdout/stderr labelling for the child process -graceful-kill - On supported platforms, send the child process a SIGTERM to allow it to exit gracefully if possible. ACTIONS -build=CCC – Execute CCC to rebuild when a file changes -command=CCC – Run command CCC after a successful build, stops previous command first