Git Product home page Git Product logo

compiledaemon's Introduction

Very simple Compile Daemon for Go GoDoc

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

compiledaemon's People

Contributors

gavbaa avatar jimstudt avatar justonia avatar olostan avatar snop-snov avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.