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 details)

Uploaded Source

Built Distribution

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

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: appman-0.4.5.tar.gz
  • Upload date:
  • Size: 193.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.10.5 Linux/5.18.13-200.fc36.x86_64

File hashes

Hashes for appman-0.4.5.tar.gz
Algorithm Hash digest
SHA256 878163e2dff3215be440fe2e26e63522c0ccba21eeda8141d13ee56f6f86f511
MD5 380febd361f19d535ee1c4814cb7f475
BLAKE2b-256 98e8cedebbacd3f7e13f76cee184fe6057209c4a7aacffebc7a87d9287ea0722

See more details on using hashes here.

File details

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

File metadata

  • Download URL: appman-0.4.5-py3-none-any.whl
  • Upload date:
  • Size: 284.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.10.5 Linux/5.18.13-200.fc36.x86_64

File hashes

Hashes for appman-0.4.5-py3-none-any.whl
Algorithm Hash digest
SHA256 99999ebbd3ba9bc30cd1fd2fee6a3562aad823f1a6551e048d0b04bd19c27f24
MD5 d511106af16085ad7343ada9e4b21600
BLAKE2b-256 4d82cc1a70e1e2ea13fa5585bdbf299c7bdc6d91ab79d0688478c3f2997d7b5c

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