{"id":15374688,"url":"https://github.com/mrtazz/knife-wip","last_synced_at":"2025-08-26T08:06:37.090Z","repository":{"id":21435219,"uuid":"24753438","full_name":"mrtazz/knife-wip","owner":"mrtazz","description":"A workflow plugin to track WIP nodes on a chef server","archived":false,"fork":false,"pushed_at":"2014-10-03T10:02:41.000Z","size":128,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-23T09:11:36.703Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","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/mrtazz.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":"2014-10-03T09:39:43.000Z","updated_at":"2023-09-28T01:37:58.000Z","dependencies_parsed_at":"2022-08-20T22:50:15.039Z","dependency_job_id":null,"html_url":"https://github.com/mrtazz/knife-wip","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/mrtazz/knife-wip","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrtazz%2Fknife-wip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrtazz%2Fknife-wip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrtazz%2Fknife-wip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrtazz%2Fknife-wip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrtazz","download_url":"https://codeload.github.com/mrtazz/knife-wip/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrtazz%2Fknife-wip/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272192669,"owners_count":24889452,"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-26T02:00:07.904Z","response_time":60,"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":[],"created_at":"2024-10-01T13:59:31.160Z","updated_at":"2025-08-26T08:06:37.064Z","avatar_url":"https://github.com/mrtazz.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# knife-wip\n\n## Overview\nChef should be the authoritative source of how your infrastructure looks like.\nIdeally what's in Chef is also what's running on the servers. However\nsometimes you have to go into a server, stop Chef and debug something by hand.\nThis has all sorts of implications - depending on the length of the work - the\nserver won't get updates, drifts out of sync with app configuration and worst\nof all nobody might know. This is why knife-wip provides a tag based way to\ntrack work in progress in your infrastructure. Knife-wip uses Chef [node\ntags][tags] to track who is working on which servers. This way it supports all\nthe great ways of searching for tags and testing for them in Chef recipe and\ndoesn't rely on any external setup.\n\n\n## Tag format\nIn order to provide an easy and standardized way to retrieve information and\nprovide everyone with the maximum amount of information the tag for WIP looks\nlike this:\n\n```\nwip:[USERNAME]:[provided description]\n```\n\nThis should make it easy to immediately see who has added the WIP tag and what\nthey are working on.\n\n\n## Usage\n\n```\n# mark a node as WIP\n% knife node wip web01.example.com testing php build\nCreated WIP \"wip:dschauenberg:testing php build\" for node web01.example.com.\n\n# show all nodes that are marked as WIP\n% knife wip list\n1 nodes found with work in progress\n\nweb01.example.com: dschauenberg:testing php build\n\n# remove the WIP tag\n% knife node unwip web01.example.com testing php build\nDeleted WIP description \"wip:dschauenberg:testing php build\" for node web01.example.com.\n```\n\n## Plugins\nknife-wip has a plugin system that makes it possible to perform custom actions\nwhen work is started or stopped.\n\n\n### Configuration format\nknife-wip reads its configuration from different files in the following order:\n\n- `$COOKBOOKPATH/config/knife-wip-config.yml`\n- `config/knife-wip-config.yml`\n- `/etc/knife-wip-config.yml`\n- `~/.chef/knife-wip-config.yml`\n\nAnd the file should be YAML and look something like this:\n\n```\nplugins:\n  irccat:\n    server: irccat.example.com\n    port: 12345\n    channels:\n      - \"#chef\"\n```\n\nThe key of the plugin configuration is what knife-wip uses to try and load the\ncorresponding ruby file under `lib/knife-wip/plugins`. So it needs to exist\nthere first.\n\n### Plugin format\nA simple plugin just needs to inherit from `KnifeWip::Plugin` and implement\nthe two methods `wip_start` and `wip_stop`. Those methods get passed in the\nuser, tag and node for the command that was performed. When the plugin gets\ninstantiated it also gets its configuration from the config file passed in and\nit's available as the `@config` instance variable in there.\n\n```\nmodule KnifeWip\n  module Plugins\n    class LolFormatter \u003c KnifeWip::Plugin\n\n      def wip_start(user, tag, node)\n      end\n\n      def wip_stop(user, tag, node)\n      end\n\n\n    end\n  end\nend\n```\n\n\n\n## Installation\n\n```\ngem install knife-wip\n```\n\n\n## Bugs\nProbably. Please file a ticket [here][issues]\n\n\n\n[tags]: https://docs.getchef.com/knife_tag.html\n[issues]: https://github.com/mrtazz/knife-wip/issues\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrtazz%2Fknife-wip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrtazz%2Fknife-wip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrtazz%2Fknife-wip/lists"}