mirror of
https://gitlab.com/kupfer/kupferbootstrap.git
synced 2025-02-23 05:35:44 -05:00
packages/srcinfo_cache: extract JsonFile class
This commit is contained in:
parent
04f9173233
commit
931e09c3d3
1 changed files with 20 additions and 14 deletions
|
@ -5,7 +5,7 @@ import logging
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
from typing import Optional
|
from typing import ClassVar, Optional
|
||||||
|
|
||||||
from config.state import config
|
from config.state import config
|
||||||
from constants import MAKEPKG_CMD, SRCINFO_FILE, SRCINFO_METADATA_FILE
|
from constants import MAKEPKG_CMD, SRCINFO_FILE, SRCINFO_METADATA_FILE
|
||||||
|
@ -16,15 +16,32 @@ from utils import sha256sum
|
||||||
SRCINFO_CHECKSUM_FILES = ['PKGBUILD', SRCINFO_FILE]
|
SRCINFO_CHECKSUM_FILES = ['PKGBUILD', SRCINFO_FILE]
|
||||||
|
|
||||||
|
|
||||||
class SrcinfoMetaFile(DataClass):
|
class JsonFile(DataClass):
|
||||||
|
|
||||||
|
_filename: ClassVar[str]
|
||||||
|
_relative_path: str
|
||||||
|
|
||||||
|
def toJSON(self) -> str:
|
||||||
|
'Returns a json representation, with private keys that start with "_" filtered out'
|
||||||
|
return json.dumps({key: val for key, val in self.toDict().items() if not key.startswith('_')}, indent=2)
|
||||||
|
|
||||||
|
def write(self):
|
||||||
|
'Write the filtered json representation to disk'
|
||||||
|
filepath = os.path.join(config.get_path('pkgbuilds'), self._relative_path, self._filename)
|
||||||
|
logging.debug(f'{self._relative_path}: writing {self._filename}')
|
||||||
|
with open(filepath, 'w') as fd:
|
||||||
|
fd.write(self.toJSON())
|
||||||
|
|
||||||
|
|
||||||
|
class SrcinfoMetaFile(JsonFile):
|
||||||
|
|
||||||
checksums: dict[str, str]
|
checksums: dict[str, str]
|
||||||
build_mode: Optional[str]
|
build_mode: Optional[str]
|
||||||
build_nodeps: Optional[bool]
|
build_nodeps: Optional[bool]
|
||||||
src_initialised: Optional[str]
|
src_initialised: Optional[str]
|
||||||
|
|
||||||
_relative_path: str
|
|
||||||
_changed: bool
|
_changed: bool
|
||||||
|
_filename: ClassVar[str] = SRCINFO_METADATA_FILE
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def parse_existing(relative_pkg_dir: str) -> SrcinfoMetaFile:
|
def parse_existing(relative_pkg_dir: str) -> SrcinfoMetaFile:
|
||||||
|
@ -164,14 +181,3 @@ class SrcinfoMetaFile(DataClass):
|
||||||
logging.debug(f'{self._relative_path}: Checksum for file "{filename}" doesn\'t match')
|
logging.debug(f'{self._relative_path}: Checksum for file "{filename}" doesn\'t match')
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def toJSON(self) -> str:
|
|
||||||
'Returns a json representation, with private keys that start with "_" filtered out'
|
|
||||||
return json.dumps({key: val for key, val in self.toDict().items() if not key.startswith('_')}, indent=2)
|
|
||||||
|
|
||||||
def write(self):
|
|
||||||
'Write the filtered json representation to disk as srcinfo_meta.json'
|
|
||||||
filepath = os.path.join(config.get_path('pkgbuilds'), self._relative_path, SRCINFO_METADATA_FILE)
|
|
||||||
logging.debug(f'{self._relative_path}: writing {SRCINFO_METADATA_FILE}')
|
|
||||||
with open(filepath, 'w') as fd:
|
|
||||||
fd.write(self.toJSON())
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue