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
  • 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.
  • Package definitions source: the source for package definitions is a git repository, which allows you to fork and use your own repository.

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

Change the package definitions repository source

$ appman repo https://github.com/basiliskus/appman-main

Update the package definitions repository source

$ appman update

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.5.tar.gz (193.5 kB view hashes)

Uploaded Source

Built Distribution

appman-0.4.5-py3-none-any.whl (284.9 kB view hashes)

Uploaded Python 3

Supported by

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