{"id":15681401,"url":"https://github.com/uncenter/purr","last_synced_at":"2025-09-02T18:45:01.011Z","repository":{"id":241432010,"uuid":"805631586","full_name":"uncenter/purr","owner":"uncenter","description":"🐈 Unoffical CLI for Catppuccin port developers.","archived":false,"fork":false,"pushed_at":"2025-05-19T04:10:37.000Z","size":432,"stargazers_count":22,"open_issues_count":6,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-01T19:52:54.058Z","etag":null,"topics":["catppuccin","cli","rust","userstyles"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/catppuccin-purr","language":"Rust","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/uncenter.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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},"funding":{"ko_fi":"uncenter","liberapay":"uncenter"}},"created_at":"2024-05-25T03:07:21.000Z","updated_at":"2025-08-25T17:19:52.000Z","dependencies_parsed_at":"2024-07-09T15:26:01.898Z","dependency_job_id":"2d712f08-a5fb-47e0-8b96-986971863637","html_url":"https://github.com/uncenter/purr","commit_stats":null,"previous_names":["uncenter/purr"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/uncenter/purr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uncenter%2Fpurr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uncenter%2Fpurr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uncenter%2Fpurr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uncenter%2Fpurr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uncenter","download_url":"https://codeload.github.com/uncenter/purr/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uncenter%2Fpurr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273183183,"owners_count":25059811,"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-09-01T02:00:09.058Z","response_time":120,"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":["catppuccin","cli","rust","userstyles"],"created_at":"2024-10-03T16:53:52.524Z","updated_at":"2025-09-02T18:45:00.960Z","avatar_url":"https://github.com/uncenter.png","language":"Rust","funding_links":["https://ko-fi.com/uncenter","https://liberapay.com/uncenter"],"categories":[],"sub_categories":[],"readme":"# purr\n\nAn unofficial CLI for Catppuccin developers; query data about Catppuccin ports and [userstyles](https://github.com/catppuccin/userstyles), star counts of the organization as a whole or individual repositories, the [Whiskers](https://github.com/catppuccin/whiskers) port creation tool migration, or even initialize a new port/userstyle from the upstream template.\n\n## Installation\n\n### Cargo\n\n```sh\ncargo install catppuccin-purr\n# or\ncargo install --git https://github.com/uncenter/purr.git\n```\n\n### Arch\n\n[purr](https://aur.archlinux.org/packages/purr/) is available as an AUR package.\nIt can be installed with an AUR helper (e.g. `paru`):\n\n```sh\nparu -S purr\n```\n\n### Nix\n\n```\nnix run github:uncenter/purr\n```\n\n## Usage\n\n```\npurr \u003cCOMMAND\u003e [-h | --help] [-V | --version]\n```\n\n### Commands\n\n- [`query`](#query)\n  - [`maintained`](#maintained)\n  - [`has`](#has)\n  - [`stars`](#stars)\n  - [`whiskers`](#whiskers)\n- [`init`](#init)\n- [`whiskerify`](#whiskerify)\n\n### `query`\n\n```\npurr query [--for \u003cPORT\u003e] [-g | --get] [-c | --count] [--userstyles | --no-userstyles | --only-userstyles]\n```\n\nQuery the ports.yml data source. With no arguments, all ports are displayed. The `--count` and userstyles-related flags work for all of the query subcommands.\n\n\u003cdetails\u003e\n\u003csummary\u003eExamples\u003c/summary\u003e\n\n- List all ports.\n\n  ```\n  purr query\n  ```\n\n- List all ports excluding userstyles.\n\n  ```\n  purr query --no-userstyles\n  ```\n\n- List all userstyles.\n\n  ```\n  purr query --only-userstyles\n  ```\n\n- Count the number of ports.\n\n  ```\n  purr query --count\n  ```\n\n- List the names of all ports.\n\n  ```\n  purr query --get name\n  ```\n\n- List the current maintainers of the `nvim` port.\n\n  ```\n  purr query --for nvim --get current-maintainers\n  ```\n\n\u003c/details\u003e\n\n#### `maintained`\n\n```\npurr query maintained [--by \u003cNAME\u003e] [-n | --not] [-c | --count]\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eExamples\u003c/summary\u003e\n\n- List maintained ports.\n\n  ```\n  purr query maintained\n  ```\n\n- Count the number of maintained ports.\n\n  ```\n  purr query maintained --count\n  ```\n\n- List *un*maintained ports.\n\n  ```\n  purr query maintained --not\n  ```\n\n- Count the number of *un*maintained ports.\n\n  ```\n  purr query maintained --not --count\n  ```\n\n- List ports maintained by `\u003cusername\u003e`.\n\n  ```\n  purr query maintained --by \"\u003cusername\u003e\"\n  ```\n\n- Count the number of ports maintained by `\u003cusername\u003e`.\n\n  ```\n  purr query maintained --by \"\u003cusername\u003e\" --count\n  ```\n\n- List ports _not_ maintained by `\u003cusername\u003e`.\n\n  ```\n  purr query maintained --by \"\u003cusername\u003e\" --not\n  ```\n\n- Count the number of ports _not_ maintained by `\u003cusername\u003e`.\n\n  ```\n  purr query maintained --by \"\u003cusername\u003e\" --not --count\n  ```\n\n\u003c/details\u003e\n\n#### `has`\n\n```\npurr query has [PROPERTIES] [-n | --not] [-c | --count]\n```\n\n**Properties:**\n\n- `--name \u003cNAME\u003e`\n- `--category \u003cCATEGORIES\u003e`\n- `--upstreamed`\n- `--platform \u003cPLATFORM\u003e`\n- `--icon \u003cICON\u003e`\n- `--color \u003cCOLOR\u003e`\n- `--alias`\n- `--url \u003cURL\u003e`\n\n\u003cdetails\u003e\n\u003csummary\u003eExamples\u003c/summary\u003e\n\n- List ports with `color` set to `mauve`.\n\n  ```\n  purr query has --color mauve\n  ```\n\n- Count the number of ports that have `color` set to `mauve`.\n\n  ```\n  purr query has --color mauve --count\n  ```\n\n- Count the number of ports that have `color` set to anything other than `mauve`.\n\n  ```\n  purr query has --color mauve --not --count\n  ```\n\n- List ports that do not have `icon` defined.\n\n  ```\n  purr query has --icon --not\n  ```\n\n- List ports with categories of `application_launcher` and `system`.\n\n  ```\n  purr query has --category application_launcher,system\n  ```\n\n\u003c/details\u003e\n\n#### `stars`\n\n```\npurr query stars [--for \u003cREPOSITORY\u003e] [--archived]\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eExamples\u003c/summary\u003e\n\n- Get the total stars for all repositories across the organization.\n\n  ```\n  purr query stars\n  ```\n\n- Get the total stars for all non-archived repositories across the organization.\n\n  ```\n  purr query stars --archived false\n  ```\n\n- Get the total stars for only archived repositories across the organization.\n\n  ```\n  purr query stars --archived true\n  ```\n\n- Get the stars for a repository called `\u003crepository\u003e`.\n\n  ```\n  purr query stars --for \"\u003crepository\u003e\"\n  ```\n\n\u003c/details\u003e\n\n#### `whiskers`\n\n```\npurr query whiskers [--is \u003cSTATE\u003e] [-n | --not] [-c | --count | -p | --percentage]\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eExamples\u003c/summary\u003e\n\n- Get the overall statistics of the Whiskerification process.\n\n  ```\n  purr query whiskers\n  ```\n\n- List Whiskerified repositories.\n\n  ```\n  purr query whiskers --is true\n  ```\n\n- List non-Whiskerified repositories.\n\n  ```\n  purr query whiskers --is false\n  ```\n\n- List repositories Whiskers is not applicable for.\n\n  ```\n  purr query whiskers --is not-applicable\n  ```\n\n- List repositories Whiskers _is_ applicable for.\n\n  ```\n  purr query whiskers --is not-applicable --not\n  ```\n\n\u003c/details\u003e\n\n### `init`\n\nThe `init` command accepts each value (name, categories, etc.) via arguments, though if not provided a series of prompts will be displayed instead.\n\n```\npurr init \u003cTEMPLATE\u003e [PROPERTIES]\n```\n\n#### Templates\n\n| Template    | Available Properties/Flags                 |\n| ----------- | ------------------------------------------ |\n| `port`      | `name`, `url`                              |\n| `userstyle` | `name`, `category`, `icon`, `color`, `url` |\n\n### `whiskerify`\n\n```\npurr whiskerify \u003cPATH\u003e [-o | --output \u003cPATH\u003e]\n```\n\nWhiskerify a file by replacing Catppuccin colors and names with Tera expressions. Prints the output or writes to the `--output` file path if given.\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funcenter%2Fpurr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funcenter%2Fpurr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funcenter%2Fpurr/lists"}