Package: appman
appmanappman is cross-platform application management aggregatorRequirementsPython 3.8GitInstallationYou can install appman fromPyPI:>pipinstallappmanBackgroundWhile working on mydotfilesrepository, 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.GoalsThe 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 agit repository, which allows you to fork and use your own repository.How to useSet up your user package listAdd a package to your user packages listUsing interactive mode:$appmanadd[?] Select the package type: (Use arrow keys)>appfontdriverprovisionedbackendextension[?] 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 packageor directly passing parameters:$appmanadd-ptapp-idgitRemove a previously added packageUsing interactive mode:$appmanremove[?] Select the package type: (Use arrow keys)>appfontdriverprovisionedbackendextension[?] Select app packages to remove: (<up>, <down> to move, <space> to select, <a> to toggle, <i> to invert)○ 7zip○ curl>● git○ ...Removed git packageDirectly passing parameters:$appmanremove-ptapp-idgitShow your user packages listUsing interactive mode:$appmanlist[?] Select the package type: (Use arrow keys)>app• 7zip (cli, utils)• curl (cli, utils)Directly passing parameters:$appmanlist-ptappSearch all available packages to addUsing interactive mode:$appmansearch[?] Select the package type: (Use arrow keys)>app• 7zip• ack• apache2• aria2• bottom• broot• cookiecutter• curl...Directly passing parameters:$appmansearch-ptapp-id7zipInstall/Uninstall packages in your user packages listUsing interactive mode:$appmaninstall[?] Select the package type: (Use arrow keys)>appInstalling 7zip...Installing ack......Directly passing parameters:$appmaninstall-ptapp-id7zipChange the package definitions repository source$appmanrepohttps://github.com/basiliskus/appman-mainUpdate the package definitions repository source$appmanupdateUsing labelsAll 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.$appmanadd-ptapp-id7zip-lserverYou can also filter by labels when using the 'list', 'search', 'remove', 'install' or 'uninstall' commands$appmanlist-ptapp-lserverLicense© Basilio Bogado. Distributed under theMIT License.