Skip to main content

Cross-platform application management aggregator

Project description

appman

appman is cross-platform application management aggregator

Build Status

Requirements

  • Python 3.8

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

appman-0.4.1.tar.gz (11.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

appman-0.4.1-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

File details

Details for the file appman-0.4.1.tar.gz.

File metadata

  • Download URL: appman-0.4.1.tar.gz
  • Upload date:
  • Size: 11.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.6 CPython/3.9.5 Linux/5.4.72-microsoft-standard-WSL2

File hashes

Hashes for appman-0.4.1.tar.gz
Algorithm Hash digest
SHA256 5760238ed28eaa7ca3b57bcd097ae9bddde9752abe361171b4ef0a2e5ebe37dc
MD5 248fd3945d8e4c46b9534981455c4ed5
BLAKE2b-256 f14fe5d4ae509f44e82f7030315c0283a86c5f1930d8c6753711246e89b398cd

See more details on using hashes here.

File details

Details for the file appman-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: appman-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 13.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.6 CPython/3.9.5 Linux/5.4.72-microsoft-standard-WSL2

File hashes

Hashes for appman-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c6f02abe30afeaeb3ba713062b233d4fbfa1a8a012cb4e0e73383ad63a600df9
MD5 379e5408136f2115abc4904fdf8a6492
BLAKE2b-256 ec80900163d4e55894eaad09f43bc9744d2825a998209295bc4a6c7984c372db

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page