mirror of
https://github.com/spalencsar/bearhub.git
synced 2026-07-07 01:14:15 +02:00
68 lines
1.7 KiB
Python
68 lines
1.7 KiB
Python
import os
|
|
import shutil
|
|
from pathlib import Path
|
|
from typing import Set
|
|
|
|
from bauh.commons import system
|
|
from bauh.gems.arch import IGNORED_REBUILD_CHECK_FILE
|
|
|
|
|
|
def is_installed() -> bool:
|
|
return bool(shutil.which('checkrebuild'))
|
|
|
|
|
|
def list_required_rebuild() -> Set[str]:
|
|
code, output = system.execute(cmd='checkrebuild', shell=True, stdin=False)
|
|
|
|
required = set()
|
|
if code == 0 and output:
|
|
for line in output.split('\n'):
|
|
line_strip = line.strip()
|
|
|
|
if line_strip:
|
|
line_split = line_strip.split('\t')
|
|
|
|
if len(line_split) > 1:
|
|
required.add(line_split[1])
|
|
|
|
return required
|
|
|
|
|
|
def list_ignored() -> Set[str]:
|
|
if os.path.isfile(IGNORED_REBUILD_CHECK_FILE):
|
|
with open(IGNORED_REBUILD_CHECK_FILE) as f:
|
|
ignored_str = f.read()
|
|
|
|
return {p.strip() for p in ignored_str.split('\n') if p}
|
|
else:
|
|
return set()
|
|
|
|
|
|
def add_as_ignored(pkgname: str):
|
|
ignored = list_ignored()
|
|
ignored.add(pkgname)
|
|
|
|
Path(os.path.dirname(IGNORED_REBUILD_CHECK_FILE)).mkdir(parents=True, exist_ok=True)
|
|
|
|
with open(IGNORED_REBUILD_CHECK_FILE, 'w+') as f:
|
|
for p in ignored:
|
|
f.write('{}\n'.format(p))
|
|
|
|
|
|
def remove_from_ignored(pkgname: str):
|
|
ignored = list_ignored()
|
|
|
|
if ignored is None or pkgname not in ignored:
|
|
return
|
|
|
|
ignored.remove(pkgname)
|
|
|
|
Path(os.path.dirname(IGNORED_REBUILD_CHECK_FILE)).mkdir(parents=True, exist_ok=True)
|
|
|
|
if ignored:
|
|
with open(IGNORED_REBUILD_CHECK_FILE, 'w+') as f:
|
|
for p in ignored:
|
|
f.write('{}\n'.format(p))
|
|
else:
|
|
os.remove(IGNORED_REBUILD_CHECK_FILE)
|