{"id":21866856,"url":"https://github.com/rootmos/continuously","last_synced_at":"2026-05-16T12:32:58.755Z","repository":{"id":263244833,"uuid":"882215499","full_name":"rootmos/continuously","owner":"rootmos","description":"Run things continuously when files change","archived":false,"fork":false,"pushed_at":"2025-03-16T08:46:11.000Z","size":2441,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-16T09:27:42.703Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rootmos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-11-02T07:40:27.000Z","updated_at":"2025-03-16T08:46:15.000Z","dependencies_parsed_at":"2024-11-17T09:21:43.365Z","dependency_job_id":"ec243e13-abac-43c7-8c3a-1265ebbb3213","html_url":"https://github.com/rootmos/continuously","commit_stats":null,"previous_names":["rootmos/continuously"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rootmos/continuously","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootmos%2Fcontinuously","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootmos%2Fcontinuously/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootmos%2Fcontinuously/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootmos%2Fcontinuously/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rootmos","download_url":"https://codeload.github.com/rootmos/continuously/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootmos%2Fcontinuously/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33102816,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T04:41:52.686Z","status":"ssl_error","status_checked_at":"2026-05-16T04:41:52.009Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":"2024-11-28T05:07:42.542Z","updated_at":"2026-05-16T12:32:58.738Z","avatar_url":"https://github.com/rootmos.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"continuously\n============\n[![Build](https://github.com/rootmos/continuously/actions/workflows/build.yaml/badge.svg)](https://github.com/rootmos/continuously/actions/workflows/build.yaml)\n\nA program that uses [inotify](https://man.archlinux.org/man/inotify.7) and [libgit2](https://libgit2.org/) in order to continuously execute something whenever a significant file changes.\n\nThis is a feature several modern tools already provide (e.g. [Haskell's stack](https://docs.haskellstack.org/en/stable/commands/build_command/#controlling-when-building-occurs)).\nHowever I frequently jump between (esoteric) programming languages, tools, tasks and trains of thought, and... \"uhm, how does one run the tests in this project again?\"\n\nBut! for me tasks, tools and languages rarely change between (git) working directories:\nso continuing the `make` tradition\n(or is it too old-school to try `./configure \u0026\u0026 make install` whenever one obtains a new piece of software?)\nI keep a [`.k` file](https://git.sr.ht/~rootmos/scripts/tree/master/k) in each such directory with relevant\noperations that I (frequently forget how to) execute.\n(I'm quite certain that this workflow emerged when having to remember relevant `kubectl` commands, if you know what I mean when managing several clusters etc.)\n\nTherefore I keep my [nvim](https://git.sr.ht/~rootmos/dot-nvim) open\nin one [tmux](https://wiki.archlinux.org/title/Tmux) pane and\nin the other a `c k go` (or `c make` [sic!](https://cmake.org/)), where\n```alias c='~/.local/bin/continuously --'```\nand maybe `.k`:\n```sh\ngo() {\n    make build # or whatever's relevant right now\n}\n```\nThus whenever I [save a file](https://kinesis-ergo.com/foot-pedals/) something relevant gets built.\n\n![An example of my workflow](doc/workflow.gif)\n\n## Usage\n```\nusage: continuously [OPTION] [--] [COMMAND [ARG]...]\n\nRun command when files change\n\noptions:\n  -h  show this text\n  -q  keep quiet about event and state transitions\n  --  stop processing arguments\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frootmos%2Fcontinuously","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frootmos%2Fcontinuously","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frootmos%2Fcontinuously/lists"}