{"id":16333698,"url":"https://github.com/dasj/versioncheck","last_synced_at":"2025-07-29T10:05:24.640Z","repository":{"id":57526779,"uuid":"83328953","full_name":"dasJ/versioncheck","owner":"dasJ","description":"Poll upstream versions","archived":false,"fork":false,"pushed_at":"2017-02-27T19:38:47.000Z","size":26,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-16T03:36:22.070Z","etag":null,"topics":["golang","notification-service","package-maintenance","tool"],"latest_commit_sha":null,"homepage":"","language":"Go","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/dasJ.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":"2017-02-27T16:02:33.000Z","updated_at":"2017-08-04T16:37:25.000Z","dependencies_parsed_at":"2022-09-07T02:52:36.423Z","dependency_job_id":null,"html_url":"https://github.com/dasJ/versioncheck","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dasJ/versioncheck","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasJ%2Fversioncheck","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasJ%2Fversioncheck/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasJ%2Fversioncheck/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasJ%2Fversioncheck/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dasJ","download_url":"https://codeload.github.com/dasJ/versioncheck/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasJ%2Fversioncheck/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267668409,"owners_count":24124963,"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-07-29T02:00:12.549Z","response_time":2574,"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":["golang","notification-service","package-maintenance","tool"],"created_at":"2024-10-10T23:36:18.883Z","updated_at":"2025-07-29T10:05:24.603Z","avatar_url":"https://github.com/dasJ.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# versioncheck\n\nversioncheck is a tool supposed to make it easier for package maintainers to keep up with upstream updates.\nIt's supposed to be called in a cron job and will check if any versions were changed.\nIf something changed, a custom script is invoked.\n\n## Installation\n\nAfter setting up your `GOPATH`, run:\n\n```\n$ go get github.com/dasJ/versioncheck\n```\n\nversioncheck can be found in `$GOPATH/bin`.\n\n## Configuration and running\n\nCreate a configuration file like this:\n\n```\n{\n\t\"dbLocation\": \"/var/db/versioncheck/db.json\",\n\t\"notificator\": \"/usr/bin/versioncheck-notify.sh\",\n\t\"upstreams\": [\n\t\t{\n\t\t\t\"name\": \"Autoenv\",\n\t\t\t\"module\": \"github\",\n\t\t\t\"params\": {\n\t\t\t\t\"namespace\": \"kennethreitz\",\n\t\t\t\t\"project\": \"autoenv\"\n\t\t\t},\n\t\t\t\"tags\": [ \"aur\", \"dotfiles\" ]\n\t\t}\n\t]\n}\n```\n\nThe directory containing the database file must be writeable and must exist.\nIf the database location is omitted, the value from above is used as default.\n\nSee below for inforamtion about the nofificator and the upstreams.\n\nAfter creating the notifier, you can run versioncheck like this:\n\n```\n$ $GOPATH/bin/versioncheck /path/to/configuration.json\n```\n\n## About the notificator\n\nThe notificator must be an executable file written in a language that can parse arguments.\nIt will be called like this:\n\n```\n$ notificator [name of the upstream] [module] [old version] [new version] [tag]...\n```\n\nEach tag is an own parameter.\nStdout and Stderr will be redirected to the terminal.\nAn example notificator can be found in the [doc directory](doc/notificator-example.sh).\n\nThe notificator will only be called for changed versions.\nIt will not be called for added/removed upstreams or for errors.\nErrors can be found in Stderr.\n\n## About upstreams\n\nAn upstream is a project that versioncheck should track.\nWhen versioncheck discovers a new upstream that wasn't there the last time, it the current version is silently added to the database.\nIf you remove an upstream, the old version is silently removed from the database.\n\nAn upstream has these attributes:\n\n- name. This name is a unique identifier for your upstream. When changed, the upstream is removed and re-added with the new name.\n- module. The module that is used to find the current version of the project.\n- parameters. These parameters configure the module and are module-specific.\n- tags. Tags are for your own information. They are forwarded to the notificator and can be parsed in any way.\n\n## Implementing own modules\n\nYou can implement own modules by adding your own module file to the `modules` directory.\nAs they all share a namespace, use specific names.\n\nAll modules must extend [versionModule](moduleRunner/module.go).\n`Init` is called once for every module on startup, `Name` as well and should return the module name that is used in the upstream configuration.\n`Run` is executed once the module is actually needed, and should return the latest version. It takes the name of the upstream (for logging) and the custom parameters from the upstream configuration.\n\nAfter implementing your module you need to add it to the array in [modules.go](moduleRunner/modules.go).\n\nIf you want to have you module merged, also add documentation to the [doc](doc/) directory.\n\n## Implemented modules\n\n- [github](doc/github.md) - Checks for the latest GitHub release.\n- [httphash](doc/httphash.md) - Compares sha512 hashes of websites.\n- [pypi](doc/pypi.md) - Checks a PyPi package.\n- [rubygems](doc/rubygems.md) - Checks a gem at ryubgems.com.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdasj%2Fversioncheck","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdasj%2Fversioncheck","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdasj%2Fversioncheck/lists"}