kpmx 2.0.0__tar.gz → 2.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {kpmx-2.0.0/src/kpmx.egg-info → kpmx-2.0.2}/PKG-INFO +1 -1
- {kpmx-2.0.0 → kpmx-2.0.2}/pyproject.toml +1 -1
- {kpmx-2.0.0 → kpmx-2.0.2/src/kpmx.egg-info}/PKG-INFO +1 -1
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/makefile.py +1 -3
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/release/files/changelog_lint.py +8 -6
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/release/files/changelog_md.py +19 -6
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/release/files/editor.py +16 -3
- {kpmx-2.0.0 → kpmx-2.0.2}/LICENSE +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/README.md +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/setup.cfg +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/kpmx.egg-info/SOURCES.txt +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/kpmx.egg-info/dependency_links.txt +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/kpmx.egg-info/entry_points.txt +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/kpmx.egg-info/requires.txt +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/kpmx.egg-info/top_level.txt +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/__main__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/archive/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/archive/discovery.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/archive/inspect.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/archive/readme.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/archive/workflow.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/branch/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/branch/close_branch.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/branch/drop_branch.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/branch/open_branch.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/changelog/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/code_scanning/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/config/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/config/add.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/config/init.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/config/show.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/capabilities.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/context.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/base.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/nix/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/nix/conflicts.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/nix/installer.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/nix/profile/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/nix/profile/inspector.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/nix/profile/matcher.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/nix/profile/models.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/nix/profile/normalizer.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/nix/profile/parser.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/nix/profile/result.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/nix/profile_list.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/nix/retry.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/nix/runner.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/nix/textparse.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/nix/types.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/os_packages/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/os_packages/arch_pkgbuild.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/os_packages/debian_control.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/os_packages/rpm_spec.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/python.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/layers.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/pipeline.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/mirror/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/mirror/context.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/mirror/diff_cmd.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/mirror/git_remote.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/mirror/io.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/mirror/list_cmd.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/mirror/merge_cmd.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/mirror/printing.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/mirror/remote_provision.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/mirror/setup_cmd.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/mirror/types.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/mirror/url_utils.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/mirror/visibility_cmd.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/proxy.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/publish/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/publish/git_tags.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/publish/pypi_url.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/publish/types.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/publish/workflow.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/release/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/release/files/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/release/files/debian.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/release/files/flake.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/release/files/pkgbuild.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/release/files/pyproject.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/release/files/rpm_changelog.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/release/files/rpm_spec.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/release/git_ops.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/release/package_name.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/release/prompts.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/release/retry.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/release/versioning.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/release/workflow.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/repository/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/repository/_parallel.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/repository/clone.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/repository/create/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/repository/create/config_writer.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/repository/create/git_bootstrap.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/repository/create/mirrors.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/repository/create/model.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/repository/create/parser.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/repository/create/planner.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/repository/create/service.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/repository/create/templates.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/repository/deinstall.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/repository/delete.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/repository/list.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/repository/pull.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/repository/push.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/repository/status.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/update/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/update/manager.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/update/os_release.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/update/system_updater.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/commands/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/commands/archive.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/commands/branch.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/commands/changelog.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/commands/code_scanning.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/commands/config.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/commands/make.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/commands/mirror.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/commands/publish.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/commands/release.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/commands/repos.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/commands/tools.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/commands/version.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/context.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/dispatch.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/parser/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/parser/archive_cmd.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/parser/branch_cmd.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/parser/changelog_cmd.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/parser/code_scanning_cmd.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/parser/common.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/parser/config_cmd.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/parser/install_update.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/parser/list_cmd.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/parser/make_cmd.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/parser/mirror_cmd.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/parser/navigation_cmd.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/parser/publish_cmd.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/parser/release_cmd.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/parser/version_cmd.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/proxy.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/tools/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/tools/paths.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/cli/tools/vscode.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/config/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/config/defaults.yaml +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/command/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/command/alias.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/command/ink.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/command/layer.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/command/resolve.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/command/run.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/config/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/config/load.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/config/save.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/credentials/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/credentials/providers/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/credentials/providers/env.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/credentials/providers/gh.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/credentials/providers/keyring.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/credentials/providers/prompt.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/credentials/resolver.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/credentials/store_keys.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/credentials/types.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/credentials/validate.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/add.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/add_all.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/add_remote.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/add_remote_push_url.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/branch_move.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/checkout.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/clone.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/commit.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/create_branch.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/delete_local_branch.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/delete_remote_branch.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/fetch.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/init.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/merge_no_ff.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/pull.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/pull_args.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/pull_ff_only.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/push.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/push_args.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/push_upstream.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/set_remote_url.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/tag_annotated.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/commands/tag_force_annotated.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/errors.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/queries/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/queries/get_changelog.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/queries/get_config_value.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/queries/get_current_branch.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/queries/get_head_commit.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/queries/get_latest_commit.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/queries/get_latest_signing_key.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/queries/get_remote_head_commit.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/queries/get_remote_push_urls.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/queries/get_repo_root.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/queries/get_tags.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/queries/get_tags_at_ref.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/queries/get_upstream_ref.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/queries/list_remotes.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/queries/list_tags.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/queries/probe_remote_reachable.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/queries/resolve_base_branch.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/git/run.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/remote_provisioning/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/remote_provisioning/ensure.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/remote_provisioning/http/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/remote_provisioning/http/client.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/remote_provisioning/http/errors.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/remote_provisioning/providers/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/remote_provisioning/providers/base.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/remote_provisioning/providers/gitea.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/remote_provisioning/providers/github.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/remote_provisioning/registry.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/remote_provisioning/types.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/remote_provisioning/visibility.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/repository/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/repository/dir.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/repository/identifier.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/repository/ignored.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/repository/paths.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/repository/resolve.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/repository/selected.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/repository/verify.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/version/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/version/installed.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/version/semver.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/core/version/source.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/github/__init__.py +0 -0
- {kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/github/check_hadolint_sarif.py +0 -0
|
@@ -31,9 +31,7 @@ class MakefileInstaller(BaseInstaller):
|
|
|
31
31
|
except OSError:
|
|
32
32
|
return False
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
return True
|
|
36
|
-
return bool(re.search(r"^install-[a-zA-Z0-9_-]*\s*:", content, flags=re.MULTILINE))
|
|
34
|
+
return bool(re.search(r"^install\s*:", content, flags=re.MULTILINE))
|
|
37
35
|
|
|
38
36
|
def run(self, ctx: RepoContext) -> None:
|
|
39
37
|
makefile_path = os.path.join(ctx.repo_dir, self.MAKEFILE_NAME)
|
|
@@ -7,10 +7,11 @@ import shutil
|
|
|
7
7
|
import subprocess
|
|
8
8
|
import tempfile
|
|
9
9
|
|
|
10
|
-
_HEADING = re.compile(r"^\s
|
|
10
|
+
_HEADING = re.compile(r"^\s*(#{1,6})\s+(.*?)\s*#*\s*$")
|
|
11
11
|
_INLINE_CODE = re.compile(r"`([^`\n]+)`")
|
|
12
12
|
_FINDING = re.compile(r"\bMD\d{3}\b")
|
|
13
13
|
_MULTI_BLANK = re.compile(r"\n{3,}")
|
|
14
|
+
_ENTRY_LEVEL = 3
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
class ChangelogLintError(RuntimeError):
|
|
@@ -20,10 +21,10 @@ class ChangelogLintError(RuntimeError):
|
|
|
20
21
|
def transform_changelog_message(text: str) -> str:
|
|
21
22
|
"""Normalise a free-form release message into the changelog house style.
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
stays free of backticks.
|
|
24
|
+
Headings are pushed below the ``## [version]`` line the entry is filed
|
|
25
|
+
under, so they nest instead of competing with it. Bolding them instead
|
|
26
|
+
would read as a heading to markdown-lint and fail MD036. Inline ``code``
|
|
27
|
+
spans become ``*italic*`` so the entry stays free of backticks.
|
|
27
28
|
"""
|
|
28
29
|
text = _INLINE_CODE.sub(r"*\1*", text)
|
|
29
30
|
|
|
@@ -31,9 +32,10 @@ def transform_changelog_message(text: str) -> str:
|
|
|
31
32
|
for line in text.split("\n"):
|
|
32
33
|
heading = _HEADING.match(line)
|
|
33
34
|
if heading:
|
|
35
|
+
level = max(len(heading.group(1)), _ENTRY_LEVEL)
|
|
34
36
|
if out and out[-1].strip():
|
|
35
37
|
out.append("")
|
|
36
|
-
out.append(f"
|
|
38
|
+
out.append(f"{'#' * level} {heading.group(2).strip()}")
|
|
37
39
|
out.append("")
|
|
38
40
|
else:
|
|
39
41
|
out.append(line)
|
|
@@ -16,6 +16,11 @@ H1_RE = re.compile(r"^#\s+\S", re.MULTILINE)
|
|
|
16
16
|
H2_RE = re.compile(r"^##\s+\S", re.MULTILINE)
|
|
17
17
|
|
|
18
18
|
|
|
19
|
+
def _at_end_of_file(entry: str) -> str:
|
|
20
|
+
"""Return *entry* without the blank line that separates it from a next one."""
|
|
21
|
+
return entry.rstrip("\n") + "\n"
|
|
22
|
+
|
|
23
|
+
|
|
19
24
|
def _insert_after_h1(existing: str, entry: str) -> str:
|
|
20
25
|
"""Place *entry* after the H1 (and any intro prose), above the first H2.
|
|
21
26
|
|
|
@@ -26,7 +31,7 @@ def _insert_after_h1(existing: str, entry: str) -> str:
|
|
|
26
31
|
``## ``) is preserved: *entry* is prepended unchanged.
|
|
27
32
|
"""
|
|
28
33
|
if not existing.strip():
|
|
29
|
-
return f"# Changelog\n\n{entry}"
|
|
34
|
+
return f"# Changelog\n\n{_at_end_of_file(entry)}"
|
|
30
35
|
|
|
31
36
|
if not H1_RE.search(existing):
|
|
32
37
|
# Legacy layout: file starts with `## [version]` and has no H1.
|
|
@@ -43,7 +48,7 @@ def _insert_after_h1(existing: str, entry: str) -> str:
|
|
|
43
48
|
if existing.endswith("\n\n")
|
|
44
49
|
else ("\n" if existing.endswith("\n") else "\n\n")
|
|
45
50
|
)
|
|
46
|
-
return f"{existing}{suffix}{entry}"
|
|
51
|
+
return f"{existing}{suffix}{_at_end_of_file(entry)}"
|
|
47
52
|
|
|
48
53
|
# Insert new entry just before the first H2.
|
|
49
54
|
head = existing[: h2_match.start()].rstrip("\n") + "\n\n"
|
|
@@ -75,6 +80,12 @@ def update_changelog(
|
|
|
75
80
|
print(f" - {finding}")
|
|
76
81
|
print()
|
|
77
82
|
|
|
83
|
+
def _wait_for_reader() -> None:
|
|
84
|
+
try:
|
|
85
|
+
input("[INFO] Press Enter to re-open the editor and fix the entry...")
|
|
86
|
+
except EOFError:
|
|
87
|
+
print("[INFO] Re-opening the editor so you can fix the entry...")
|
|
88
|
+
|
|
78
89
|
if message is not None:
|
|
79
90
|
body, entry = _entry_for(message)
|
|
80
91
|
findings = lint_changelog_entry(changelog_path, entry)
|
|
@@ -87,19 +98,21 @@ def update_changelog(
|
|
|
87
98
|
body, entry = _entry_for(message or f"Release {new_version}")
|
|
88
99
|
else:
|
|
89
100
|
attempt: str | None = None
|
|
101
|
+
rejected: list[str] | None = None
|
|
90
102
|
while True:
|
|
91
103
|
print(
|
|
92
|
-
"\n[INFO] Provide the changelog entry
|
|
93
|
-
"
|
|
104
|
+
"\n[INFO] Provide the changelog entry - a leading '#' becomes "
|
|
105
|
+
"a sub-heading, `code` becomes italic.\n"
|
|
94
106
|
)
|
|
95
|
-
raw = _open_editor_for_changelog(attempt)
|
|
107
|
+
raw = _open_editor_for_changelog(attempt, rejected)
|
|
96
108
|
body, entry = _entry_for(raw or f"Release {new_version}")
|
|
97
109
|
findings = lint_changelog_entry(changelog_path, entry)
|
|
98
110
|
if not findings:
|
|
99
111
|
break
|
|
100
112
|
_print_findings(findings)
|
|
101
113
|
attempt = body
|
|
102
|
-
|
|
114
|
+
rejected = findings
|
|
115
|
+
_wait_for_reader()
|
|
103
116
|
|
|
104
117
|
changelog = ""
|
|
105
118
|
if os.path.exists(changelog_path):
|
|
@@ -6,7 +6,14 @@ import subprocess
|
|
|
6
6
|
import tempfile
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
def _open_editor_for_changelog(
|
|
9
|
+
def _open_editor_for_changelog(
|
|
10
|
+
initial_message: str | None = None,
|
|
11
|
+
findings: list[str] | None = None,
|
|
12
|
+
) -> str:
|
|
13
|
+
"""Args:
|
|
14
|
+
initial_message: the previous attempt, pre-loaded for editing.
|
|
15
|
+
findings: why that attempt was rejected, shown above it.
|
|
16
|
+
"""
|
|
10
17
|
editor = os.environ.get("EDITOR", "nano")
|
|
11
18
|
|
|
12
19
|
with tempfile.NamedTemporaryFile(
|
|
@@ -18,9 +25,15 @@ def _open_editor_for_changelog(initial_message: str | None = None) -> str:
|
|
|
18
25
|
tmp.write(
|
|
19
26
|
"; Write the changelog entry for this release.\n"
|
|
20
27
|
"; Lines starting with ';' are ignored.\n"
|
|
21
|
-
"; A leading '#' becomes
|
|
22
|
-
"; Empty result will fall back to a generic message.\n
|
|
28
|
+
"; A leading '#' becomes a sub-heading; `code` becomes italic.\n"
|
|
29
|
+
"; Empty result will fall back to a generic message.\n"
|
|
23
30
|
)
|
|
31
|
+
if findings:
|
|
32
|
+
tmp.write(";\n; markdown-lint rejected the previous entry:\n")
|
|
33
|
+
for finding in findings:
|
|
34
|
+
for line in str(finding).splitlines() or [""]:
|
|
35
|
+
tmp.write(f"; {line}\n")
|
|
36
|
+
tmp.write("\n")
|
|
24
37
|
if initial_message:
|
|
25
38
|
tmp.write(initial_message.strip() + "\n")
|
|
26
39
|
tmp.flush()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/os_packages/arch_pkgbuild.py
RENAMED
|
File without changes
|
{kpmx-2.0.0 → kpmx-2.0.2}/src/pkgmgr/actions/install/installers/os_packages/debian_control.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|