Cross-platform application management aggregator
Project description
appman
appman is cross-platform application management aggregator
Requirements
- Python 3.8
- Git
Installation
You can install appman from PyPI:
> pip install appman
Background
While working on my dotfiles repository, I realized that I also wanted to have a way to handle not just configuration files but also my installed applications. That way I'd be able to define which applications I want to have installed on any new environment, have those under version control, and run a script to install/uninstall applications on any new personal or work computer, server, etc.
Goals
The main goal for appman is to be flexible and extensible. In that context the goals are:
- Cross-platform: handle multiple OS and devices. Currently appman handles Ubuntu and Windows (desktop).
- Multi-profile: define different profiles with a unique list of applications for different environments (e.g., work and personal computers).
- Supported Packages: aside from desktop and command line applications, support software like: device drivers, software plugins and extensions (e.g., vscode extensions), backend libraries (e.g., python libraries), fonts, etc.
- Package Management: support any package manager (e.g., apt, brew, scoop) or custom formulas to define how to install, uninstall and upgrade packages.
- Buckets: currently there is only one source to choose packages from, but the idea is to have any user able to create their own buckets which can then be shared and used by other users.
How to use
Set up your user package list
-
Add a package to your user packages list
Using interactive mode:
$ appman add [?] Select the package type: (Use arrow keys) >app font driver provisioned backend extension [?] Select app packages to add: (<up>, <down> to move, <space> to select, <a> to toggle, <i> to invert) ○ curl ○ fzf >● git ○ jq ○ python ○ ... Added git package
or directly passing parameters:
$ appman add -pt app -id git
-
Remove a previously added package
Using interactive mode:
$ appman remove [?] Select the package type: (Use arrow keys) >app font driver provisioned backend extension [?] Select app packages to remove: (<up>, <down> to move, <space> to select, <a> to toggle, <i> to invert) ○ 7zip ○ curl >● git ○ ... Removed git package
Directly passing parameters:
$ appman remove -pt app -id git
-
Show your user packages list
Using interactive mode:
$ appman list [?] Select the package type: (Use arrow keys) >app • 7zip (cli, utils) • curl (cli, utils)
Directly passing parameters:
$ appman list -pt app
-
Search all available packages to add
Using interactive mode:
$ appman search [?] Select the package type: (Use arrow keys) >app 7zip ack apache2 aria2 bottom broot cookiecutter curl ...
Directly passing parameters:
$ appman search -pt app -id 7zip
Install/Uninstall packages in your user packages list
Using interactive mode:
$ appman install
[?] Select the package type: (Use arrow keys)
>app
Installing 7zip...
Installing ack...
...
Directly passing parameters:
$ appman install -pt app -id 7zip
Using labels
All packages have pre-defined labels (e.g. for apps: 'cli' & 'gui'), but you can also add your own labels by passing the --labels/-l parameter to the 'add' command.
$ appman add -pt app -id 7zip -l server
You can also filter by labels when using the 'list', 'search', 'remove', 'install' or 'uninstall' commands
$ appman list -pt app -l server
License
© Basilio Bogado. Distributed under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.