{"id":28194261,"url":"https://github.com/monkey-projects/plugin-pushover","last_synced_at":"2026-02-12T13:13:55.200Z","repository":{"id":277979575,"uuid":"874659797","full_name":"monkey-projects/plugin-pushover","owner":"monkey-projects","description":"MonkeyCI plugin to send to pushover","archived":false,"fork":false,"pushed_at":"2025-02-17T11:01:33.000Z","size":16,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-11T20:14:30.138Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Clojure","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/monkey-projects.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,"zenodo":null}},"created_at":"2024-10-18T08:26:07.000Z","updated_at":"2025-02-17T11:01:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"4e05f63c-e07e-4253-ae0d-dcdd053844bf","html_url":"https://github.com/monkey-projects/plugin-pushover","commit_stats":null,"previous_names":["monkey-projects/plugin-pushover"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/monkey-projects/plugin-pushover","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monkey-projects%2Fplugin-pushover","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monkey-projects%2Fplugin-pushover/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monkey-projects%2Fplugin-pushover/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monkey-projects%2Fplugin-pushover/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/monkey-projects","download_url":"https://codeload.github.com/monkey-projects/plugin-pushover/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monkey-projects%2Fplugin-pushover/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265443549,"owners_count":23766410,"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":"2025-05-16T13:11:45.385Z","updated_at":"2026-02-12T13:13:55.193Z","avatar_url":"https://github.com/monkey-projects.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MonkeyCI Pushover Plugin\n\nThis is a [MonkeyCI](https://monkeyci.com) plugin that provides a build job\nthat sends a message to [Pushover](https://pushover.net).  This makes it\npossible to send notifications from your builds.\n\n## Usage\n\n[![Clojars Project](https://img.shields.io/clojars/v/com.monkeyci/plugin-pushover.svg)](https://clojars.org/com.monkeyci/plugin-pushover)\n\nFirst include it in your build `deps.edn`:\n```clojure\ncom.monkeyci/plugin-pushover {:mvn/version \"0.1.1\"}\n```\n\nOr when using Leiningen:\n```clojure\n[com.monkeyci/plugin-pushover \"0.1.1\"]\n```\n\nIn order to add a job to your build, invoke the `pushover-msg` function:\n\n```clojure\n(require '[monkey.ci.plugin.pushover :as pp])\n\n[my-other-jobs\n ;; Add a job to your build that will send the message\n (pp/pushover-msg {:msg \"Hi, this is a message from pushover\"})] \n```\n\nAt the very least, you should provide a `msg`, which can either be a string,\nor a function.  If it's a function, it will be passed the build context, so\nyou can generate a message depending on the situation.  Any other options\n(apart from the credentials, see below), are either directly passed to the\nPushover API, or the build job.\n\nThe default job id is `pushover`, but you can override this by specifying\nthe `:id` property.\n\n## Credentials\n\nIn order to push a message, you need to have an account.  By default, the plugin\nwill fetch the user and token from the build parameters.  The default parameter\nkeys are `pushover-user` and `pushover-token`.  But you can override these\nby specifying the `:user-param` and `:token-param` options.  Like so:\n\n```clojure\n(pp/pushover-msg {:msg \"some test message\"\n                  :user-param \"overridden-user\"\n\t\t  :token-param \"overridden-token\"})\n;; This will create a job that will post to Pushover using the user and token\n;; fetched from the build parameters respectively as \"overridden-user\" and\n;; \"overridden-token\".\n```\n\nYou can also directly specify the credentials, although this is not advised from\na security point of view!\n```clojure\n(pp/pushover-msg {:msg \"test message\"\n                  :user \"test-user\"\n\t\t  :token \"test-token\"})\n```\n\n## Dependencies\n\nYou can make the job dependent on another job by adding them to the `:dependencies`\noption.  It will be automatically passed on to the job configuration.\n```clojure\n;; This job will only be executed if \"other-job\" has succeeded.\n(pp/pushover-msg {:msg \"test message\" :dependencies [\"other-job\"]})\n```\n\n## Other Actions\n\n`pushover-msg` creates an action job of its own.  However, in some situations you may\nwant to combine this functionality with other functions, without creating multiple\njobs in your pipeline.  In order to do this you could either directly call the Pushover\nAPI, but you can also call the action function that does the work directly.  For this,\nyou can use `pushover-action`.  It takes the same configuration as the job, and also\nthe build context.  This is necessary to fetch some additional information, like the\ncredentials should they not be passed in directly.\n\nFor example, you could do this:\n```clojure\n(ns build\n  (:require [monkey.ci.api :as m]\n            [monkey.ci.plugin.pushover :as pp))\n\n(def combined-job\n  (m/action-job\n    \"combined-job\"\n    (fn [ctx]\n      ;; Only send a message if the condition returns true\n      (when (do-something-complicated ctx)\n        (pp/pushover-action {:msg \"The complicated action has finished\"} ctx)))))\n```\n\n## Testing\n\nIn unit tests it may be cumbersome to mock out the actual network call to the Pushover\nAPI.  So to make it easier, you can pass in your own `poster` function in the job\nconfiguration.  This receives the same configuration as would be passed to the default\nposter, which allows you to investigate the parameters in tests.  The poster is expected\nto return a HTTP response with a valid status (typically `200`).\n\n```clojure\n(pp/pushover-msg {:msg \"test message\"\n                  :poster (fn [conf]\n\t\t            (println \"This is a fake poster\")\n\t\t\t    {:status 200})})\n```\n\n## License\n\nCopyright (c) 2024-2026 by [Monkey Projects](https://www.monkey-projects.be)\n\n[MIT License](LICENSE)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmonkey-projects%2Fplugin-pushover","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmonkey-projects%2Fplugin-pushover","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmonkey-projects%2Fplugin-pushover/lists"}