{"id":13770273,"url":"https://github.com/hernanmd/pi","last_synced_at":"2025-06-23T06:40:41.341Z","repository":{"id":29720923,"uuid":"118290841","full_name":"hernanmd/pi","owner":"hernanmd","description":"Pharo Install - A CLI tool for installing Pharo Smalltalk packages","archived":false,"fork":false,"pushed_at":"2025-04-18T11:16:55.000Z","size":2762,"stargazers_count":39,"open_issues_count":8,"forks_count":3,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-19T00:45:34.377Z","etag":null,"topics":["package-manager","pharo","pharo-smalltalk","smalltalk","smalltalkhub","smalltalkhub-repositories"],"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/hernanmd.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}},"created_at":"2018-01-21T00:00:19.000Z","updated_at":"2025-04-18T11:16:59.000Z","dependencies_parsed_at":"2024-01-06T21:44:47.130Z","dependency_job_id":"555dc786-4965-4a0a-9f40-5848f56afd27","html_url":"https://github.com/hernanmd/pi","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/hernanmd/pi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hernanmd%2Fpi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hernanmd%2Fpi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hernanmd%2Fpi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hernanmd%2Fpi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hernanmd","download_url":"https://codeload.github.com/hernanmd/pi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hernanmd%2Fpi/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261430859,"owners_count":23157164,"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":["package-manager","pharo","pharo-smalltalk","smalltalk","smalltalkhub","smalltalkhub-repositories"],"created_at":"2024-08-03T17:00:35.836Z","updated_at":"2025-06-23T06:40:36.332Z","avatar_url":"https://github.com/hernanmd.png","language":"Shell","funding_links":[],"categories":["Pharo images management"],"sub_categories":[],"readme":"[![license-badge](https://img.shields.io/badge/license-MIT-blue.svg)](https://img.shields.io/badge/license-MIT-blue.svg)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)\n[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](http://www.repostatus.org/badges/latest/active.svg)](http://www.repostatus.org/#active)\n\n# Table of Contents\n\n- [Description](#description)\n- [Demo](#demo)\n- [Requirements](#requirements)\n- [Installation](#installation)\n  - [Common steps](#common-steps)\n  - [Bash users](#bash-users)\n  - [Zsh users](#zsh-users)\n- [Features](#features)\n- [Usage Examples](#usage-examples)\n- [Troubleshooting](#troubleshooting)\n- [Contribute](#contribute)\n- [Change Log](./CHANGELOG.md)\n- [Develop](#develop)\n- [License](./LICENSE)\n\n# Description\n\nPharo Install - A command-line tool for installing [Pharo Smalltalk](https://www.pharo.org) packages.\n\nPI is a MIT-pip-like application installer for Pharo Smalltalk. Copy \u0026 pasting Pharo install scripts found in forums or the web is an easy method, but it’s also time consuming because of the manual interaction, and hard to make the process reproducible.\n\nPI turns copy \u0026 paste [Metacello](https://github.com/Metacello/metacello) install scripts into shell one-liners which works on Unix/Linux, MacOS and Windows (MinGW64/MSYS). \n\nPI automatically retrieves and parses Pharo GitHub repository information, and also downloads the latest stable Pharo image and virtual machine if none is found in the current directory. It also supports installing multiple packages at once.\n\n# Demo\n\n![pi-session](https://user-images.githubusercontent.com/4825959/173511060-95f1b227-d459-4097-b4e6-fcaa013768a1.gif)\n\n# Requirements\n\n  - bash or zsh\n  - curl or wget\n  - unzip\n  - jq (a command line JSON processor)\n    - Install for MSYS users: `pacman -Suy jq`\n    - Install for Linux users: `apt install jq` or `yum install jq` or `dnf install jq` etc.\n    - Install for macOS users: `brew install jq`\n  - gsed \n    - Install for MSYS users: `ln /usr/bin/sed.exe /usr/local/bin/gsed`\n    - Install for Linux users: `ln /usr/bin/sed /usr/local/bin/gsed`\n    - Install for macOS users: `brew install gsed`\n\n# Installation\n\n## Common steps\n\nThe first step is to download the package from a command line terminal:\n\n```bash\nbash -c \"$(curl -fsSL https://raw.githubusercontent.com/hernanmd/pi/master/install.sh)\"\n```\n\nThe next step is to configure your PATH variable to find the pi command. To find which shell you are using now, type:\n\n```bash\necho $0\n```\n\n## bash users\n\nTo persist usage between multiple shell sessions:\n```bash\necho \"export PATH=$HOME/.pi/pi/bin:$PATH\" \u003e\u003e ~/.bash_profile \nsource ~/.bash_profile\n```\n\n## zsh users\n\nTo persist usage between multiple shell sessions:\n```bash\necho -n 'export PATH=$HOME/.pi/pi/bin:$PATH' \u003e\u003e ~/.zshrc\nsource ~/.zshrc\n```\n\n# Features\n\n  - PI can install and list packages from GitHub repositories.\n  - If the Github repository has \"pharo\" as topic, it will be listed.\n  - It works with curl or wget.\n  - Supports case-insensitive searching for package names or developer user name.\n  - The \"image\" option download the current Pharo \"stable\" version to the current working directory.\n\n# Usage examples\n\nInstallable packages must contain:\n\n  - A Github README.md file\n  - \"pharo\" specified as topic. \n  - A Metacello installation script delimited with smalltalk backticks and ending with a dot \".\".\n  \nIf the current directory already contains a Pharo image, PI will use that image, otherwise it will download a new stable image.\n\n### Installing\n\nInstalling a stable Pharo image in the current directory:\n```bash\npi image\n```\n\nInstall and run the latest Pharo image in a new timestamped directory:\n```bash\npi nlrun\n```\n\nInstalling NeoCSV package:\n```bash\npi install NeoCSV\n```\n\nInstalling multiple packages:\n```bash\npi install Diacritics ISO3166 StringExtensions\n```\n\n### Listing\n\nList packages from GitHub\n```bash\npi list\n```\n\n### Searching\n\nSearch in GitHub repositories:\n\n```bash\npi search microdown\n```\n\nOutput may contain multiple repositories\n\n```bash\npi search magritte\nGitHub: peteruhnak/xml-magritte-generator\nGitHub: philippeback/Magritte3Doc\nGitHub: grype/Magritte-Swift\nGitHub: hernanmd/Seaside-Magritte-Voyage\nGitHub: hernanmd/Seaside-Bootstrap-Magritte-Voyage\nGitHub: udoschneider/BootstrapMagritte\n```\n\nin that case, disambiguate specifying \u003cowner\u003e/\u003crepository_name\u003e, ex:\n\n```bash\npi install grype/Magritte-Swift\n```\n\n# Troubleshooting\n\nIf you experiment problems with pi, please run the collect environment script: \n\n```bash\n./runPiCollectEnv\n```\n\nAnd open an issue with the output in the [Issue Tracker](https://github.com/hernanmd/pi/issues)).\n\nYou can obtain the pi version with:\n\n```bash\npi version\n```\n\n# Contribute\n\n**Working on your first Pull Request?** You can learn how from this *free* series [How to Contribute to an Open Source Project on \nGitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github)\n\nIf you have discovered a bug or have a feature suggestion, feel free to create an issue on Github.\n\nIf you'd like to make some changes yourself, see the following:\n\n  - Fork this repository to your own GitHub account and then clone it to your local device\n  - Edit the pi file with your favorite text editor.\n  - Test PI.\n  - Add \u003cyour GitHub username\u003e to add yourself as author below.\n  - Finally, submit a pull request with your changes!\n  - This project follows the [all-contributors specification](https://github.com/kentcdodds/all-contributors). Contributions of any kind are welcome!\n\n# Develop\n\n## To add tests\n  \n  - Have a look at [bats](https://github.com/bats-core/bats-core).\n  - Check the .bats files in the tests directory\n  \n## To deploy a new release\n  \n  - Install [release-it](https://www.npmjs.com/package/release-it)\n  - Copy or setup a [GitHub token](https://github.com/settings/tokens)\n  - Evaluate `export GITHUB_TOKEN=...` with the coped token as value. Alternatively, log-in to your GitHub account with your web browser and release-it will authenticate.\n  - Ensure NVM is installed and accessible running: `source ~/.nvm/nvm.sh`\n  - To interactively deploy  run `./deploy.sh`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhernanmd%2Fpi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhernanmd%2Fpi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhernanmd%2Fpi/lists"}