Some checks failed
CI / test-unit (push) Has been cancelled
CI / test-integration (push) Has been cancelled
CI / test-env-virtual (push) Has been cancelled
CI / test-env-nix (push) Has been cancelled
CI / test-e2e (push) Has been cancelled
CI / test-virgin-user (push) Has been cancelled
CI / test-virgin-root (push) Has been cancelled
CI / codesniffer-shellcheck (push) Has been cancelled
CI / codesniffer-ruff (push) Has been cancelled
Setup configures local Git state, check validates remote reachability in a read-only way, and provision explicitly creates missing remote repositories. Destructive behavior is never implicit. * **Introduce a remote provisioning layer** pkgmgr can now ensure that repositories exist on remote providers. If a repository is missing, it can be created automatically on supported platforms when explicitly requested. * **Add a provider registry for extensibility** Providers are resolved based on the remote host, with optional hints to force a specific backend. This makes it straightforward to add further providers later without changing the core logic. * **Use a lightweight, dependency-free HTTP client** All API communication is handled via a small stdlib-based client. HTTP errors are mapped to meaningful domain errors, improving diagnostics and error handling consistency. * **Centralize credential resolution** API tokens are resolved in a strict order: environment variables first, then the system keyring, and finally an interactive prompt if allowed. This works well for both CI and interactive use. * **Keep keyring integration optional** Secure token storage via the OS keyring is provided as an optional dependency. If unavailable, pkgmgr still works using environment variables or one-off interactive tokens. * **Improve CLI parser safety and clarity** Shared argument helpers now guard against duplicate definitions, making composed subcommands more robust and easier to maintain. * **Expand end-to-end test coverage** All mirror-related workflows are exercised through real CLI invocations in preview mode, ensuring full wiring correctness while remaining safe for automated test environments. https://chatgpt.com/share/693df441-a780-800f-bcf7-96e06cc9e421
52 lines
1.1 KiB
TOML
52 lines
1.1 KiB
TOML
[build-system]
|
|
requires = [
|
|
"setuptools>=68",
|
|
"wheel"
|
|
]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "package-manager"
|
|
version = "1.5.0"
|
|
description = "Kevin's package-manager tool (pkgmgr)"
|
|
readme = "README.md"
|
|
requires-python = ">=3.9"
|
|
license = { text = "MIT" }
|
|
|
|
authors = [
|
|
{ name = "Kevin Veen-Birkenbach", email = "info@veen.world" }
|
|
]
|
|
|
|
# Base runtime dependencies
|
|
dependencies = [
|
|
"PyYAML>=6.0"
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://s.veen.world/pkgmgr"
|
|
Source = "https://github.com/kevinveenbirkenbach/package-manager"
|
|
|
|
[project.optional-dependencies]
|
|
keyring = ["keyring>=24.0.0"]
|
|
dev = [
|
|
"mypy"
|
|
]
|
|
|
|
# CLI entrypoint: this is the "pkgmgr" command
|
|
[project.scripts]
|
|
pkgmgr = "pkgmgr.cli:main"
|
|
|
|
# -----------------------------
|
|
# setuptools configuration
|
|
# -----------------------------
|
|
# Source layout: all packages live under "src/"
|
|
[tool.setuptools]
|
|
package-dir = { "" = "src", "config" = "config" }
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["src", "."]
|
|
include = ["pkgmgr*", "config*"]
|
|
|
|
[tool.setuptools.package-data]
|
|
"config" = ["defaults.yaml"]
|