mirror of
https://gitlab.com/kupfer/kupferbootstrap.git
synced 2025-02-23 05:35:44 -05:00
progressbar: add ellipsize()
This commit is contained in:
parent
219eb1cb75
commit
025dedc4b6
3 changed files with 22 additions and 7 deletions
|
@ -17,9 +17,9 @@ from chroot.build import get_build_chroot, BuildChroot
|
||||||
from distro.distro import get_kupfer_https, get_kupfer_local
|
from distro.distro import get_kupfer_https, get_kupfer_local
|
||||||
from distro.package import RemotePackage, LocalPackage
|
from distro.package import RemotePackage, LocalPackage
|
||||||
from distro.repo import LocalRepo
|
from distro.repo import LocalRepo
|
||||||
from progressbar import get_levels_bar
|
from progressbar import BAR_PADDING, get_levels_bar
|
||||||
from wrapper import check_programs_wrap, is_wrapped
|
from wrapper import check_programs_wrap, is_wrapped
|
||||||
from utils import sha256sum
|
from utils import ellipsize, sha256sum
|
||||||
|
|
||||||
from .pkgbuild import discover_pkgbuilds, filter_pkgbuilds, Pkgbase, Pkgbuild, SubPkgbuild
|
from .pkgbuild import discover_pkgbuilds, filter_pkgbuilds, Pkgbase, Pkgbuild, SubPkgbuild
|
||||||
|
|
||||||
|
@ -648,7 +648,7 @@ def get_unbuilt_package_levels(
|
||||||
counter_unbuilt = package_bar.add_subcounter('blue')
|
counter_unbuilt = package_bar.add_subcounter('blue')
|
||||||
for level_num, level_packages in enumerate(package_levels):
|
for level_num, level_packages in enumerate(package_levels):
|
||||||
level_num = level_num + 1
|
level_num = level_num + 1
|
||||||
package_bar.update(0, level=level_num)
|
package_bar.update(0, name=" " * BAR_PADDING, level=level_num)
|
||||||
level = set[Pkgbuild]()
|
level = set[Pkgbuild]()
|
||||||
if not level_packages:
|
if not level_packages:
|
||||||
continue
|
continue
|
||||||
|
@ -662,7 +662,7 @@ def get_unbuilt_package_levels(
|
||||||
build_names.update(package.names())
|
build_names.update(package.names())
|
||||||
|
|
||||||
for package in level_packages:
|
for package in level_packages:
|
||||||
package_bar.update(0, name=package.path)
|
package_bar.update(0, name=ellipsize(package.name, padding=" ", length=BAR_PADDING))
|
||||||
if (force and package in packages):
|
if (force and package in packages):
|
||||||
add_to_level(package, level, 'query match and force=True')
|
add_to_level(package, level, 'query match and force=True')
|
||||||
elif rebuild_dependants and package in dependants:
|
elif rebuild_dependants and package in dependants:
|
||||||
|
@ -717,20 +717,21 @@ def build_packages(
|
||||||
unit='pkgs',
|
unit='pkgs',
|
||||||
total=sum([len(lev) for lev in build_levels]),
|
total=sum([len(lev) for lev in build_levels]),
|
||||||
fields={"levels_total": total_levels},
|
fields={"levels_total": total_levels},
|
||||||
|
enable_rate=False,
|
||||||
)
|
)
|
||||||
files = []
|
files = []
|
||||||
updated_repos: set[str] = set()
|
updated_repos: set[str] = set()
|
||||||
|
package_bar.update(-1)
|
||||||
for level, need_build in enumerate(build_levels):
|
for level, need_build in enumerate(build_levels):
|
||||||
level = level + 1
|
level = level + 1
|
||||||
package_bar.update(incr=0, name=None, level=level)
|
package_bar.update(incr=0, force=True, name=" " * BAR_PADDING, level=level)
|
||||||
logging.info(f"(Level {level}/{total_levels}) Building {get_pkg_names_str(need_build)}")
|
logging.info(f"(Level {level}/{total_levels}) Building {get_pkg_names_str(need_build)}")
|
||||||
for package in need_build:
|
for package in need_build:
|
||||||
package_bar.update(incr=0, name=package.path)
|
package_bar.update(force=True, name=ellipsize(package.name, padding=" ", length=BAR_PADDING))
|
||||||
base = package.pkgbase if isinstance(package, SubPkgbuild) else package
|
base = package.pkgbase if isinstance(package, SubPkgbuild) else package
|
||||||
assert isinstance(base, Pkgbase)
|
assert isinstance(base, Pkgbase)
|
||||||
if package.is_built(arch):
|
if package.is_built(arch):
|
||||||
logging.info(f"Skipping building {package.name} since it was already built this run as part of pkgbase {base.name}")
|
logging.info(f"Skipping building {package.name} since it was already built this run as part of pkgbase {base.name}")
|
||||||
package_bar.update()
|
|
||||||
continue
|
continue
|
||||||
build_package(
|
build_package(
|
||||||
package,
|
package,
|
||||||
|
|
|
@ -6,6 +6,7 @@ from typing import Hashable, Optional
|
||||||
|
|
||||||
from config.state import config
|
from config.state import config
|
||||||
|
|
||||||
|
BAR_PADDING = 25
|
||||||
DEFAULT_OUTPUT = sys.stderr
|
DEFAULT_OUTPUT = sys.stderr
|
||||||
|
|
||||||
managers: dict[Hashable, Manager] = {}
|
managers: dict[Hashable, Manager] = {}
|
||||||
|
|
13
utils.py
13
utils.py
|
@ -169,3 +169,16 @@ def sha256sum(filename):
|
||||||
while n := f.readinto(mv):
|
while n := f.readinto(mv):
|
||||||
h.update(mv[:n])
|
h.update(mv[:n])
|
||||||
return h.hexdigest()
|
return h.hexdigest()
|
||||||
|
|
||||||
|
|
||||||
|
def ellipsize(s: str, length: int = 25, padding: Optional[str] = None, ellipsis: str = '...', rjust: bool = False):
|
||||||
|
"""
|
||||||
|
Ellipsize `s`, shortening it to `(length - len(ellipsis))` and appending `ellipsis` if `s` is longer than `length`.
|
||||||
|
If `padding` is non-empty and `s` is shorter than length, `s` is padded with `padding` until it's `length` long.
|
||||||
|
"""
|
||||||
|
if len(s) > length:
|
||||||
|
return s[:length - len(ellipsis)] + ellipsis
|
||||||
|
if not padding:
|
||||||
|
return s
|
||||||
|
pad = s.rjust if rjust else s.ljust
|
||||||
|
return pad(length, padding)
|
||||||
|
|
Loading…
Add table
Reference in a new issue