Commit graph

4,792 commits

Author SHA1 Message Date
91732cbfa1 Start version: 1.0.0-215
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-25 23:07:55 +00:00
f23c0560e5
cmds.secrets.lib.util.compile_template_file(): Fix

Fix broken call to FilesContext(ctx).compile_template_file() after trying it out the first time.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-25 13:51:12 +02:00
37fcf56ad2
lib.FileContext._mktemp(): Fix missing self before _chroot()

_mktemp() call _chroot() instead of self._chroot(), fix that.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-25 13:50:42 +02:00
cfe47b984b Release 1.0.0-214@suse-tumbleweed/x86_64
All checks were successful
Test repo on all supported platforms / CI (push) Successful in 3m57s
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-25 07:32:37 +00:00
a12e0df753 Release 1.0.0-214@kali-rolling/amd64
All checks were successful
Test repo on all supported platforms / CI (push) Successful in 4m3s
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-25 07:19:35 +00:00
a888690fa3 Start version: 1.0.0-214
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-25 07:18:37 +00:00
66b968c51c
TarIo.TarIoTarFile._extract(): Fix typo

TarIoTarFile is currently unused but should still be correct, so fix a typo in _extract().

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-25 08:47:45 +02:00
069899e48e
lib: Remove leftover breakpoints

Remove two breakpoints not belonging in the code of TarIo and Types.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-25 08:47:21 +02:00
a9475de48e
lib.ExecContext: Add open() + close() around _run()

Enclose ExecContext._run() in an open() / close() - pair. This is convenient for the caller in that it doesn't need to take care of opening and closing for one call only, and inconvenient in that it forces the caller to conciously add an open() / close() - pair around multiple run() calls where it wants the context to stay open in between. Or use the ExecContext as a context manager.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-25 08:45:29 +02:00
3ac3aff997
lib: Fix silent assertitons

There are a couple of assert statements in the codebase which can make jw-pkg fail without any detail whatsoever if --backtrace is not specified, fix that.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-25 08:44:49 +02:00
120a6e4d34
cmds.secrets.CmdInstall: Add command

Support

jw-pkg secrets install mypasswords.tar.gpg [package-1 [package-2 ...]]

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-24 16:53:55 +02:00
b88a8ee299
cmds.secrets.lib.DistroContext.install(): Add method

Add DistroContext.install(). It takes a tar file containing secrets, decrypts it, and installs all secrets needed on target and present in that file. For every file that should be extracted, it logs if it acutally did something or didn't.

It also features an only_missing argument, which is just a stub for "allow to define somy extraction policy with respect to replacing all / some / not replace / whatever. Not thought through.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-24 16:53:55 +02:00
db22f11b32
cmds.posix.tar.CmdExtract: Log number of extracted files

Add a little log line at execution end, saying how many files were actually extracted.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-24 16:53:55 +02:00
7309ec687e
lib.TarIo.extract(): Return list of extracted files

Make TarIo.extract return the list of files that were actually extracted.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-24 16:53:55 +02:00
f2ca32a343
CopyContext: Replace src_uri, dst_uri by src, dst

Allow to pass ready-made FileContext objects to CopyContext's destructor so it doesn't need to instantiate them itself.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-24 16:53:55 +02:00
772512aee0
FileContext.open() / close(): Only call wrapped once

FileContext's _open() and _close() are called everytime their wrapper is called, which tasks the caller with keeping track of whether they were already called or not. Be a little easier on the caller, keep track in an open count, and call _open() only once for multiple calls to open(), and close() likewise. The caller still needs to make sure the number of open() and close() calls matches.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-24 16:53:55 +02:00
514d66dac1
cmds.distro.CmdInfo: Rename to cmds.platform.CmdInfo

Rename command "distro" to "pkg" together with "info", its last remaining subcommand. "distro" is often used in the sense of "Linux distribution", which would be too narrow for the targets jw-pkg could theoretically support.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-24 16:53:55 +02:00
5830984bfc
cmds.distro.CmdXxx: Rename to cmds.pkg.CmdXxx

With the exception of the "info" subcommand, nearly all of distro's subcommands deal with package managing, so push them into their own command category.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-24 16:53:55 +02:00
c19111e5b6
App: Rename global option --uri -> --target

--uri is unnecessarily generic in that it could mean the URI of anything. --target makes it clearer that operations are to be exectuted on that target.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-24 16:53:55 +02:00
563ec7463a
cmds.secrets.Cmd: Fix type hints

cmds.secrets.Cmd has a CmdDistro-typed parent, should be CmdSecrets, fix that.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-24 16:53:54 +02:00
cc6febcda3
lib.Cmd: Add description property

Add keyword-argument description to Cmd.__init__(), and default it to help. Also, add a property .description returning it, and add it to add_parser() so that it shows up in the usage message.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-24 16:53:54 +02:00
f4d0828713 Release 1.0.0-213@suse-tumbleweed/x86_64
All checks were successful
Test repo on all supported platforms / CI (push) Successful in 3m57s
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-24 10:01:33 +00:00
0f73926ed4 Release 1.0.0-213@kali-rolling/amd64
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-24 09:49:08 +00:00
e4db392cef Start version: 1.0.0-213
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-24 09:48:11 +00:00
d1c34a24fb Release 1.0.0-212@suse-tumbleweed/x86_64
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-24 09:03:43 +00:00
c1e76bdd81 projects-dir.mk: Get with --create-remote-user-repos

pgit.sh get is not invoked with --create-remote-user-repos by default. For the janware Git servers, this makes CI fail over new repos: Repos from the maintainers are pulled, but before pkg-rebuild-reinstall, repos that the devops user has no remote repo for are purged again and are subseqently missing during build.

Passing --create-remote-user-repos to all pgit.sh get invocations should fix the problem, so do that.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-24 09:02:52 +00:00
f279aa2163 Release 1.0.0-212@kali-rolling/amd64
All checks were successful
Test repo on all supported platforms / CI (push) Successful in 4m10s
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-23 23:09:55 +00:00
592f36adff Start version: 1.0.0-212
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-23 23:08:58 +00:00
7357092576
cmds.posix.Tar: Add command

Add a "jw-pkg posix tar" command. Currently the only thing that can be done with it is extracting.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-23 20:18:42 +02:00
a5e7647026
lib.TarIo: Add module

Add a class providing a method to read tar files from a FileContext, and extract them to another.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-23 20:18:42 +02:00
d82bc20663
lib.CopyContext: Add module

Add a CopyContext class. At this point it mostly acts as a context manager for two FileContext instances, and copying data is the canonical case to use it, hence the name.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-23 20:18:42 +02:00
4c81647bbe
lib.FileContext: Support attaching data filters

- Add optional in_pipe and out_pipe parameters to __init__()

- Add a add_proc_filter() method

Add possibilites to attach input / output pipes to a FileContext instance. Data will be passed through the input pipe between ._get() and .get(), and through the output pipe between .put() and _put().

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-23 20:18:40 +02:00
58f7997bc6
lib.FileContext.open(): Add method

Add an async open() method which should allow to do what __init__() couldn't, because it's not async, and to match the already existing .close(). It's called by __aenter__() __aexit__() if the FileContext is instantiated as context manager, or at will when the user finds it a good idea.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-23 15:32:34 +02:00
432830a5c5
lib.FileContext.mkdir(): Add method

Add .mkdir() to the API which should do the expected, and implement it in ExecContext and Local specializations.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-23 15:30:22 +02:00
7547d13a6d
lib.FileContext: Support chroot

Add a bool parameter "chroot" to __init__(). If passed, all path-centric operations act as if .root was prepended to it.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-23 15:30:08 +02:00
b52264dfad
lib.FileContext.root: Add property

Add a .root property, returning the path part of the instantiating URI. Nothing meaningful beyond returning it is done with it so far.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-23 15:29:20 +02:00
6a3cf7a283
lib.FileContext: Beautify NotImplementedErrors

Each wrapper method throws a NotImplementedError by default. Make that error a little more descriptive in case it really gets thrown.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-23 15:28:54 +02:00
3360ec86cb
lib.FileContext: Add URI manipulation methods

Add .schema_from_uri(), .split_uri(), .id() to define some standardish way to dissect an URI the same way FileContext does.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-23 15:27:38 +02:00
efe047fa50
lib.ExecContext: Strip unnecessary args from __init__()

Code beautification: __init__() doesn't use the arguments it grabs by name from its parameter list, use *args and **kwargs instead.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-23 15:26:42 +02:00
d70454b32a
lib.ProcFilterGpg: Add module

Add a ProcFilter implementation for decrypting GPG blobs. It needs an ExecContext passed to __init__() in order to run /usr/bin/gpg.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-23 15:25:57 +02:00
411bfd41ca
lib.ProcFilter: Add module

Add the ProcFilter module, containing the following classes:

- ProcFilter:

Abstract base class defining a run(data: bytes) -> Result method, allowing to do arbitrary data manipulation in subclasses.

- ProcFilterIdenty

A ProcFilter specialization which passes through the input unchanged.

- ProcPipeline

A container for multiple chained ProcFilter classes
Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-23 15:23:27 +02:00
9eda1c890e Release 1.0.0-211@suse-tumbleweed/x86_64
All checks were successful
Test repo on all supported platforms / CI (push) Successful in 4m4s
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-21 23:24:44 +00:00
ef9e9d8a5c Release 1.0.0-211@kali-rolling/amd64
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-21 23:10:08 +00:00
386ba30451 Start version: 1.0.0-211
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-21 23:09:12 +00:00
32c3477102
cmds.secrets.lib.DistroContext.list_template_files(): List more

Default to Distro's idea of relevant packages if no packages are specified on the command line.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-21 21:52:10 +02:00
655b17bfec
cmds.secrets.lib.DistroContext: packages -> pkg_names

Cosmetics: The "packages" parameter to some DistroContext's methods has a confusing name in same contexts, notably when mixed with a list of Package instances, so rename it to "pkg_names".

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-21 21:52:10 +02:00
1646aaeb59
cmds.distro.CmdSelect: Use select(filter)

Ditch the CmdSelect.filter_packages(), because Distro.select() now supports filtering out of the box.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-21 21:52:10 +02:00
fc6af091eb
lib.Distro.select(): Add filter parameter

Add an optional "filter: PackageFilter|None" parameter to .select(), and if it's not None, call a new version of ._select() with it.

._select() is not abstract anylonger. Its default implementation filters the results of ._select_by_name(), can be reimplemented by deriving classes for better performance, but doesn't have to.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-21 21:52:10 +02:00
4e1ec7eaf6
lib.Distro._select() -> _select_by_name()

Rename ._select() to _select_by_name() in Distro and its subclasses. Don't rename .select() itself, because it's going to be a broader interface supporting more select criteria than just package names.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-21 21:52:09 +02:00
4e2b15e586
App: Support --pkg-filter / JW_DEFAULT_PKG_FILTER

Add global --pkg-filter argument, defaulting to JW_DEFAULT_PKG_FILTER. If it's specified, instantiate a PackageFilterString from it, and initialize App's Distro instance with it.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-21 21:52:09 +02:00