{"id":18020928,"url":"https://github.com/edubart/luamon","last_synced_at":"2025-08-25T01:13:58.956Z","repository":{"id":139040145,"uuid":"181349251","full_name":"edubart/luamon","owner":"edubart","description":"Live development utility for Lua inspired by nodemon","archived":false,"fork":false,"pushed_at":"2023-08-06T01:57:07.000Z","size":70,"stargazers_count":57,"open_issues_count":1,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-08T10:34:23.384Z","etag":null,"topics":["inotify","live-coding","lua","luarocks","monitor","nelua","nodemon"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edubart.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-04-14T18:08:01.000Z","updated_at":"2024-10-28T16:21:03.000Z","dependencies_parsed_at":"2024-10-30T06:28:44.962Z","dependency_job_id":null,"html_url":"https://github.com/edubart/luamon","commit_stats":null,"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/edubart/luamon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edubart%2Fluamon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edubart%2Fluamon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edubart%2Fluamon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edubart%2Fluamon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edubart","download_url":"https://codeload.github.com/edubart/luamon/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edubart%2Fluamon/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271989878,"owners_count":24854702,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-24T02:00:11.135Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["inotify","live-coding","lua","luarocks","monitor","nelua","nodemon"],"created_at":"2024-10-30T06:08:17.739Z","updated_at":"2025-08-25T01:13:58.900Z","avatar_url":"https://github.com/edubart.png","language":"Lua","readme":"# Luamon\n\nLuamon is a utility for quick live development in Lua.\nIt will monitor for any changes in your source and automatically restart your Lua script or application.\nIt works by watching for file and directories changes using the [inotify API](https://en.wikipedia.org/wiki/Inotify).\nIt was inspired by [nodemon](https://nodemon.io/), but made for Lua.\n\n[![asciicast](https://asciinema.org/a/eYx200v7YnHxSWqVet5yjnBpS.svg)](https://asciinema.org/a/eYx200v7YnHxSWqVet5yjnBpS)\n\n## Features\n\n* Automatic restarting of application.\n* Default for lua, but easy to run any executable (such as python, make, etc).\n* Ignoring specific files or directories.\n* Watch specific directories.\n* Works with server applications or one time run utilities and REPLs.\n\n## Installation\n\nInstall using [LuaRocks](https://luarocks.org/):\n\n```bash\nluarocks install luamon\n```\n\nOn Ubuntu you may have to install with:\n```bash\nluarocks install luamon INOTIFY_INCDIR=/usr/include/x86_64-linux-gnu\n```\n\n## Example Usage\n\nMake sure that you have luarocks binary `PATH` in your environment.\nAnd just run luamon with your script file as the input argument.\n\n```bash\nluamon myscript.lua\n```\n\nYou can pass arguments to the script after `--`:\n```bash\nluamon myscript.lua -- --arg1 arg2\n```\n\nYou can run with a different lua or any other language runner with `-l`:\n\n```bash\nluamon -l luajit myscript.lua\n```\n\nBy default luamon tries to detect the language to be run and watches file extensions based\non the detect language, for example in case you to run some file with `.lua` extension\nthen it watches for any `.lua` file change in the working directory and runs `lua`.\n\nAlternatively you can monitor different extensions with `-e`, for running python3 scripts\nfor example you could do:\n\n```bash\nluamon -l python3 -e py myscript.py\n```\n\nAlthough you can just run python scripts by doing:\n\n```bash\nluamon myscript.py\n```\n\nAlternatively you can run any command with `-x`:\n\n```bash\nluamon -e js -x \"nodejs app.js my args\"\n```\n\nYou could use for quick compile and testing C applications too:\n\n```bash\nluamon -e c,h -x \"make \u0026\u0026 make test\"\n```\n\n## Advanced Usage\n\nYou can make more complex commands for live coding and testing:\n\n```bash\nluamon -e c,h,Makefile -l \"make \u003cinput\u003e \u0026\u0026 ./build/\u003cinput\u003e \u003cargs\u003e\" example hello\n```\n\nThe above calls `make example \u0026\u0026 ./build/example hello` on every `.h`, `.c` or `Makefile` file change.\n\nAny option can be saved to a config file globally called `.luamonrc` in the user home folder\nor locally in the running folder, for example:\n\n```bash\next = {'h', 'c', 'Makefile'}\nlang = \"make \u003cinput\u003e \u0026\u0026 ./build/\u003cinput\u003e \u003cargs\u003e\"\n```\n\nThen you can just call:\n\n```bash\nluamon example\n```\n\nAnd will run as the example before.\n\nYou can override the languages to be detected in that config too, for example to make it uses\nalways lua5.4 and python3 upon detection:\n\n```bash\nlangs = {\n  lua = {lang = 'lua5.4', ext = {'lua'}},\n  python = {lang = 'python3', ext = {'py'}, ignore = {'.*', '*__pycache__*'}},\n}\n```\n\nSome common languages comes pre configured like Lua, Python and Ruby,\nfor all see the default config in luamon sources.\n\n## Help\n\n```\nUsage: luamon [-h] [-v] [-q] [-V] [-f] [-o] [-s] [-x] [-r] [-t]\n       [--no-color] [--no-hup] [-e \u003cext\u003e] [-w \u003cwatch\u003e] [-i \u003cignore\u003e]\n       [-c \u003cchdir\u003e] [-d \u003cdelay\u003e] [-l \u003clang\u003e] \u003cinput\u003e [\u003cargs\u003e] ...\n\nluamon\n\nArguments:\n   input                 Input script to run\n   args                  Script arguments\n\nOptions:\n   -h, --help            Show this help message and exit.\n   -v, --version         Print current luamon version and exit\n   -q, --quiet           Be quiet, don't print any message\n   -V, --verbose         Show details on what is causing restart\n   -f, --fail-exit       Exit when the running command fails\n   -o, --only-input      Watch only the input file for changes\n   -s, --skip-first      Skip first run (wait for changes before running)\n   -x, --exec            Execute a command instead of running a script\n   -r, --restart         Automatically restart upon exit (run forever)\n   -t, --term-clear      Clear terminal before each run\n   --no-color            Don't colorize output\n   --no-hup              Don't stop when terminal closes (SIGHUP signal)\n      -e \u003cext\u003e,          Extensions to watch, separated by commas (auto detected by default)\n   --ext \u003cext\u003e\n        -w \u003cwatch\u003e,      Directories to watch, separated by commas (default: .)\n   --watch \u003cwatch\u003e\n         -i \u003cignore\u003e,    Shell pattern of paths to ignore, separated by commas (default: .*)\n   --ignore \u003cignore\u003e\n        -c \u003cchdir\u003e,      Change into directory before running the command\n   --chdir \u003cchdir\u003e\n        -d \u003cdelay\u003e,      Delay between restart in milliseconds\n   --delay \u003cdelay\u003e\n       -l \u003clang\u003e,        Language runner to run (auto detected by default)\n   --lang \u003clang\u003e\n```\n\n## Limitations\n\nThe packages depends on POSIX and Inotify APIs so it works only on systems that supports them, such as Linux.\n\n## License\nMIT\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedubart%2Fluamon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedubart%2Fluamon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedubart%2Fluamon/lists"}