exosphere-cli 3.0.1__tar.gz → 3.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.
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/PKG-INFO +8 -7
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/README.md +4 -4
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/pyproject.toml +4 -3
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/pyproject.toml.orig +4 -3
- exosphere_cli-3.0.2/src/exosphere/__init__.py +29 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/commands/version.py +2 -4
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/errors.py +3 -1
- exosphere_cli-3.0.1/src/exosphere/__init__.py +0 -14
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/COPYRIGHT +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/LICENSE +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/LICENSES/Apache-2.0.txt +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/LICENSES/CC-BY-4.0.txt +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/LICENSES/MIT.txt +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/LICENSES/OFL-1.1.txt +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/cli.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/commands/__init__.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/commands/config.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/commands/connections.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/commands/host.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/commands/inventory.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/commands/report.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/commands/sudo.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/commands/ui.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/commands/utils.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/config.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/context.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/data.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/database.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/editing.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/fspaths.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/inventory.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/main.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/migrations.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/objects.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/pipelining.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/providers/__init__.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/providers/api.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/providers/debian.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/providers/factory.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/providers/freebsd.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/providers/openbsd.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/providers/redhat.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/repl.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/reporting.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/runners.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/schema/__init__.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/schema/host-report.schema.json +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/security.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/setup/__init__.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/setup/detect.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/templates/report.html.j2 +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/templates/report.md.j2 +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/templates/report.txt.j2 +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/ui/__init__.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/ui/app.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/ui/context.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/ui/dashboard.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/ui/elements.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/ui/inventory.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/ui/logs.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/ui/messages.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/ui/palette.py +0 -0
- {exosphere_cli-3.0.1 → exosphere_cli-3.0.2}/src/exosphere/ui/style.tcss +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: exosphere-cli
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.2
|
|
4
4
|
Summary: CLI/TUI driven patch reporting for remote Unix-like systems.
|
|
5
5
|
Author: Alexandre Gauthier
|
|
6
6
|
Author-email: Alexandre Gauthier <alex@underwares.org>
|
|
@@ -30,11 +30,12 @@ Requires-Dist: prompt-toolkit>=3.0.51
|
|
|
30
30
|
Requires-Dist: jinja2>=3.1.6
|
|
31
31
|
Requires-Dist: packaging>=24.0
|
|
32
32
|
Requires-Dist: rich>=14.1.0
|
|
33
|
-
Requires-Dist: cyclopts>=4.16.1
|
|
33
|
+
Requires-Dist: cyclopts>=4.16.1,<5.0.0
|
|
34
34
|
Requires-Dist: filelock>=3.29.4
|
|
35
35
|
Requires-Dist: pydantic>=2.12
|
|
36
36
|
Requires-Python: >=3.13
|
|
37
|
-
Project-URL: homepage, https://exosphere.
|
|
37
|
+
Project-URL: homepage, https://exosphere.tools
|
|
38
|
+
Project-URL: documentation, https://docs.exosphere.tools
|
|
38
39
|
Project-URL: repository, https://github.com/mrdaemon/exosphere
|
|
39
40
|
Project-URL: issues, https://github.com/mrdaemon/exosphere/issues
|
|
40
41
|
Description-Content-Type: text/markdown
|
|
@@ -63,8 +64,8 @@ on remote hosts.
|
|
|
63
64
|
If you have SSH access to the hosts and your keypairs are loaded in an SSH Agent,
|
|
64
65
|
you are good to go!
|
|
65
66
|
|
|
66
|
-
Simply follow the [Quickstart Guide](https://exosphere.
|
|
67
|
-
or see [the documentation](https://exosphere.
|
|
67
|
+
Simply follow the [Quickstart Guide](https://docs.exosphere.tools/en/stable/quickstart.html),
|
|
68
|
+
or see [the documentation](https://docs.exosphere.tools/en/stable/) to get started.
|
|
68
69
|
|
|
69
70
|
## Key Features
|
|
70
71
|
|
|
@@ -103,7 +104,7 @@ This includes network equipment with proprietary operating systems, etc.
|
|
|
103
104
|
## Documentation
|
|
104
105
|
|
|
105
106
|
For installation instructions, configuration and usage examples,
|
|
106
|
-
[full documentation](https://exosphere.
|
|
107
|
+
[full documentation](https://docs.exosphere.tools/) is available.
|
|
107
108
|
|
|
108
109
|
## Development
|
|
109
110
|
|
|
@@ -261,7 +262,7 @@ The TCSS for all of it is in a single file under `ui/style.tcss`.
|
|
|
261
262
|
|
|
262
263
|
This use case is not currently well supported, but it is possible to use Exosphere as a library.
|
|
263
264
|
The documentation for this (alongside actual examples) is still a WIP, but you can
|
|
264
|
-
refer to the [Online API Documentation](https://exosphere.
|
|
265
|
+
refer to the [Online API Documentation](https://docs.exosphere.tools/en/stable/api/index.html)
|
|
265
266
|
for the core functionality and objects that are considered public.
|
|
266
267
|
|
|
267
268
|
## LLM/"AI" Contributions Policy
|
|
@@ -22,8 +22,8 @@ on remote hosts.
|
|
|
22
22
|
If you have SSH access to the hosts and your keypairs are loaded in an SSH Agent,
|
|
23
23
|
you are good to go!
|
|
24
24
|
|
|
25
|
-
Simply follow the [Quickstart Guide](https://exosphere.
|
|
26
|
-
or see [the documentation](https://exosphere.
|
|
25
|
+
Simply follow the [Quickstart Guide](https://docs.exosphere.tools/en/stable/quickstart.html),
|
|
26
|
+
or see [the documentation](https://docs.exosphere.tools/en/stable/) to get started.
|
|
27
27
|
|
|
28
28
|
## Key Features
|
|
29
29
|
|
|
@@ -62,7 +62,7 @@ This includes network equipment with proprietary operating systems, etc.
|
|
|
62
62
|
## Documentation
|
|
63
63
|
|
|
64
64
|
For installation instructions, configuration and usage examples,
|
|
65
|
-
[full documentation](https://exosphere.
|
|
65
|
+
[full documentation](https://docs.exosphere.tools/) is available.
|
|
66
66
|
|
|
67
67
|
## Development
|
|
68
68
|
|
|
@@ -220,7 +220,7 @@ The TCSS for all of it is in a single file under `ui/style.tcss`.
|
|
|
220
220
|
|
|
221
221
|
This use case is not currently well supported, but it is possible to use Exosphere as a library.
|
|
222
222
|
The documentation for this (alongside actual examples) is still a WIP, but you can
|
|
223
|
-
refer to the [Online API Documentation](https://exosphere.
|
|
223
|
+
refer to the [Online API Documentation](https://docs.exosphere.tools/en/stable/api/index.html)
|
|
224
224
|
for the core functionality and objects that are considered public.
|
|
225
225
|
|
|
226
226
|
## LLM/"AI" Contributions Policy
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "exosphere-cli"
|
|
3
|
-
version = "3.0.
|
|
3
|
+
version = "3.0.2"
|
|
4
4
|
description = "CLI/TUI driven patch reporting for remote Unix-like systems."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.13"
|
|
@@ -32,7 +32,7 @@ dependencies = [
|
|
|
32
32
|
"jinja2>=3.1.6",
|
|
33
33
|
"packaging>=24.0",
|
|
34
34
|
"rich>=14.1.0",
|
|
35
|
-
"cyclopts>=4.16.1",
|
|
35
|
+
"cyclopts>=4.16.1,<5.0.0",
|
|
36
36
|
"filelock>=3.29.4",
|
|
37
37
|
"pydantic>=2.12",
|
|
38
38
|
]
|
|
@@ -42,7 +42,8 @@ name = "Alexandre Gauthier"
|
|
|
42
42
|
email = "alex@underwares.org"
|
|
43
43
|
|
|
44
44
|
[project.urls]
|
|
45
|
-
homepage = "https://exosphere.
|
|
45
|
+
homepage = "https://exosphere.tools"
|
|
46
|
+
documentation = "https://docs.exosphere.tools"
|
|
46
47
|
repository = "https://github.com/mrdaemon/exosphere"
|
|
47
48
|
issues = "https://github.com/mrdaemon/exosphere/issues"
|
|
48
49
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "exosphere-cli"
|
|
3
|
-
version = "3.0.
|
|
3
|
+
version = "3.0.2"
|
|
4
4
|
description = "CLI/TUI driven patch reporting for remote Unix-like systems."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
authors = [
|
|
@@ -36,7 +36,7 @@ dependencies = [
|
|
|
36
36
|
"jinja2>=3.1.6",
|
|
37
37
|
"packaging>=24.0",
|
|
38
38
|
"rich>=14.1.0",
|
|
39
|
-
"cyclopts>=4.16.1",
|
|
39
|
+
"cyclopts>=4.16.1,<5.0.0",
|
|
40
40
|
"filelock>=3.29.4",
|
|
41
41
|
"pydantic>=2.12",
|
|
42
42
|
]
|
|
@@ -65,7 +65,8 @@ dev = [
|
|
|
65
65
|
]
|
|
66
66
|
|
|
67
67
|
[project.urls]
|
|
68
|
-
homepage = "https://exosphere.
|
|
68
|
+
homepage = "https://exosphere.tools"
|
|
69
|
+
documentation = "https://docs.exosphere.tools"
|
|
69
70
|
repository = "https://github.com/mrdaemon/exosphere"
|
|
70
71
|
issues = "https://github.com/mrdaemon/exosphere/issues"
|
|
71
72
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import importlib.metadata
|
|
2
|
+
|
|
3
|
+
from .config import Configuration
|
|
4
|
+
|
|
5
|
+
# Global Instances: configuration and GlobalState
|
|
6
|
+
# These are set at runtime and should be used as singletons
|
|
7
|
+
# to hold the global state and configuration.
|
|
8
|
+
|
|
9
|
+
app_config = Configuration() # Has default values out of the box
|
|
10
|
+
|
|
11
|
+
# Current software version, imported from pyproject metadata
|
|
12
|
+
__version__ = importlib.metadata.version("exosphere_cli")
|
|
13
|
+
|
|
14
|
+
# Current documentation url, from pyproject metadata
|
|
15
|
+
# Falls back to known good readthedocs URL to avoid disasters
|
|
16
|
+
_project_urls: list[str] = (
|
|
17
|
+
importlib.metadata.metadata("exosphere_cli").get_all("Project-URL") or []
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
docs_url = next(
|
|
21
|
+
(
|
|
22
|
+
entry.split(",", 1)[1].strip()
|
|
23
|
+
for entry in _project_urls
|
|
24
|
+
if entry.lower().startswith("documentation,")
|
|
25
|
+
),
|
|
26
|
+
"https://exosphere.readthedocs.io",
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
__all__ = ["__version__", "app_config", "docs_url"]
|
|
@@ -12,7 +12,7 @@ from urllib.error import URLError
|
|
|
12
12
|
from cyclopts import App, Parameter
|
|
13
13
|
from packaging.version import parse
|
|
14
14
|
|
|
15
|
-
from exosphere import __version__, app_config
|
|
15
|
+
from exosphere import __version__, app_config, docs_url
|
|
16
16
|
|
|
17
17
|
from .utils import console, err_console, print_environment, print_version
|
|
18
18
|
|
|
@@ -27,9 +27,7 @@ app = App(name="version", help=ROOT_HELP, help_flags=["--help"])
|
|
|
27
27
|
PACKAGE_NAME = "exosphere-cli"
|
|
28
28
|
PYPI_URL = f"https://pypi.org/pypi/{PACKAGE_NAME}/json"
|
|
29
29
|
RELEASE_URL = "https://github.com/mrdaemon/exosphere/releases/tag/"
|
|
30
|
-
DOCS_URL =
|
|
31
|
-
"https://exosphere.readthedocs.io/en/stable/installation.html#updating-exosphere"
|
|
32
|
-
)
|
|
30
|
+
DOCS_URL = f"{docs_url}/en/stable/installation.html#updating-exosphere"
|
|
33
31
|
|
|
34
32
|
|
|
35
33
|
@app.default
|
|
@@ -11,6 +11,8 @@ from rich.box import ROUNDED
|
|
|
11
11
|
from rich.console import RenderableType
|
|
12
12
|
from rich.panel import Panel
|
|
13
13
|
|
|
14
|
+
from exosphere import docs_url
|
|
15
|
+
|
|
14
16
|
# Standard authentication error message for better UX
|
|
15
17
|
# This is intended to be displayed whenever Paramiko raises
|
|
16
18
|
# PasswordRequiredException, which is nearly always, and has the
|
|
@@ -31,7 +33,7 @@ SUDO_AUTH_FAILURE_MESSAGE = (
|
|
|
31
33
|
"Sudo failed: "
|
|
32
34
|
"Ensure the user is configured with passwordless sudo. "
|
|
33
35
|
"You can use 'exosphere sudo generate' to produce a sudoers snippet for this host. "
|
|
34
|
-
"See:
|
|
36
|
+
f"See: {docs_url}/en/stable/sudo.html#generating-a-sudoers-configuration"
|
|
35
37
|
)
|
|
36
38
|
|
|
37
39
|
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import importlib.metadata
|
|
2
|
-
|
|
3
|
-
from .config import Configuration
|
|
4
|
-
|
|
5
|
-
# Global Instances: configuration and GlobalState
|
|
6
|
-
# These are set at runtime and should be used as singletons
|
|
7
|
-
# to hold the global state and configuration.
|
|
8
|
-
|
|
9
|
-
app_config = Configuration() # Has default values out of the box
|
|
10
|
-
|
|
11
|
-
# Current software version, imported from pyproject metadata
|
|
12
|
-
__version__ = importlib.metadata.version("exosphere_cli")
|
|
13
|
-
|
|
14
|
-
__all__ = ["__version__", "app_config"]
|
|
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
|