refactor: move version checker to metadata
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from .utils import VERSION
|
|
||||||
from .cli import Cli, parse as parse_cli
|
from .cli import Cli, parse as parse_cli
|
||||||
from .artifact import (
|
from .artifact import (
|
||||||
ArtifactContext,
|
ArtifactContext,
|
||||||
@@ -22,21 +21,9 @@ class App:
|
|||||||
def __init__(self, opts: Cli) -> None:
|
def __init__(self, opts: Cli) -> None:
|
||||||
# assign cli options
|
# assign cli options
|
||||||
self.__opts = opts
|
self.__opts = opts
|
||||||
# initialize packer
|
|
||||||
try:
|
|
||||||
# build essential instances
|
# build essential instances
|
||||||
self.__extractor = MetadataExtractor(self.__opts.manifest)
|
self.__extractor = MetadataExtractor(self.__opts.manifest)
|
||||||
self.__ctx = ArtifactContext(self.__extractor)
|
self.__ctx = ArtifactContext(self.__extractor)
|
||||||
# check version
|
|
||||||
metadata = self.__ctx.metadata
|
|
||||||
if metadata.min_version is not None:
|
|
||||||
if metadata.min_version > VERSION:
|
|
||||||
raise RuntimeError(
|
|
||||||
f"requested minimum version is not fulfilled. {metadata.min_version} required got {VERSION}"
|
|
||||||
)
|
|
||||||
except Exception as e:
|
|
||||||
logging.error(f"fail to initialize packer: %s", e)
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
def run(self) -> None:
|
def run(self) -> None:
|
||||||
# create distribution
|
# create distribution
|
||||||
@@ -71,5 +58,14 @@ def main() -> None:
|
|||||||
# setup logging
|
# setup logging
|
||||||
logging.basicConfig(format="[%(levelname)s] %(message)s", level=logging.INFO)
|
logging.basicConfig(format="[%(levelname)s] %(message)s", level=logging.INFO)
|
||||||
|
|
||||||
|
# initialize packer and run
|
||||||
|
try:
|
||||||
app = App(opts)
|
app = App(opts)
|
||||||
|
except Exception as e:
|
||||||
|
logging.error("fail to initialize packer: %s", e)
|
||||||
|
sys.exit(1)
|
||||||
|
try:
|
||||||
app.run()
|
app.run()
|
||||||
|
except Exception as e:
|
||||||
|
logging.error("packer runtime error: %s", e)
|
||||||
|
sys.exit(1)
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ from pathlib import Path
|
|||||||
from typing import Any, Callable
|
from typing import Any, Callable
|
||||||
from semver import Version
|
from semver import Version
|
||||||
from . import utils
|
from . import utils
|
||||||
from .utils import dict_chain_get, dict_typed_get, dict_typed_get_required
|
from .utils import dict_chain_get, dict_typed_get, dict_typed_get_required, VERSION
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
@dataclass(frozen=True)
|
||||||
@@ -62,6 +62,15 @@ class Metadata:
|
|||||||
cmake: MetadataCMake | None
|
cmake: MetadataCMake | None
|
||||||
pkgconfig: MetadataPkgConfig | None
|
pkgconfig: MetadataPkgConfig | None
|
||||||
|
|
||||||
|
def __post_init__(self) -> None:
|
||||||
|
# check version restriction
|
||||||
|
this_version = self.min_version
|
||||||
|
if this_version is not None:
|
||||||
|
if this_version > VERSION:
|
||||||
|
raise RuntimeError(
|
||||||
|
f"requested minimum version is not fulfilled. {this_version} required got {VERSION}"
|
||||||
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def from_dict(d: dict[str, Any]) -> "Metadata":
|
def from_dict(d: dict[str, Any]) -> "Metadata":
|
||||||
raw_min_version = dict_typed_get(d, "min_version", str)
|
raw_min_version = dict_typed_get(d, "min_version", str)
|
||||||
@@ -192,7 +201,9 @@ class MetadataExtractor:
|
|||||||
@wrap_metadata_errors
|
@wrap_metadata_errors
|
||||||
def get_target_directory(self) -> Path:
|
def get_target_directory(self) -> Path:
|
||||||
"""Get the absolute path to directory where Rust target directory is"""
|
"""Get the absolute path to directory where Rust target directory is"""
|
||||||
raw_target_directory = dict_typed_get_required(self.__metadata, "target_directory", str)
|
raw_target_directory = dict_typed_get_required(
|
||||||
|
self.__metadata, "target_directory", str
|
||||||
|
)
|
||||||
return Path(raw_target_directory)
|
return Path(raw_target_directory)
|
||||||
|
|
||||||
@wrap_metadata_errors
|
@wrap_metadata_errors
|
||||||
|
|||||||
Reference in New Issue
Block a user