Add argsparse formatter

This commit is contained in:
timoxa0 2024-05-10 14:12:58 +05:00
parent d12b3678b0
commit 4f7afad4e3
3 changed files with 45 additions and 22 deletions

View file

@ -14,6 +14,7 @@ import adbutils
import adbutils.shell import adbutils.shell
from rich.console import Console from rich.console import Console
from rich.prompt import Prompt from rich.prompt import Prompt
from rich_argparse import RichHelpFormatter
from . import Files from . import Files
from .utils import check_device, get_port, flash_boot, boot_ofox, clean_device, wait_for_bootloader, check_parts, \ from .utils import check_device, get_port, flash_boot, boot_ofox, clean_device, wait_for_bootloader, check_parts, \
@ -43,46 +44,50 @@ def main() -> int:
signal.signal(signal.SIGINT, handle_sigint) signal.signal(signal.SIGINT, handle_sigint)
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
description="Linux on Nabu deployer" description="Linux on Nabu deployer",
formatter_class=lambda prog: RichHelpFormatter(
prog,
max_help_position=37
)
)
parser.add_argument(
"-v", "--version",
help="show version and exit",
action="store_true"
) )
parser.add_argument( parser.add_argument(
"-d", "--device-serial", "-d", "--device-serial",
help="Device serial" help="device serial"
) )
parser.add_argument( parser.add_argument(
"-u", "--username", "-u", "--username",
help="User name" help="linux user name"
) )
parser.add_argument( parser.add_argument(
"-p", "--password", "-p", "--password",
help="User password" help="linux user password"
) )
parser.add_argument( parser.add_argument(
"RootFS", "RootFS",
help="RootFS image" help="root fs image",
default=None, nargs="?"
) )
parser.add_argument( parser.add_argument(
"-S", "--part-size", "-S", "--part-size",
help="linux partition size in percents" help="linux partition size in percents"
) )
parser.add_argument( parser.add_argument(
"--debug", "--debug",
help="enable debug output", help="enable debug output",
action="store_true" action="store_true"
) )
parser.add_argument(
"--version",
help="show version and exit",
action="store_true"
)
args = parser.parse_args() args = parser.parse_args()
if args.version: if args.version:
@ -94,16 +99,19 @@ def main() -> int:
else: else:
logger.setLevel(logging.INFO) logger.setLevel(logging.INFO)
rootfs = op.abspath(args.RootFS) if args.RootFS:
try: rootfs = op.abspath(args.RootFS)
rootfs_magic = magic.Magic(mime=True).from_file(rootfs) try:
logger.debug(f"RootFS magic: {rootfs_magic}") rootfs_magic = magic.Magic(mime=True).from_file(rootfs)
if rootfs_magic not in ["application/octet-stream", "inode/blockdevice"]: logger.debug(f"RootFS magic: {rootfs_magic}")
console.log("Invalid RootFS image") if rootfs_magic not in ["application/octet-stream", "inode/blockdevice"]:
console.log("Invalid RootFS image")
return 1
except FileNotFoundError:
console.log("RootFS image not found!")
return 1 return 1
except FileNotFoundError: else:
console.log("RootFS image not found!") console.log(parser.parse_args("-h".split()))
return 1
while True: while True:
try: try:

16
poetry.lock generated
View file

@ -642,6 +642,20 @@ pygments = ">=2.13.0,<3.0.0"
[package.extras] [package.extras]
jupyter = ["ipywidgets (>=7.5.1,<9)"] jupyter = ["ipywidgets (>=7.5.1,<9)"]
[[package]]
name = "rich-argparse"
version = "1.4.0"
description = "Rich help formatters for argparse and optparse"
optional = false
python-versions = ">=3.7"
files = [
{file = "rich_argparse-1.4.0-py3-none-any.whl", hash = "sha256:68b263d3628d07b1d27cfe6ad896da2f5a5583ee2ba226aeeb24459840023b38"},
{file = "rich_argparse-1.4.0.tar.gz", hash = "sha256:c275f34ea3afe36aec6342c2a2298893104b5650528941fb53c21067276dba19"},
]
[package.dependencies]
rich = ">=11.0.0"
[[package]] [[package]]
name = "setuptools" name = "setuptools"
version = "69.5.1" version = "69.5.1"
@ -689,4 +703,4 @@ files = [
[metadata] [metadata]
lock-version = "2.0" lock-version = "2.0"
python-versions = "3.11.*" python-versions = "3.11.*"
content-hash = "e2af14ef9b15c3b3cc9b0716da5276427808f431f8d5603541dfdf390656397b" content-hash = "f36325d69c03ac98f4b2bd0aed451b859ef95bc05b3c3a072da079770e683e0a"

View file

@ -15,6 +15,7 @@ pyinstaller = "^6.6.0"
libusb = "^1.0.27" libusb = "^1.0.27"
python-magic = { version = "^0.4.27", platform="linux" } python-magic = { version = "^0.4.27", platform="linux" }
python-magic-bin = { version = "0.4.14", platform="win32" } python-magic-bin = { version = "0.4.14", platform="win32" }
rich-argparse = "^1.4.0"
[tool.poetry.scripts] [tool.poetry.scripts]
lon-deployer = "lon_deployer.main:run" lon-deployer = "lon_deployer.main:run"