{"id":37172949,"url":"https://github.com/thisisdevelopment/compiledaemon","last_synced_at":"2026-01-14T20:13:22.930Z","repository":{"id":44445935,"uuid":"512157897","full_name":"thisisdevelopment/CompileDaemon","owner":"thisisdevelopment","description":"Very simple compile daemon for Go","archived":false,"fork":true,"pushed_at":"2022-07-11T08:49:38.000Z","size":1199,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2024-06-21T10:58:56.334Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"githubnemo/CompileDaemon","license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thisisdevelopment.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-07-09T10:33:11.000Z","updated_at":"2024-06-21T10:58:56.336Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/thisisdevelopment/CompileDaemon","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/thisisdevelopment/CompileDaemon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisisdevelopment%2FCompileDaemon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisisdevelopment%2FCompileDaemon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisisdevelopment%2FCompileDaemon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisisdevelopment%2FCompileDaemon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thisisdevelopment","download_url":"https://codeload.github.com/thisisdevelopment/CompileDaemon/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisisdevelopment%2FCompileDaemon/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28434420,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T18:57:19.464Z","status":"ssl_error","status_checked_at":"2026-01-14T18:52:48.501Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-14T20:13:21.085Z","updated_at":"2026-01-14T20:13:22.916Z","avatar_url":"https://github.com/thisisdevelopment.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Very simple Compile Daemon for Go [![GoDoc](https://godoc.org/github.com/githubnemo/CompileDaemon?status.png)](http://godoc.org/github.com/githubnemo/CompileDaemon)\n\nWatches your .go files in a directory and invokes `go build` if\na file changed. Nothing more.\n\nUsage:\n\n\t$ ./CompileDaemon -directory=yourproject/\n\n## Installation\n\nYou can use the `go` tool to install `CompileDaemon`:\n\n\tgo get github.com/githubnemo/CompileDaemon\n\n## Development\n\nYou need to use Go 1.16 or higher to build Compile Daemon, and you need to set\nthe env var `GO111MODULE=on`, which enables you to develop outside of\n`$GOPATH/src`.\n\n## Command Line Options\n\n|Option    | Default     | Description|\n|--------- | ----------- | -----------|\n| | | **actions** |\n|`-build=…`   | go build    | Specify the command to run when rebuilding is required.|\n|`-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.|\n| | | **file selection** |\n|`-directory=…` | . | Which directory to watch.|\n|`-recursive=…` | true      | Recurse down the specified directory|\n|`-exclude-dir=…` | none | Do not watch directories matching this glob pattern, e.g. \".git\". You may have multiples of this flag.|\n|`-exclude=…` | none | Exclude files matching this glob pattern, e.g. \".#*\" ignores emacs temporary files. You may have multiples of this flag.|\n|`-include=…` | none | Include files whose last path component matches this glob pattern. You may have multiples of this flag.|\n|`-pattern=…` | (.+\\\\.go\u0026#124;.+\\\\.c)$ | A regular expression which matches the files to watch. The default watches *.go* and *.c* files.|\n| | | **file watch** |\n|`-polling=…` | false | Use polling instead of FS notifications to detect changes. Default is false\n|`-polling-interval=…` | 100 | Milliseconds of interval between polling file changes when polling option is selected\n| | | **misc** |\n|`-color=_` | false | Colorize the output of the daemon's status messages. |\n|`-log-prefix=_` | true | Prefix all child process output with stdout/stderr labels and log timestamps. |\n|`-graceful-kill=_`| false | On supported platforms, send the child process a SIGTERM to allow it to exit gracefully if possible. |\n\n## Examples\n\nIn its simplest form, the defaults will do. With the current working directory set\nto the source directory you can simply…\n\n    $ CompileDaemon\n\n… and it will recompile your code whenever you save a source file.\n\nIf you want it to also run your program each time it builds you might add…\n\n    $ CompileDaemon -command=\"./MyProgram -my-options\"\n\n… and it will also keep a copy of your program running. Killing the old one and\nstarting a new one each time you build.\n\nYou may find that you need to exclude some directories and files from\nmonitoring, such as a .git repository or emacs temporary files…\n\n    $ CompileDaemon -exclude-dir=.git -exclude=\".#*\" …\n\nIf you want to monitor files other than .go and .c files you might…\n\n    $ CompileDaemon -include=Makefile -include=\"*.less\" -include=\"*.tmpl\"\n\n## Security Considerations\n\nBeware that, in case you are using `CompileDaemon` in production to rebuild a\nbinary (please explain to me why you would do this, but carry on), an attacker\nwith write access is able to insert arbitrary code into your binary. So make\nsure that you secure write access to the file system appropriately.\n\n## Common Issues\n\n### Too many open files\n\nIf 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.\n\nIf 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.\n\n### `filepath.Walk() no space left on device`\n\nAs described in [this issue](https://github.com/githubnemo/CompileDaemon/issues/23) it might happen that you run out of inotify watchers which are limited by your system configuration. Please consider increasing them as is documented [here](https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers).\n\n### Docker + Mac OS X\n\nSome issues ([here][1] and [here][2]) report that changes on Docker\nvolumes under Mac OS X are not reported.\n\nThere seem to be issues with either the implementation of the bind file\nsystem mount between Mac OS X hosts and Docker containers or in\n`fsnotify/fsnotify` or a combination of both. As long as this is not\nresolved, a possible workaround is to use polling:\n\n```\nCompileDaemon -polling\n```\n\nThis will actively watch for changes, so it naturally uses more CPU\nresources. You can tune the polling interval to your liking using the\n`-polling-interval=N` parameter but be advised: you should never use\nthis in production as it is simply too wasteful.\n\n[1]: https://github.com/githubnemo/CompileDaemon/issues/44\n[2]: https://github.com/githubnemo/CompileDaemon/issues/47\n\n## Project Details\n\n### Credits\n\nCompileDaemon was written by [githubnemo](https://github.com/githubnemo).\n\nCode and documentation was contributed by [jimstudt](https://github.com/jimstudt).\n\n### Repository\n\nCompileDaemon is kept at [https://github.com/githubnemo/CompileDaemon](https://github.com/githubnemo/CompileDaemon)\n\n### License\n\nCompileDaemon is licensed under the [BSD Two Clause License](https://github.com/githubnemo/CompileDaemon/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthisisdevelopment%2Fcompiledaemon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthisisdevelopment%2Fcompiledaemon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthisisdevelopment%2Fcompiledaemon/lists"}