skillnav 0.4.2__tar.gz → 0.4.4__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.
- {skillnav-0.4.2 → skillnav-0.4.4}/PKG-INFO +1 -1
- {skillnav-0.4.2 → skillnav-0.4.4}/pyproject.toml +1 -1
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/__init__.py +1 -1
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/cli.py +17 -16
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/self_update.py +26 -2
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav.egg-info/PKG-INFO +1 -1
- {skillnav-0.4.2 → skillnav-0.4.4}/README.md +0 -0
- {skillnav-0.4.2 → skillnav-0.4.4}/setup.cfg +0 -0
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/__main__.py +0 -0
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/api.py +0 -0
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/config.py +0 -0
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/context.py +0 -0
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/contributors.py +0 -0
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/error_hints.py +0 -0
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/errors.py +0 -0
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/output.py +0 -0
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/packages.py +0 -0
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/publish_metadata.py +0 -0
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/skill_categories.py +0 -0
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/urls.py +0 -0
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav.egg-info/SOURCES.txt +0 -0
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav.egg-info/dependency_links.txt +0 -0
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav.egg-info/entry_points.txt +0 -0
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav.egg-info/requires.txt +0 -0
- {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav.egg-info/top_level.txt +0 -0
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import sys
|
|
5
6
|
from pathlib import Path
|
|
6
7
|
from typing import Annotated, Any, Optional
|
|
7
8
|
|
|
@@ -124,10 +125,12 @@ def _api_json(method: str, path: str, *, body: dict | None = None, auth: bool =
|
|
|
124
125
|
return payload
|
|
125
126
|
|
|
126
127
|
|
|
127
|
-
def
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
128
|
+
def _is_version_only_argv(args: list[str]) -> bool:
|
|
129
|
+
return args in (["--version"], ["-v"])
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def _print_version() -> None:
|
|
133
|
+
typer.echo(f"skillnav {__version__}")
|
|
131
134
|
|
|
132
135
|
|
|
133
136
|
@app.callback()
|
|
@@ -143,18 +146,11 @@ def cli_root(
|
|
|
143
146
|
no_input: Annotated[
|
|
144
147
|
bool, typer.Option("--no-input", help="Never prompt; fail when input is required")
|
|
145
148
|
] = False,
|
|
146
|
-
version: Annotated[
|
|
147
|
-
Optional[bool],
|
|
148
|
-
typer.Option(
|
|
149
|
-
"--version",
|
|
150
|
-
"-v",
|
|
151
|
-
help="Show version and exit",
|
|
152
|
-
callback=_version_callback,
|
|
153
|
-
is_eager=True,
|
|
154
|
-
),
|
|
155
|
-
] = None,
|
|
156
149
|
) -> None:
|
|
157
|
-
"""CLI client for the Skill management platform (SkillNavigator).
|
|
150
|
+
"""CLI client for the Skill management platform (SkillNavigator).
|
|
151
|
+
|
|
152
|
+
Use ``skillnav --version`` (or ``-v``) to print the version and exit.
|
|
153
|
+
"""
|
|
158
154
|
_state["ctx"] = CliContext.resolve(
|
|
159
155
|
registry_flag=registry,
|
|
160
156
|
profile_flag=profile,
|
|
@@ -872,8 +868,13 @@ def update_cmd(
|
|
|
872
868
|
|
|
873
869
|
|
|
874
870
|
def run(argv: list[str] | None = None) -> int:
|
|
871
|
+
args = list(argv) if argv is not None else sys.argv[1:]
|
|
872
|
+
if _is_version_only_argv(args):
|
|
873
|
+
_print_version()
|
|
874
|
+
return EXIT_OK
|
|
875
|
+
|
|
875
876
|
try:
|
|
876
|
-
app(prog_name="skillnav", args=
|
|
877
|
+
app(prog_name="skillnav", args=args)
|
|
877
878
|
return EXIT_OK
|
|
878
879
|
except typer.Exit as exc:
|
|
879
880
|
return int(exc.exit_code)
|
|
@@ -89,6 +89,18 @@ def build_upgrade_command() -> list[str]:
|
|
|
89
89
|
return [sys.executable, "-m", "pip", "install", "--upgrade", "skillnav", "-i", PYPI_INSTALL_INDEX]
|
|
90
90
|
|
|
91
91
|
|
|
92
|
+
def read_installed_version() -> str:
|
|
93
|
+
try:
|
|
94
|
+
import importlib.metadata as importlib_metadata
|
|
95
|
+
except ImportError:
|
|
96
|
+
return __version__
|
|
97
|
+
|
|
98
|
+
try:
|
|
99
|
+
return importlib_metadata.version("skillnav")
|
|
100
|
+
except importlib_metadata.PackageNotFoundError:
|
|
101
|
+
return __version__
|
|
102
|
+
|
|
103
|
+
|
|
92
104
|
def run_upgrade_command() -> None:
|
|
93
105
|
command = build_upgrade_command()
|
|
94
106
|
try:
|
|
@@ -110,6 +122,14 @@ def run_upgrade_command() -> None:
|
|
|
110
122
|
raise SkillnavError(message)
|
|
111
123
|
|
|
112
124
|
|
|
125
|
+
def _upgrade_still_behind_message(installed: str, latest: str) -> str:
|
|
126
|
+
return (
|
|
127
|
+
f"Upgrade finished but skillnav {installed} is still older than PyPI {latest}. "
|
|
128
|
+
f"The install index may be out of sync. Retry with: "
|
|
129
|
+
f"{sys.executable} -m pip install --upgrade skillnav -i https://pypi.org/simple/"
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
|
|
113
133
|
def check_for_update(*, current: str | None = None) -> UpdateStatus:
|
|
114
134
|
current_version = current or __version__
|
|
115
135
|
latest_version = fetch_pypi_latest_version()
|
|
@@ -133,10 +153,14 @@ def perform_update(*, check_only: bool = False, current: str | None = None) -> U
|
|
|
133
153
|
)
|
|
134
154
|
|
|
135
155
|
run_upgrade_command()
|
|
156
|
+
installed = read_installed_version()
|
|
157
|
+
if compare_versions(installed, status.latest) < 0:
|
|
158
|
+
raise SkillnavError(_upgrade_still_behind_message(installed, status.latest))
|
|
159
|
+
|
|
136
160
|
return UpdateStatus(
|
|
137
|
-
current=
|
|
161
|
+
current=installed,
|
|
138
162
|
latest=status.latest,
|
|
139
|
-
up_to_date=
|
|
163
|
+
up_to_date=True,
|
|
140
164
|
updated=True,
|
|
141
165
|
)
|
|
142
166
|
|
|
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
|