Compare commits
2 Commits
a8c321fca1
...
v2.1.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b38303b72f | ||
|
|
557fe159d5 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -5,3 +5,6 @@ log.txt
|
|||||||
__pycache__/
|
__pycache__/
|
||||||
*.pyc
|
*.pyc
|
||||||
.pytest_cache/
|
.pytest_cache/
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
*.egg-info/
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [2.1.0] - 2026-07-14
|
||||||
|
|
||||||
|
Initial PyPI release 🥳
|
||||||
|
|
||||||
## [2.0.0] - 2026-07-14
|
## [2.0.0] - 2026-07-14
|
||||||
|
|
||||||
All bash scripts were ported to the *lim/* Python package with a unified CLI, a mocked test suite, and CI.
|
All bash scripts were ported to the *lim/* Python package with a unified CLI, a mocked test suite, and CI.
|
||||||
|
|||||||
@@ -82,7 +82,6 @@ lim --type chroot
|
|||||||
|
|
||||||
```
|
```
|
||||||
main.py # entry point (the `lim` alias)
|
main.py # entry point (the `lim` alias)
|
||||||
distributions.yml # single point of truth for the image catalog
|
|
||||||
lim/
|
lim/
|
||||||
cli.py # argument parsing and command dispatch
|
cli.py # argument parsing and command dispatch
|
||||||
catalog.py # read-only access to distributions.yml
|
catalog.py # read-only access to distributions.yml
|
||||||
@@ -92,14 +91,15 @@ lim/
|
|||||||
storage/ # single drive and RAID1 encryption setups
|
storage/ # single drive and RAID1 encryption setups
|
||||||
image/ # image setup, backup, chroot, verification
|
image/ # image setup, backup, chroot, verification
|
||||||
data/ # encfs lock/unlock and data import/export
|
data/ # encfs lock/unlock and data import/export
|
||||||
configuration/ # package collections used during image setup
|
distributions.yml # single point of truth for the image catalog
|
||||||
|
configuration/ # package collections used during image setup
|
||||||
tests/unit/ # unit tests (all external commands mocked)
|
tests/unit/ # unit tests (all external commands mocked)
|
||||||
tests/lint/ # architecture guards (e.g. max file length)
|
tests/lint/ # architecture guards (e.g. max file length)
|
||||||
```
|
```
|
||||||
|
|
||||||
## Configuration & Customization 🔧
|
## Configuration & Customization 🔧
|
||||||
|
|
||||||
Customize your environment in the `configuration/` folder:
|
Customize your environment in the `lim/configuration/` folder:
|
||||||
- **General Packages:** Contains common packages for all setup scripts.
|
- **General Packages:** Contains common packages for all setup scripts.
|
||||||
- **Server LUKS Packages:** Contains packages needed for setting up LUKS encryption on servers.
|
- **Server LUKS Packages:** Contains packages needed for setting up LUKS encryption on servers.
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
"""Read-only access to the image catalog (distributions.yml in the repo root)."""
|
"""Read-only access to the image catalog (distributions.yml in the package)."""
|
||||||
|
|
||||||
from functools import cache
|
from functools import cache
|
||||||
|
|
||||||
@@ -6,7 +6,7 @@ import yaml
|
|||||||
|
|
||||||
from lim import config
|
from lim import config
|
||||||
|
|
||||||
CATALOG_PATH = config.REPOSITORY_PATH / "distributions.yml"
|
CATALOG_PATH = config.CATALOG_PATH
|
||||||
|
|
||||||
|
|
||||||
@cache
|
@cache
|
||||||
|
|||||||
@@ -1,10 +1,17 @@
|
|||||||
"""Repository paths shared by all modules."""
|
"""Package and repository paths shared by all modules.
|
||||||
|
|
||||||
|
Configuration and the image catalog ship inside the package so that
|
||||||
|
wheel installs work; the encfs data store stays repository-relative.
|
||||||
|
"""
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
REPOSITORY_PATH = Path(__file__).resolve().parent.parent
|
PACKAGE_ROOT = Path(__file__).resolve().parent
|
||||||
CONFIGURATION_PATH = REPOSITORY_PATH / "configuration"
|
CONFIGURATION_PATH = PACKAGE_ROOT / "configuration"
|
||||||
PACKAGE_PATH = CONFIGURATION_PATH / "packages"
|
PACKAGE_PATH = CONFIGURATION_PATH / "packages"
|
||||||
|
CATALOG_PATH = PACKAGE_ROOT / "distributions.yml"
|
||||||
|
|
||||||
|
REPOSITORY_PATH = PACKAGE_ROOT.parent
|
||||||
ENCRYPTED_PATH = REPOSITORY_PATH / ".encrypted"
|
ENCRYPTED_PATH = REPOSITORY_PATH / ".encrypted"
|
||||||
DECRYPTED_PATH = REPOSITORY_PATH / "decrypted"
|
DECRYPTED_PATH = REPOSITORY_PATH / "decrypted"
|
||||||
DATA_PATH = DECRYPTED_PATH / "data"
|
DATA_PATH = DECRYPTED_PATH / "data"
|
||||||
|
|||||||
@@ -1,11 +1,35 @@
|
|||||||
|
[build-system]
|
||||||
|
# 77+ for PEP 639 SPDX `license = "..."` + `license-files`.
|
||||||
|
requires = ["setuptools>=77"]
|
||||||
|
build-backend = "setuptools.build_meta"
|
||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "linux-image-manager"
|
name = "linux-image-manager"
|
||||||
version = "2.0.0"
|
version = "2.1.0"
|
||||||
description = "Linux Image Manager — manages Linux images and encrypted storage"
|
description = "CLI (`lim`) for downloading, verifying and flashing Linux images, LUKS/Btrfs encrypted storage (single drive and RAID1), image backups and chroot maintenance"
|
||||||
|
readme = "README.md"
|
||||||
requires-python = ">=3.10"
|
requires-python = ">=3.10"
|
||||||
license = { file = "LICENSE.txt" }
|
authors = [{ name = "Kevin Veen-Birkenbach", email = "kevin@veen.world" }]
|
||||||
|
maintainers = [{ name = "Kevin Veen-Birkenbach", email = "kevin@veen.world" }]
|
||||||
|
license = "GPL-3.0-only"
|
||||||
|
license-files = ["LICENSE.txt"]
|
||||||
|
urls = { Homepage = "https://veen.world", Repository = "https://github.com/kevinveenbirkenbach/linux-image-manager" }
|
||||||
|
classifiers = [
|
||||||
|
"Environment :: Console",
|
||||||
|
"Operating System :: POSIX :: Linux",
|
||||||
|
"Programming Language :: Python :: 3",
|
||||||
|
]
|
||||||
dependencies = ["PyYAML>=6"]
|
dependencies = ["PyYAML>=6"]
|
||||||
|
|
||||||
|
[project.scripts]
|
||||||
|
lim = "lim.cli:main"
|
||||||
|
|
||||||
|
[tool.setuptools.packages.find]
|
||||||
|
include = ["lim*"]
|
||||||
|
|
||||||
|
[tool.setuptools.package-data]
|
||||||
|
lim = ["distributions.yml", "configuration/packages/**/*.txt"]
|
||||||
|
|
||||||
[tool.pytest.ini_options]
|
[tool.pytest.ini_options]
|
||||||
testpaths = ["tests"]
|
testpaths = ["tests"]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user