Skip to main content

Package Manager Utility

Project description

doto

Dotfiles management with Python and Ansible This tool aims to be poetry for Ubuntu. It helps maintaing a manifest file that keeps track of the packages and other setting to apply to a system.

Similar to poetry you can run doto add [package] which will add the package to the manifest file and install it.

The backend for the first version will be Ansible but with an abstaraction layer to be able to replace it in the future.

Features

  • Manage packages from different sources

  • Manage hosts

    • This allows you to add package to a specific host. For example if you have a workstation and a laptop you might want to apply different settings and packages.
  • Add comments to package entries in the Manifest file.

  • CLI to manage and view manifest file.

  • Sync the manifest to a remote repository via Git

  • Besides packages one can also choose to add and apply an Ansible Role which is maintained and tested in a separate repository.

  • Testing and Dry run. By using the test tools available for Ansible one can add a package in a dry-run and create a VM to apply the new manifest to verify that the outcome is a expected. Command could be doto deploy host

Future:

  • The tool manages a local manifest file on each host to avoid to keep track of packages that are already installed.

Data Structures

Overview of Data Structures:

  • Manifest file

    • Hosts
  • Host

    • Name

    • Platform

      • rpi
      • vm
      • x86
      • arm
    • Tags:

      • coding
      • workstation
      • laptop
      • video_editing
    • Packages

Packages don't require any configuration besides installing them.

  • Package
    • name
    • version
    • comment

Commands

doto add [package] will check the available package managers for the package and ask which source to select. A default can be set or the option --package-manager can be provided

  • apt
  • appimage
    • Github release page
  • Flatpak
  • Snap
  • pypi

Development

docker build -t doto-ci . docker run --rm -v $PWD:/workspaces/doto -w /workspaces/doto doto-ci bash -c 'poetry run inv python.ci' docker run --rm -v $PWD:/workspaces/doto -w /workspaces/doto --user $(id -u):$(id -g) doto-ci bash -c 'poetry run inv python.ci'

Setup for development

Ansible

Running ansible playbook

cd ansible
ansible-galaxy install -r requirements.yml
ansible-playbook -i inventory main.yml

Vagrant

VirtualBox

VBoxManage list runningvms | cut -d '"' -f 2 | xargs -I {} VBoxManage controlvm {} poweroff soft && VBoxManage list vms | cut -d '"' -f 2 | xargs -I {} VBoxManage unregistervm {} --delete

TODO

  • 2024-03-10:

  • 2024-02-22:

    • molecule test does not create a box, I have to run molecule converge first.
    • virtulabox got installed and was signed automatically, need to figure out why. dpkg package?

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

dotocli-0.1.0.tar.gz (17.5 kB view details)

Uploaded Source

Built Distribution

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

dotocli-0.1.0-py3-none-any.whl (20.4 kB view details)

Uploaded Python 3

File details

Details for the file dotocli-0.1.0.tar.gz.

File metadata

  • Download URL: dotocli-0.1.0.tar.gz
  • Upload date:
  • Size: 17.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.3 Linux/6.8.0-71-generic

File hashes

Hashes for dotocli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 22aa3113178accb5f67cfa9b9d5cf1fb10aff2ffa6e31a1a89122548b5817c02
MD5 56f8cb6122384c7fd0189e639abadd5d
BLAKE2b-256 3f666677183d13f0de25b22dce0230feae27b5c874bbf44a305fac1877a17553

See more details on using hashes here.

File details

Details for the file dotocli-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: dotocli-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 20.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.3 Linux/6.8.0-71-generic

File hashes

Hashes for dotocli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 291eba03b14932db3ffd29db58e6584aad134c719c47ec5d7e3b6c6e535c86bc
MD5 73a8ea143849f0abb59bcf04a2a79a88
BLAKE2b-256 0f12ebd7e749de5ec741b4da092ad2706a923a7b76f0397e7da3da846422c7c9

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