{"id":15570473,"url":"https://github.com/cipherboy/p","last_synced_at":"2025-04-24T00:24:41.910Z","repository":{"id":147154937,"uuid":"158325483","full_name":"cipherboy/p","owner":"cipherboy","description":"p is a concise, opinionated interface over pass","archived":false,"fork":false,"pushed_at":"2022-02-17T00:17:42.000Z","size":371,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-30T05:11:24.493Z","etag":null,"topics":["json","pass","password","password-store"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cipherboy.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}},"created_at":"2018-11-20T03:26:31.000Z","updated_at":"2022-10-15T12:04:06.000Z","dependencies_parsed_at":"2023-06-02T10:00:22.471Z","dependency_job_id":null,"html_url":"https://github.com/cipherboy/p","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/cipherboy%2Fp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cipherboy%2Fp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cipherboy%2Fp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cipherboy%2Fp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cipherboy","download_url":"https://codeload.github.com/cipherboy/p/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250536749,"owners_count":21446792,"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":["json","pass","password","password-store"],"created_at":"2024-10-02T17:42:27.265Z","updated_at":"2025-04-24T00:24:41.897Z","avatar_url":"https://github.com/cipherboy.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `p`\n\n`p` is a concise, opinionated interface over pass\n\n\n## Requirements\n\nBuilding `p` requires `python` to be installed; Python 3 is necessary to use\n`sharg`.\n\nPlease install the [`sharg`](https://github.com/cipherboy/sharg) Python\nmodule; this provides our command line argument parsing logic.\n\nUsing `p` requires `pass` and `jq` to be installed, or at least, available on\nthe system. However, additional functionality is provided by:\n\n - `su` -- for local user changes\n - `ssh` -- for executing `p` on remote servers\n - `tree`, `sed`, `grep`, `cat` and other Unix utilities.\n\n\n## Building\n\nTo build `p`, cd into the main directory, and run the build script.\n\n    cd p/\n    ./build.py\n\nThis will create a directory, `bin/` with the built `p` command:\n\n    ls `bin/p`\n\nThis script can be relocated anywhere and used assuming the dependencies above\nare on the target system.\n\n(Why a build system? The script was getting a little long so I split it int\n separate files. I wanted to be able to copy a single script anywhere and\n use it immediately, so the build script converts `. \u003cpath\u003e` style imports\n into a single file. If you don't want to build `p`, you can test it with\n `cd p/src` and running `bash main.bash \u003cargs\u003e`.)\n\n\n## Philosophy\n\n`p` is concise in that common operations are given one-letter command aliases;\ne.g., `p g \u003cfile\u003e [\u003ckey\u003e]` fetches the given JSON key (if specified, otherwise,\ndefaults to `password`) from the specified file.\n\n`p` is opinionated in that it prefers metadata to be stored as JSON, while\nremaining compatible with the de facto standard of first line being the target\npassword. Also, `p` insists that there's one right command to perform an\naction, unlike pass where the following are equivalent:\n\n - `pass \u003cfile\u003e`\n - `pass ls \u003cfile\u003e`\n - `pass show \u003cfile\u003e`\n\nUnder `p`, the `ls` operation only lists files and directories and will not\nshow the contents of the file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcipherboy%2Fp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcipherboy%2Fp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcipherboy%2Fp/lists"}