Build and packaging library
  • Python 54.1%
  • Makefile 33.7%
  • Shell 12.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jan Lindemann 9f7e1b6cb2 lib.Cmd: Build the command tree lazily
App() construction builds the entire command tree: every
load_subcommands() call in a command's __init__() constructs its whole
subtree eagerly, so running a single leaf command pays to instantiate
every unrelated command object as well (jw-pkg builds about 50 command
objects for any invocation).

Defer the construction instead. load_subcommands() now records only the
module search path and name filter, and the subcommands are materialized
on first access to the children or child_classes property. The parser
reads children only down the invoked branch on the non-help path, so a
simple run instantiates just that path (jw-pkg builds 5-7 objects),
while the help and completion path expands every node and leaves
rendered help unchanged.

Assisted-by: unsloth/Qwen3.8-27B-GGUF:Q4_K_M with pi.dev v0.84.2
Signed-off-by: Jan Lindemann <jan@janware.com>
2026-08-18 01:14:40 +02:00
.github/workflows ci.yaml: test-packaging.yaml@{master-test -> master} 2026-06-08 19:43:15 +02:00
bin bin, make, scripts: Re-add files necessary for packaging jw-build 2025-11-14 11:22:50 +01:00
conf py-check.mk: Run isort with "make format" 2026-08-11 16:45:14 +02:00
make defs.mk: Default VERSION -> 0.1.0-0-dev 2026-08-15 20:44:30 +02:00
scripts defs.mk: Default VERSION -> 0.1.0-0-dev 2026-08-15 20:44:30 +02:00
src lib.Cmd: Build the command tree lazily 2026-08-18 01:14:40 +02:00
test lib.App: Add a root command slot 2026-08-17 12:53:05 +02:00
.gitignore cache.mk: Include from topdir.mk, not make.mk 2026-07-22 14:38:24 +02:00
HASH Release 1.0.0-254@kali-rolling/amd64 2026-08-17 23:12:48 +00:00
Makefile cache.mk: Include from topdir.mk, not make.mk 2026-07-22 14:38:24 +02:00
RELEASES Release 1.0.0-254@kali-rolling/amd64 2026-08-17 23:12:48 +00:00
VERSION Start version: 1.0.0-254 2026-08-17 23:11:43 +00:00