This commit enhances the behaviour of pull_with_verification() and adds a
comprehensive unit test suite covering all control flows.
Changes:
- Added `preview` parameter to fully disable interaction and execution.
- Improved verification logic:
* Prompt only when not in preview, verification is enabled,
verification info exists, and verification failed.
* Skip prompts entirely when --no-verification is set.
- More explicit construction of `git pull` command with optional extra args.
- Improved messaging and formatting for clarity.
- Ensured directory existence is checked before any verification logic.
- Added detailed comments explaining logic and conditions.
Tests:
- New file tests/unit/pkgmgr/actions/repos/test_pull_with_verification.py
- Covers:
* Preview mode (no input, no subprocess)
* Verification failure – user rejects
* Verification failure – user accepts
* Verification success – immediate git call
* Missing repository directory – skip silently
* --no-verification flag bypasses prompts
* Command formatting with extra args
- Uses systematic mocking for identifier, repo-dir, verify_repository(),
subprocess.run(), and user input.
This significantly strengthens correctness, UX, and test coverage of the
repository pull workflow.
https://chatgpt.com/share/69384aaa-0c80-800f-b4b4-64e6fbdebd3b
Package Manager🤖📦
Kevins's Package Manager is a configurable Python tool designed to manage multiple repositories via Bash. It automates common Git operations such as clone, pull, push, status, and more. Additionally, it handles the creation of executable wrappers and alias links for your repositories.
Features 🚀
-
Installation & Setup:
Create executable wrappers with auto-detected commands (e.g.main.shormain.py). -
Git Operations:
Easily performgit pull,push,status,commit,diff,add,show, andcheckoutwith extra parameters passed through. -
Configuration Management:
Manage repository configurations via a default file (config/defaults.yaml) and a user-specific file (config/config.yaml). Initialize, add, delete, or ignore entries using subcommands. -
Path & Listing:
Display repository paths or list all configured packages with their details. -
Custom Aliases:
Generate and manage custom aliases for easy command invocation.
Installation ⚙️
Clone the repository and ensure your ~/.local/bin is in your system PATH:
git clone https://github.com/kevinveenbirkenbach/package-manager.git
cd package-manager
Install make and pip if not installed yet:
pacman -S make python-pip
Then, run the following command to set up the project:
make setup
The make setup command will:
- Make
main.pyexecutable. - Install required packages from
requirements.txt. - Execute
python main.py installto complete the installation.
Docker Quickstart 🐳
Alternatively to installing locally, you can use Docker: build the image with
docker build --no-cache -t pkgmgr .
or alternativ pull it via
docker pull kevinveenbirkenbach/pkgmgr:latest
and then run
docker run --rm pkgmgr --help
Usage 📖
Run the script with different commands. For example:
- Install all packages:
pkgmgr install --all - Pull updates for a specific repository:
pkgmgr pull pkgmgr - Commit changes with extra Git parameters:
pkgmgr commit pkgmgr -- -m "Your commit message" - List all configured packages:
pkgmgr config show - Manage configuration:
pkgmgr config init pkgmgr config add pkgmgr config edit pkgmgr config delete <identifier> pkgmgr config ignore <identifier> --set true
License 📄
This project is licensed under the MIT License.
Author 👤
Kevin Veen-Birkenbach
https://www.veen.world
Repository: github.com/kevinveenbirkenbach/package-manager
Created with AI 🤖 - View conversation