{"id":20764174,"url":"https://github.com/mickey/checkzilla","last_synced_at":"2025-04-30T08:11:40.778Z","repository":{"id":4553542,"uuid":"5694413","full_name":"mickey/checkzilla","owner":"mickey","description":"CLI allowing you to check and be notified of outdated software","archived":false,"fork":false,"pushed_at":"2015-11-27T14:16:10.000Z","size":22,"stargazers_count":38,"open_issues_count":2,"forks_count":2,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-30T14:11:54.568Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/mickey.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}},"created_at":"2012-09-05T22:19:15.000Z","updated_at":"2023-08-13T14:36:51.000Z","dependencies_parsed_at":"2022-08-03T15:45:14.062Z","dependency_job_id":null,"html_url":"https://github.com/mickey/checkzilla","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mickey%2Fcheckzilla","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mickey%2Fcheckzilla/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mickey%2Fcheckzilla/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mickey%2Fcheckzilla/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mickey","download_url":"https://codeload.github.com/mickey/checkzilla/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251099734,"owners_count":21536153,"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","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-17T10:49:04.082Z","updated_at":"2025-04-30T08:11:40.758Z","avatar_url":"https://github.com/mickey.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"## CheckZilla\n\nCheckZilla is a command line tool allowing you to check and be notified of outdated software.\nCheckZilla is extensible and already supports multiple \"Checkers\" (RubyGem, Pacman, Npm) and \"Notifiers\" (Console, Email, HipChat, notify-send).\n\nThe main usage currently is to use it as a CRON notifying you everyday of new softwares updates.\n\n**Warning** This is Beta Software !\n\n## How to use it\n\n```\n$\u003e checkzilla your-config-file\n```\n\nThe configuration is using a DSL, here's a sample :\n\n```ruby\nCheckZilla::Model.new('This is the title of my report') do\n\n  check_updates :rubygem do |rubygem|\n    rubygem.path = \"/home/mike/code/diaspora\"\n  end\n\n  notify_by :hipchat do |hipchat|\n    hipchat.api_token = '95def4314870443f46b8c4694bd88e'\n    hipchat.room = 'test'\n    hipchat.username = 'CheckUpdates'\n  end\n\n  notify_by :console\nend\n```\n\n## Checkers\n\nCheckers are defined via a `CheckZilla::Check::NEW_CHECKER` class, they need to define 2 methods:\n\n`initialize(\u0026block)` returns self\n\n`perform!` fills `@results` with `@results[software_name] = [software_current_version, software_newer_version]`\n\nHere's the list of availables checkers:\n\n### Rubygem\n\n```ruby\ncheck_updates :rubygem do |rubygem|\n  rubygem.path = \"/home/mike/code/diaspora\"\nend\n```\n\nTries to find a `Gemfile.lock` if `path` is defined, otherwise will use `gem list` for a system wide ruby installation. It matches your dependencies against the rubygems api to find what's outdated.\n  \n### Pacman\n\n```ruby\ncheck_updates :pacman\n```\n\nTries to determine your outdated package via:\n\n`sudo pacman -Sy \u003e /dev/null ; package-query -AQu -f '%n %l %V'`\n\n**Warning** You need to execute checkzilla as root as I didn't find a better way to ask pacman to synchronise the db. `package-query` is required (it's a dependency of yaourt).\n\n### Npm\n\n```ruby\ncheck_updates :npm do |npm|\n  npm.path = \"/home/mike/code/nodes3\"\nend\n```\n\nIt requires `path` and will determine the dependencies via `npm outdated`\n\n## Notifiers\n\nNotifiers are defined via a `CheckZilla::Notifier::NEW_NOTIFIER` class, they need to define 2 methods:\n\n`initialize(\u0026block)` returns self\n\n`perform!(checkers)` loop other the checkers, format the `results` and notifies you.\n\nHere's the list of availables notifiers:\n\n### Console\n\n```ruby\nnotify_by :console\n```\n\nOutputs to the console.\n\n### Twitter\n\n```ruby\nnotify_by :twitter do |twitter|\n  twitter.consumer_key = YOUR_CONSUMER_KEY\n  twitter.consumer_secret = YOUR_CONSUMER_SECRET\n  twitter.oauth_token = YOUR_OAUTH_TOKEN\n  twitter.oauth_token_secret = YOUR_OAUTH_TOKEN_SECRET\nend\n```\n\n### Email\n\n```ruby\nnotify_by :email do |email|\n  email.pony_settings = {\n    :to =\u003e 'you@gmail.com',\n    :subject =\u003e 'BOT Report',\n    :from =\u003e 'you+bot@gmail.com',\n    :via =\u003e :smtp,\n    :via_options =\u003e {\n      :address              =\u003e 'smtp.gmail.com',\n      :port                 =\u003e '587',\n      :enable_starttls_auto =\u003e true,\n      :user_name            =\u003e 'you@gmail.com',\n      :password             =\u003e 'yourpassword',\n      :authentication       =\u003e :plain,\n      :domain               =\u003e \"localhost.localdomain\"\n    }\n  }\nend\n```\n\nSend you an email using [Pony](https://github.com/benprew/pony)\n\n### Hipchat\n\n```ruby\nnotify_by :hipchat do |hipchat|\n  hipchat.api_token = '95def4314870443f46b8c4694bd88e'\n  hipchat.room = 'test'\n  hipchat.username = 'CheckUpdates'\nend\n```\n\nSends you a notification to the [HipChat](http://hipchat.com) room of your choice\n\n### notify-send\n\n```ruby\nnotify_by :notify_send\n```\n\nSend a desktop notification (only tested on archlinux/xfce but should work on ubuntu/unity).\n\n## TODO\n\n- Persistence layer (no need to be fancy, a .yml could do it) so you can send incremental updates\n- Add notifiers global options like `only` and `except`. They'd both take an array of checkers.\n- Add notifier global option `template` ? So you can pimp your emails and Twitter mentions\n- Notifiers: Growl, kdialog, basecamp, jabber\n- Checkers: Homebrew, apt-get\n- Rack Application and/or HTML report\n\n## Helping out\n\n* Feedback is good\n* Issue reporting is better\n* Pull requests are way better\n* Awesome pull requests are *obviously awesome*","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmickey%2Fcheckzilla","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmickey%2Fcheckzilla","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmickey%2Fcheckzilla/lists"}