{"id":22465986,"url":"https://github.com/benitolopez/p","last_synced_at":"2026-05-09T10:38:52.161Z","repository":{"id":198627698,"uuid":"73525453","full_name":"benitolopez/p","owner":"benitolopez","description":"Project automator for Bash and Zsh","archived":false,"fork":false,"pushed_at":"2016-12-16T00:19:17.000Z","size":9,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-01T19:12:06.381Z","etag":null,"topics":["bash","project-management","tool","zsh"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/benitolopez.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}},"created_at":"2016-11-12T02:00:06.000Z","updated_at":"2023-10-20T16:47:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"9b87e790-e4dd-4399-b65e-856569813e57","html_url":"https://github.com/benitolopez/p","commit_stats":null,"previous_names":["benitolopez/p"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benitolopez%2Fp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benitolopez%2Fp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benitolopez%2Fp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benitolopez%2Fp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/benitolopez","download_url":"https://codeload.github.com/benitolopez/p/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245867240,"owners_count":20685595,"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":["bash","project-management","tool","zsh"],"created_at":"2024-12-06T10:09:47.922Z","updated_at":"2026-05-09T10:38:47.109Z","avatar_url":"https://github.com/benitolopez.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# P\n\n**P** is a minimal project automator for Bash and Zsh. It was inspired by [prm](https://github.com/eivind88/prm), an awesome project of Eivind Arvesen. While I'm still thinking that *prm* is very good, I was looking for a project manager with a different logic and more simple. During the day, I switch between projects constantly, losing a lot of time. Sometimes I need to start some common tasks (launch Vim, start Gulp and so on), but often I only need to open the project with my editor.\n\nThat's why I have created **P**.\n\n## How it works\n\nWhen you run **P**, you run the script associated to your project. You can open a new shell window, start a task runner or run a command. It's up to you. **P** creates this script with only one variable, `PROJECT_PATH`, the path of your project.\n\nExample:\n\n```bash\n# cd to your project directory\ncd $PROJECT_PATH\n\n# run Gulp\ngulp\n```\n\n## Installation\n\nClone this repository:\n\n```bash\ngit clone https://github.com/benitolopez/p.git\n```\n\nThen add something like this in your `.bashrc`:\n\n```bash\n. /path/to/p.sh\n```\n\nAnd ensure the script is executable\n\n```bash\nchmod +x /path/to/p.sh\n```\n\n## Usage\n\n```bash\nUsage: p \u003coption\u003e\n\n    Options:\n\t\u003cproject name\u003e           Run project(s) configuration script.\n    add \u003cproject name\u003e       Add project.\n    list                     List all projects.\n    delete \u003cproject name\u003e    Delete project(s).\n    o \u003cproject name\u003e         Open project(s) with the default editor.\n\tg \u003cproject name\u003e         Go to the project directory.\n    edit \u003cproject name\u003e      Edit project(s).\n\trename \u003cold\u003e \u003cnew\u003e       Rename project.\n    -h --help                Display this information.\n    -v --version             Display version info.\n```\n\nSo, to add a project just run `p add \u003cproject name\u003e` from the root of your project. This creates a `\u003cproject name\u003e.sh` file in `~/.projects/`. Then you can run that script with `p \u003cproject name\u003e`.\n\nYou can run multiple projects at once with:\n\n```bash\np \u003cproject1 name\u003e \u003cproject2 name\u003e \u003cproject3 name\u003e\n```\n\nBut sometimes you only need a quick way to open a project with your default editor. In this case, just run (multiple projects allowed):\n\n```bash\np o \u003cproject name\u003e\n```\n\nAnd to go the project directory run:\n\n```bash\np g \u003cproject name\u003e\n```\n\n## Options\n\nYou can modify some defaults exporting these environment variables:\n\n```\n_P_CMD           # the P command, default 'p'\n_P_DIR           # projects directory where the scripts are saved\n                   default '~/.projects'\n_P_OPEN_FUNC     # function used to open the project with \n                   your default editor, default '$EDITOR .'\n```\n\n## License\n\n[MIT](http://opensource.org/licenses/MIT)\nCopyright (c) 2016 [Benito Lopez](http://lopezb.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenitolopez%2Fp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbenitolopez%2Fp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenitolopez%2Fp/lists"}