Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/james-d12/apm
Agnostic Package Manager
https://github.com/james-d12/apm
command-line command-line-tool management package-manager rust
Last synced: 2 months ago
JSON representation
Agnostic Package Manager
- Host: GitHub
- URL: https://github.com/james-d12/apm
- Owner: james-d12
- License: lgpl-3.0
- Created: 2021-07-20T21:04:46.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-08-24T22:26:30.000Z (3 months ago)
- Last Synced: 2024-08-24T23:43:31.672Z (3 months ago)
- Topics: command-line, command-line-tool, management, package-manager, rust
- Language: Rust
- Homepage:
- Size: 78.1 KB
- Stars: 4
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
- License: License
Awesome Lists containing this project
README
# Agnostic Package Manager
[![Build](https://github.com/james-d12/Apm/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/james-d12/Apm/actions/workflows/ci.yml)
APM aims to be a multipurpose multiplatform package manager that wraps around some of the most common package managers for various distributions and platforms, making managing packages easier and less hassle.
# What does it do?
It is essentially a wrapper around other package managers. It autodetects the platform you are using and sets the package manager accordingly. After that all commands are then run using that package manager's appropriate command.
# List of supported Operating Systems and Distributions.
APM uses [os_info](https://github.com/stanislav-tkach/os_info) to get the current operating system and distribution. As a result it supports the most of the same stuff that os_info does, as long as I have added in the appropriate package manager [here](https://github.com/james-d12/Apm/tree/master/src/apm/managers)
# Commands
Apm takes in commands in the following format: `apm {COMMAND} {PACKAGE} {OPTIONS}`. Each is optional, with some commands requiring a package such as install, uninstall, etc.
| Command | Function | Requires Package |
| ----------- | --------------------------------------------------- | ---------------- |
| `install` | Installs a given package. | ✔️ |
| `uninstall` | Uninstalls a given package. | ✔️ |
| `update` | Updates package sources. | ❌ |
| `upgrade` | Upgrades packages to latest version. | ❌ |
| `search` | Searches for a given package (remote & local). | ✔️ |
| `list` | Lists all installed packages (local). | ❌ |
| `clean` | Cleans cache for package manager. | ❌ |
| `help` | Prints the help for the underlying package manager. | ❌ |# Coming features
- [ ] Support for more detailed arguments. For example some commands like 'update' have extra arguments to say update one package or all packages.
- [ ] Support for NPM and Local package management, alongside managing operating system packages.
- [ ] Extensive testing.## Package Managers
| Package Manager | Install | Uninstall | Update | Upgrade | Search | List |
| --------------- | ------- | --------- | ------ | ------- | ------ | ---- |
| **Apt** | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| **Apk** | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| **Yum** | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| **Dnf** | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| **Pacman** | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| **Zypper** | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| **Eopkg** | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| **Winget** | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| **Choco** | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| **Brew** | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| **NPM** | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| **Conan** | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |