Releases: jose-pr/pkgforge
Releases · jose-pr/pkgforge
Release list
v0.1.0
First release. pkgforge stages files into a build root, records their intended
install metadata in a file DB, and renders that DB into RPM/Debian packaging
manifests. Built on the duho declarative CLI
framework; Python 3.9+, Linux runtime.
Added
- Commands:
install(stage a source and record its entry — files,
directories, symlinks, decompression, hardlinks,--exclude,--chown,
--remove-source),scan(walk a tree and record entries;--missingfills
gaps),dbdump(render the DB to a packaging manifest),initdb, and
compact(collapse an append-log DB to one record per live path). - Dump formats:
rpmspecfiles(RPM%fileslines with%attr/%dirand a
meta.rpmprefix) anddebian(install+permissionsartifacts). The
format registry supports multi-artifact formats. - Pluggable file-DB backends behind one
DbProviderinterface:jsonl
(append-only JSON Lines, the default),yaml(append-only YAML), andsqlite
(a real SQLite store, upserted in place). Every command behaves identically
across all three. The backend is inferred from the--dbsuffix
(.jsonl/.ndjson,.yaml/.yml,.db/.sqlite/.sqlite3);--db-format
/PKGFORGE_DB_FORMAToverrides it, and reading auto-detects a file's actual
format.register_provider()lets a third-party package add its own backend;
DbProvider,open_db, andregister_providerare exported from the package. - Environment-driven configuration for unattended builds (
PKGFORGE_ROOT,
PKGFORGE_DB,PKGFORGE_DB_FORMAT),--version, and shell completion. - Tar-family archives extract via stdlib
tarfile(safedatafilter where
supported);bsdtaris only a fallback for other formats (e.g..iso). - Documentation site (mkdocs-material) with a guide + API reference, a
benchmarks/runner, an end-to-end example, and CI (test.yml/release.yml).
Notes
- File-DB entries store
modeas an octal permission string; two sentinels
(-= OS default,--= resolve from disk) defer a field to the staged file. - Hardlink install uses
os.linkfor portability across Python 3.9–3.13
(Path.link_towas removed in 3.12;Path.hardlink_toonly exists from 3.10).
Full Changelog: https://github.com/jose-pr/pkgforge/commits/v0.1.0