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 Rolewhich is maintained and tested in a separate repository. -
Testing and Dry run. By using the test tools available for
Ansibleone 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 bedoto 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:
- Create PR:
- https://github.com/ansible/molecule/discussions/3914
- geerlingguy ansible playbook testing
- Have a dir with shared molecule files like prepare.yml
- Create PR:
-
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22aa3113178accb5f67cfa9b9d5cf1fb10aff2ffa6e31a1a89122548b5817c02
|
|
| MD5 |
56f8cb6122384c7fd0189e639abadd5d
|
|
| BLAKE2b-256 |
3f666677183d13f0de25b22dce0230feae27b5c874bbf44a305fac1877a17553
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
291eba03b14932db3ffd29db58e6584aad134c719c47ec5d7e3b6c6e535c86bc
|
|
| MD5 |
73a8ea143849f0abb59bcf04a2a79a88
|
|
| BLAKE2b-256 |
0f12ebd7e749de5ec741b4da092ad2706a923a7b76f0397e7da3da846422c7c9
|