refactor: move version checker to metadata
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
import logging
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from .utils import VERSION
|
||||
from .cli import Cli, parse as parse_cli
|
||||
from .artifact import (
|
||||
ArtifactContext,
|
||||
@@ -22,21 +21,9 @@ class App:
|
||||
def __init__(self, opts: Cli) -> None:
|
||||
# assign cli options
|
||||
self.__opts = opts
|
||||
# initialize packer
|
||||
try:
|
||||
# build essential instances
|
||||
self.__extractor = MetadataExtractor(self.__opts.manifest)
|
||||
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:
|
||||
# create distribution
|
||||
@@ -71,5 +58,14 @@ def main() -> None:
|
||||
# setup logging
|
||||
logging.basicConfig(format="[%(levelname)s] %(message)s", level=logging.INFO)
|
||||
|
||||
# initialize packer and run
|
||||
try:
|
||||
app = App(opts)
|
||||
except Exception as e:
|
||||
logging.error("fail to initialize packer: %s", e)
|
||||
sys.exit(1)
|
||||
try:
|
||||
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 semver import Version
|
||||
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)
|
||||
@@ -62,6 +62,15 @@ class Metadata:
|
||||
cmake: MetadataCMake | 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
|
||||
def from_dict(d: dict[str, Any]) -> "Metadata":
|
||||
raw_min_version = dict_typed_get(d, "min_version", str)
|
||||
@@ -192,7 +201,9 @@ class MetadataExtractor:
|
||||
@wrap_metadata_errors
|
||||
def get_target_directory(self) -> Path:
|
||||
"""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)
|
||||
|
||||
@wrap_metadata_errors
|
||||
|
||||
Reference in New Issue
Block a user