ipm

ipm - Integrated Package Manager πŸš€

Table of Contents πŸ“‘

About ℹ️

Integrated Package Manager (ipm) is a powerful, cross-platform tool designed to unify the command-line interface (CLI) commands for various package managers. It acts as a universal frontend, working on top of other package managers to provide a seamless and consistent experience for managing software packages across different operating systems.

In today’s diverse development environments, developers, software engineers, and system engineers often face the challenge of dealing with multiple package managers, each with its own set of commands and interfaces. This can lead to inefficiencies, errors, and a steep learning curve, especially when switching between different platforms.

ipm aims to solve these issues by offering a single, unified CLI that abstracts away the complexities of individual package managers. Whether you’re working on Windows, Linux, or macOS, ipm provides a consistent and intuitive interface for installing, updating, and removing software packages. By standardizing package management commands, ipm simplifies the workflow, reduces the potential for errors, and enhances productivity.

$ ipm 
Usage:
  ipm [command]

Available Commands:
  manager     Manage package manager configurations
  info        Execute info command for apt
  install     Execute install command for apt
  list        Execute list command for apt
  search      Execute search command for apt
  uninstall   Execute uninstall command for apt
  update      Execute update command for apt
  upgrade     Execute upgrade command for apt
  upgrade-all Execute upgrade-all command for apt
  apk         Run apk commands
  apt         Run apt commands
  brew        Run brew commands
  choco       Run choco commands
  dnf         Run dnf commands
  emerge      Run emerge commands
  eopkg       Run eopkg commands
  npm         Run npm commands
  pip         Run pip commands
  pip3        Run pip3 commands
  winget      Run winget commands
  yum         Run yum commands
  zypper      Run zypper commands

Flags:
  -h, --help   help for ipm

Use "ipm [command] --help" for more information about a command.

Key Features ✨

Supported Package Managers πŸ“¦

Package Manager Enabled (default) Disabled (default)
apk βœ… ❌
apt βœ… ❌
brew βœ… ❌
cards ❌ βœ…
choco βœ… ❌
dnf βœ… ❌
emerge βœ… ❌
eopkg βœ… ❌
flatpak ❌ βœ…
guix ❌ βœ…
nala ❌ βœ…
nix-env ❌ βœ…
npm βœ… ❌
opkg ❌ βœ…
pacman ❌ βœ…
pip βœ… ❌
pip3 βœ… ❌
scoop ❌ βœ…
slackpkg ❌ βœ…
snap ❌ βœ…
winget βœ… ❌
xbps ❌ βœ…
yum βœ… ❌
zypper βœ… ❌

Installation πŸ› οΈ

Pre-built Binaries πŸ“¦

Pre-built binaries for various platforms are available in the releases section. Download the appropriate binary for your platform and add it to your system’s PATH.

Download the Binary ⬇️

Navigate to the releases page and download the binary for your operating system.

Move the Binary to a Directory πŸš‚

Move the downloaded binary to a directory of your choice.

Add the Binary to PATH 🫡

Add the directory containing the binary to your system’s PATH. This allows you to run ipm from any terminal session.

Unix-like systems (Linux/macOS) 🐧🍏
# Add the directory to your PATH
echo 'export PATH=$PATH:/path/to/ipm' >> ~/.bashrc
source ~/.bashrc
Windows πŸ’»
# Add the directory to your PATH
[System.Environment]::SetEnvironmentVariable("Path", $env:Path + ";path\to\ipm", [System.EnvironmentVariableTarget]::Machine)

Building from Source πŸ—οΈ

To build ipm from source, you need to have Go installed on your system.

Clone the Repository πŸŒ€

git clone https://github.com/your-repo/ipm.git
cd ipm

Make Build πŸ”¨

To build ipm, you can use the provided build scripts.

Shell Script (Linux/macOS) 🐧🍏
PowerShell Script (Windows) πŸ’»

These scripts will build the binaries for the multiple platforms and create archives (ZIP for Windows and TAR.GZ for other platforms) in the dist/release directory.

Dockerfiles 🐳

Dockerfiles are provided to build Docker images for ipm. These Dockerfiles are located in the dockerfiles directory.

Building Docker Images πŸ—οΈ

To build a Docker image for ipm, run the following command from project root:

docker build -t ipm-<package-manager-name>:latest -f dockerfiles/<package-manager-name>/Dockerfile .

Running Docker Container πŸš€

To run ipm Docker container:

docker run --rm -it ipm-<package-manager-name>:latest /bin/sh

Usage πŸ“‹

Default Package Manager (auto-detected) πŸ”

Basic Commands πŸ“

List Installed Packages πŸ“œ
ipm list
Search for a Package πŸ”Ž
ipm search <package-name>
Check Information about a Package ℹ️
ipm info <package-name>
Install a Package πŸ“₯
ipm install <package-name>
Update Index of the Package Manager πŸ”„
ipm update
Upgrade a Package ⬆️
ipm upgrade <package-name>
Upgrade all Packages ⬆️⬆️
ipm upgrade-all
Remove a package πŸ—‘οΈ
ipm uninstall <package-name>

Example πŸ’‘

To install the jq package:

ipm install jq

Custom Package Manager πŸ› οΈ

Basic Commands πŸ“

List Installed Packages πŸ“œ
ipm <package-manager> list
Search for a Package πŸ”Ž
ipm <package-manager> search <package-name>
Check Information about a Package ℹ️
ipm <package-manager> info <package-name>
Install a Package πŸ“₯
ipm <package-manager> install <package-name>
Update Index of the Package Manager πŸ”„
ipm <package-manager> update
Upgrade a Package ⬆️
ipm <package-manager> upgrade <package-name>
Upgrade all Packages ⬆️⬆️
ipm <package-manager> upgrade-all
Remove a package πŸ—‘οΈ
ipm <package-manager> uninstall <package-name>

Example πŸ’‘

To install the fast-json-stringify package using npm:

ipm npm install fast-json-stringify

Configuration βš™οΈ

ipm uses a JSON configuration file to define custom commands and settings for different package managers. The configuration file is located in the config directory.

Example Configuration πŸ“„

{
  "enabled": true,
  "commands": {
    "info": "apt-cache show ",
    "install": "apt-get install -y ",
    "list": "dpkg --list",
    "search": "apt-cache search ",
    "uninstall": "apt-get remove -y ",
    "update": "apt-get update",
    "upgrade": "apt-get install --only-upgrade ",
    "upgrade-all": "apt-get upgrade"
  }
}

Contributing 🀝

Contributions are welcome! If you have suggestions for improvements, please open an issue or submit a pull request. For major changes, please open an issue first to discuss what you would like to change.

How to Contribute πŸ› οΈ

Code of Conduct πŸ“œ

This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code.

Acknowledgements πŸ™

I would like to extend my heartfelt thanks to all the developers and contributors whose work has made this project possible. Your dedication and contributions to the open-source community are invaluable, and I am grateful for the tools, libraries, and frameworks that you have created and maintained.

Special Thanks 🌟

I would like to specifically acknowledge the developers of the following tools, frameworks and dependencies which are used in this project:

Your hard work and commitment to excellence have made it possible for me to build ipm and provide a unified package management experience for developers across different platforms. Thank you for your contributions to the open-source ecosystem.

License πŸ“„

This project is licensed under the GPL-3.0 license. See the LICENSE file for details.