Commit graph jw-pkg/scripts
Author SHA1 Message Date
d90c0ebf18
cache.mk: Include from topdir.mk, not make.mk
During a topdir "make all", caching variables is currently not the
first thing that happens. Instead, variables are cached as soon as a
project recurses into the make subdirectory. That was necessary,
because some makefiles were regenerated in the make subdirectory by
autoconf, potentially contributing variables that needed to be
cached.

As of now, autoconf is long gone and this is no longer true. And for
some variables, the two step process becomes involved, notably for
PYTHONPATH, which coding agents would like to look at from the topdir
very early on.

This commit moves the .project-cache.mk creation to topdir.mk, and
.projects-cache.mk creation to jw-pkg/Makefile to address that.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-07-22 14:38:24 +02:00
d3e581f03d
create-mkspec.sh: Tolerate comma-separated subpackages
subpackages = "run, devel" is not tolerated by create-mkspec.sh. It
expects "run devel", which goes against the grain of the other
metadata, so make it at least tolerate the more common
comma-separated variant.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-07-22 11:06:58 +02:00
0c92d942ec
py-test.mk: Generate conftest.py
All checks were successful
CI / Packaging - Kali Linux (pull_request) Successful in 4m21s
CI / Packaging - OpenSUSE Tumbleweed (pull_request) Successful in 4m40s
CI / Packaging test (pull_request) Successful in 0s
CI / Packaging - Kali Linux (push) Successful in 4m6s
CI / Packaging - OpenSUSE Tumbleweed (push) Successful in 4m12s
CI / Packaging test (push) Successful in 0s
Generate a standard conftest.py, mostly for customizing pytest's
bombastic test header, which otherwise lets the more informative make
output look too pale in comparison.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-07-02 19:52:35 +02:00
3eb2904958
purge-stale-projects.sh: Fix getopt regression
All checks were successful
CI / Packaging - Kali Linux (pull_request) Successful in 4m22s
CI / Packaging - OpenSUSE Tumbleweed (pull_request) Successful in 4m28s
CI / Packaging test (pull_request) Successful in 0s
CI / Packaging - Kali Linux (push) Successful in 4m0s
CI / Packaging - OpenSUSE Tumbleweed (push) Successful in 4m20s
CI / Packaging test (push) Successful in 0s
The last commit passes "$*" to getopt in purge-stale-projects.sh,
which is nonsense. Fix that.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-06-30 07:36:15 +02:00
77c746571a
scripts: Fix shellcheck errors
All checks were successful
CI / Packaging - Kali Linux (pull_request) Successful in 4m23s
CI / Packaging - OpenSUSE Tumbleweed (pull_request) Successful in 4m30s
CI / Packaging test (pull_request) Successful in 0s
CI / Packaging - Kali Linux (push) Successful in 4m2s
CI / Packaging - OpenSUSE Tumbleweed (push) Successful in 4m6s
CI / Packaging test (push) Successful in 0s
Fix shellcheck SC2068 (unquoted array expansions), SC2145 (mixed
string/array arguments), SC2328 (redirection in command
substitution), SC2173 (untrapable signals), and SC2148 (missing
shebang) errors across 14 script files.

Also configure scripts/Makefile with --severity=error so that only
errors (not warnings or notes) cause check failures. To be tightened
by follow-up commits.

Assisted-by: unsloth/Qwen3.6-35B-A3B-GGUF:IQ4_NL and pi.dev
Signed-off-by: Jan Lindemann <jan@janware.com>
2026-06-29 17:52:24 +02:00
45f8e8cc89
test + python-tools.sh: Fix toplevel "make all" fallout
All checks were successful
CI / Packaging - Kali Linux (pull_request) Successful in 4m14s
CI / Packaging - OpenSUSE Tumbleweed (pull_request) Successful in 4m20s
CI / Packaging test (pull_request) Successful in 0s
CI / Packaging - Kali Linux (push) Successful in 3m45s
CI / Packaging - OpenSUSE Tumbleweed (push) Successful in 3m52s
CI / Packaging test (push) Successful in 0s
After a pipeline change, CI now runs "make all" in a repo's root,
which uncovers two problems:

1. The help integration test only succeeded as long CI didn't run
   "make all" before "make test". That way, the checked out
   repository lacked the generated __init__.py files needed for some
   modular subcommands to be fully loaded, and hence, the test should
   have failed. The entire machinery only worked because the
   subcommands in question are not not essential to building jw-pkg
   itself: "secrets" and "posix". So, this commit adapts the help
   integration test to the new reality.

2. Regarding python-tools.sh: Commit 55060486 satisfies yapf in some
   places of the source code, but in others not anylonger.  So patch
   python-tools.sh's newline handling again.

While not thematically similar, both fixes get baked into one commit
to satisfy the requirement that every single commit needs to pass
"make clean all check test" individually.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-06-25 18:28:36 +02:00
5506048614
python-tools.sh: Fix missing newline after imports
All checks were successful
CI / Packaging - Kali Linux (pull_request) Successful in 4m42s
CI / Packaging - OpenSUSE Tumbleweed (pull_request) Successful in 5m11s
CI / Packaging test (pull_request) Successful in 0s
CI / Packaging - Kali Linux (push) Successful in 4m12s
CI / Packaging - OpenSUSE Tumbleweed (push) Successful in 4m15s
CI / Packaging test (push) Successful in 0s
Commit 4e347683 removed a tralining newline after imports. Yapf
doesn't like that, so revert that change.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-06-25 16:44:35 +02:00
4e347683ef
python-tools.sh: Fix __all__ format violation
All checks were successful
CI / Packaging - Kali Linux (pull_request) Successful in 3m9s
CI / Packaging - OpenSUSE Tumbleweed (pull_request) Successful in 3m20s
CI / Packaging test (pull_request) Successful in 0s
CI / Packaging - Kali Linux (push) Successful in 3m9s
CI / Packaging - OpenSUSE Tumbleweed (push) Successful in 3m20s
CI / Packaging test (push) Successful in 0s
Make python-tools.sh generate empty __all__ as [] on one line instead
of multi-line format, and remove trailing blank line.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-06-25 09:50:15 +02:00
d42040cb7b
py-mod.mk: Support PY_INIT_SUBMODULES
All checks were successful
CI / Packaging - Kali Linux (pull_request) Successful in 3m3s
CI / Packaging - OpenSUSE Tumbleweed (pull_request) Successful in 3m12s
CI / Packaging test (pull_request) Successful in 0s
CI / Packaging - Kali Linux (push) Successful in 3m2s
CI / Packaging - OpenSUSE Tumbleweed (push) Successful in 3m21s
CI / Packaging test (push) Successful in 0s
Add support for PY_INIT_SUBMODULES to py-mod.mk. If it is defined in
a Makefile including py-mod.mk, the listed submodules will be added
to __init__.py and thus included in the list of things that can be
imported from a module.

This commit also adds support for --submodules to python-tools.sh for
that to happen.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-06-17 19:32:40 +02:00
335b9d601a
python-tools.sh create-init: Code beautification
Make the code in cmd_create_init() and command-line parsing a little
less ugly.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-06-12 09:58:56 +02:00
9039dc7e40
python-tools.sh, py-mod.mk: Use --symbol-filter
All checks were successful
CI / Packaging - Kali Linux (pull_request) Successful in 3m8s
CI / Packaging - OpenSUSE Tumbleweed (pull_request) Successful in 3m22s
CI / Packaging test (pull_request) Successful in 0s
CI / Packaging - Kali Linux (push) Successful in 3m9s
CI / Packaging - OpenSUSE Tumbleweed (push) Successful in 3m14s
CI / Packaging test (push) Successful in 0s
Letting python-tools.sh rewrite symbols is more robust than rewriting
an entire __init__.py with PY_INIT_FILTER in the including Makefile.
The latter can break in non-obvious ways if python-tools.sh changes
__init__.py's format.

Make python-tools.sh support --symbol-filter to remedy that. The
option takes an sed script which should expect a string of two
non-whitespace tokens: The module from which the symbol is imported,
and the name of the symbol in that module. It's output will then be
used as the symbol to be exported from __init__.py.

Also, support the PY_SYMBOL_FILTER variable in py-mod.mk. If it's
defined, it is used for --symbol-filter.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-06-12 07:33:07 +02:00
857efee225
jw-pkg-create-project.sh: Gitignore .cache-project.mk
All checks were successful
CI / Packaging - Kali Linux (pull_request) Successful in 3m15s
CI / Packaging - OpenSUSE Tumbleweed (pull_request) Successful in 3m19s
CI / Packaging test (pull_request) Successful in 0s
CI / Packaging - Kali Linux (push) Successful in 3m20s
CI / Packaging - OpenSUSE Tumbleweed (push) Successful in 3m11s
CI / Packaging test (push) Successful in 0s
Add make/.cache-project.mk to default the .gitignore file created by
make pkg-init-%.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-06-08 20:25:15 +02:00
ca72c21293
projects-dir.mk: Remove "-l user" in ssh-wrapper.sh
By the time projects-dir.mk is used during onboarding, it's already
cloned, and so is jw-pkg in all its glory. So better use a
ssh-wrapper.sh directly under jw-pkg's version control instead of
plainly generating one with echo some-script-logic > ssh-wrapper.sh.

This has the main benefit of allowing a more elaborate script.  The
one added by this commit removes "-l user" from remotes which have a
standard-user@gitserver form, typically because they differentiate
users via their SSH pubkeys only, and which would deny access if both
-l user and standard-user@ were specified.

ssh-wrapper.sh still needs to be a target which is updated by a
recipe, because the version found in jw-pkg can't be trusted to be
executable during bootstrapping, because "make all" has not run, yet.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-06-07 12:06:02 +02:00
57a50381a2
pkg.sh: upload_pkg(): Don't ignore git push errors
After release, pkg.sh pushes the changes to VERSION and HASH
upstream. Failures are masked, though, propagate them.

Unclear what motivated masking the error. Tracking that down with git
blame leads to build-package.sh, which was inherited from ytools,
where the change was introduced 2014 with the trust-inspiring
comment:

  attempted fix for error during commit of version files in
  build-package.sh

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-06-07 09:43:07 +02:00
f27ffae5cd
python-tools.sh: Create empty line after import
The generated code doesn't pass "make check": It would like to see a
newline after the import statement. Add that.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-06-01 20:14:45 +02:00
6db73873e7
jw.pkg: Fix "make check" static code check fallout
The previous commits have put rules for linting and formatting via
ruff, yapf, mypy and pyright into place. They are checked with the
make check target, and this commit adds the fixes for the target to
succeed.

It does some refactoring where type checking dug up dirty bits, and
also adds lots of churn in the Python code. To a good deal, that's
owed to mere formatting changes. It would have been better to
seperate those from syntax and refactoring fixes into multiple
commits, so that the interesting changes don't drown in the
formatting nose. However, that would have been a lot of additional
work only to be thrown away by later commits, hence this commit has a
big diff in one piece. The size of the diff is regrettable but
hopefully a one-off: What it buys is automatic format checking for CI
and predictble formats for smaller diffs in the future.

Rules that "make check" enforces are, in the following order

   - Syntax checkers:

      - ruff check .
      - mypy .
      - pyright

   - Format check:

     - yapf --diff --recursive .

The refactoring includes:

  - Turn the Result class into a more elaborate object, capable of
    doing more heavy lifting around stderr and stdout decoding,
    summarizing outcome, and matching error strings.

    Aside from fixing broken type checks, this also removes lots of
    boilerplate calling code which is currently used for handling
    possible call outcome scenarios. Trying to access an inexistent,
    decoded string should raise a meaningful exception by itself now,
    which removes lots of code with case distinctions.

  - Fix Cmd type hierarchy:

    - Add the AbstractCmd class above Cmd. This is necessary because
      the checker rightfully complains it can't instantiate a Cmd
      instance where constructor arguments were needed. They never
      were, but the type used at the instantiating code's location in
      jw.pkg.App so claims.

    - Lots of sub- and sub-subcommands are derived from the base
      class of the invoking command. That provides some properties
      shared across the ancestor hierarchy of a command, but is
      semantically unsound. Fix that by introducing jw.pkg.BaseCmd
      class as a place to provide basic helpers shared across all
      commands used in a jw.pkg.App's context, and derive all command
      classes from that afresh. The parent command is still reachable
      via a common parent property.

Formatting changes are conforming to PEP-8, mostly, with minor
tweaks. All in all they include the following changes.

  - Remove # -*- coding: utf-8 -*-

    The line was needed by Python 2 which is not supported anylonger.
    For Python 3, the default encoding is UTF-8, anyway.

  - Allow to run "make py-format" without having it produce any
    changes. It's basically "yapf --in-place --recursive ." with some
    code style settings, see conf/topdir/pyproject.toml. The settings
    may be debatable. I've had custom tweaks in place on that target,
    too, but then again, IDEs would have more hassle to integrate
    that.

  - Introduce a 88 character line length limit

  - One import per line, reshuffle them semantically, see
    [tool.isort] in pyproject.toml.

  - Hide imports needed for type-checking only behind

      if TYPE_CHECKING

  - Spaces around assignments accounts for much churn. Having having
    no spaces in inline parameter list assignments and default
    parameter values would arguably be more compact where it's
    useful. On the other hand, I have not found a code formatter
    which allows spaces around assignments in parameter lists broken
    into one per line and that's often better than a wall of text.

  - Add two spaces before # export, as this seems to be mandated by
    PEP-8

  - Use single quotes by default

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-05-31 18:20:38 +02:00
8c5c98c95a
py-topdir.mk: Use pyright
py-topdir.mk: Use ruff and yapf

  - Use pyright for the target py-check-syntax

  - Generate a $(TOPDIR)/pyrightconfig.json for that

  - Add pyrightconfig-base.json because it's used by
    pyrightconfig.json

  - Add python3-pyright to pkg.requires.release, anticipating the use
    of the py-syntax-check target by CI

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-05-31 18:20:37 +02:00
36d854ce19
py-topdir.mk: Use ruff and yapf
- Use ruff and yapf for the targets py-check-syntax, py-format and
    py-check-format.

  - Add a pyproject.toml for those. It also includes configuration
    for isort, albeit not being directly used in the linter targets.

  - Make .gitignore igore that in newly created projects.

  - Add ruff, yapf and isort to pkg.requires.release, anticipating
    their use by CI.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-05-31 18:20:36 +02:00
fc6f2fbb65
python-tools.sh: Fix __init__.py linter complaints
The __init__.py files as gnerated by python-tools.sh contain multiple
issues, fix them:

  - Make the machinery fail if the same type name is imported from
    different modules

  - Support relative imports from .Module import Module instead of
    having to use the entire module path as import source

  - Import types explicitly re-exported with "as":

      from .Module import Module as Module

    Otherwise ruff will regard the type as "imported but not used"

  - Add "# ruff: noqa: E501" near the top. The import lines can get
    long and are beyond manual control (except for renaming the
    modules themselves, that is). This can cause ruff to fail, so get
    it to accept long lines in __init__.py. The style violation
    doesn't make much of a difference in generated code, anyway,
    because nobody reads that. Plus what's happening in the code
    isn't rocket science, so good style wouldn't help much with
    understanding, either.

This promptly digs up two symbol name conflicts lib.pm.dpkg and
lib.pm.rpm. Fix them along with this commit to keep it from breaking the build.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-05-31 17:51:51 +02:00
ec92d89295
pkg.sh: release: Push without JW_PKG_SSH_EXTRA_OPTS
Currently, completing a release works with a plain git push. It may
push to several repos, depending on how the client repo's origin's
pushurl is configured. Those repos may have different user names, and
if the ssh wrapper added -l via JW_PKG_SSH_EXTRA_OPTS, the push would
fail. Hence, disable JW_PKG_SSH_EXTRA_OPTS for that case.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-05-13 12:54:50 +02:00
f6f6e56943
make / scripts: git.janware.com -> devgit.janware.com
janware upstream development server moved from git.janware.com to
devgit.janware.com. This commit follows the move with pretty much a
simple

	s/git.janware.com/devgit.janware.com/

over jw-pkg. It found 14 matches, that's pretty bad.

FIXME: Reduce the redundancy, or, better, replace the
devgit.janware.com goodies by a more generally useful concept
altogether.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-05-12 15:15:29 +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
d8653ac486 Remove /srv/git from janware Git URLs
git.janware.com has /srv/git removed from its Git URLs, follow suit.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-13 12:15:37 +02:00
c5c621366b scripts/usr-bin: scripts.mk -> std-targets.mk
jw-pkg is copied into $(TOPDIR)/bin during build, that's wrong.
Write a rule precisely targeted at installing /usr/bin/jw-pkg, and
cut all the scripts.mk machinery.

Also, make jw-pkg a relative link to avoid the respective RPM
warning.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-08 16:47:00 +02:00
5ae2dde608 pgit.sh list-repos with --interactive false
pgit.sh list-repos runs jw-pkg.py projects list-repos. Interactivity
hurts here, turn it off.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-07 15:38:00 +02:00
af6de30546 scripts/usr-bin: Install symlink /usr/bin/jw-pkg
Install a symlink /usr/bin/jw-pkg -> /opt/jw-pkg/bin/jw-pkg.py in
order to have jw-pkg in $PATH.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-06 15:58:11 +02:00
67eab4b864 pgit.sh: Fix log_start_stop()
log_start_stop() is responsible for logging markers at the beginning
and end of a decorated log. They should not be applied if pgit.sh is
run with --porcelain. In fact, they are, and vice versa. Fix that.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-06 15:57:30 +02:00
91abb82879 pgit.sh: Set -o pipefail
Set -o pipefail at the start of the script. This makes pgit.sh commit
work. Before it didn't, because run_git() doesn't return a proper
return value when it's used in a pipe with a cosmetic sed afterwards.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-04 19:02:24 +02:00
1da3f37889 pgit.sh: Honour PGIT_IGNORE for pgit.sh commit
PGIT_INGORE is not honoured for pgit.sh commit, fix that.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-04 18:57:40 +02:00
27bf98f747 pgit.sh: Beautify logging
Log to stderr and add some ASCII-art around the output. Also, add a
--porcelain option to allow more stable output parsing. Subsequently,
use that option in make targets parsing the output, notably make diff
and make git-show-xxx.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-03-27 09:16:14 +01:00
ca6f27d2f0 mkspec-wrapper.sh: Add OS id to $INSTALL_LOG
Add the name of the operating system ID as taken from /etc/os-release
to $INSTALL_LOG. This should allow for easier post-mortem debugging
if multiple builds used the same file in /tmp and possibly also
prevent conflicts.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-03-20 10:30:25 +01:00
896a607b09 systemctl-wrapper.sh: Beautify logging
Apply some more ASCII-art to systemctl-wrapper.sh's output.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-03-16 19:14:41 +01:00
c893584e5e make: Replace RPM -> PKG
jw-pkg supports more than RPM-based package managers, but for
historic reasons, lots of its Makefile variables still have "RPM" in
their names. This is misleading. Replace "RPM" in variable names by
the more generic "PKG" where appropriate.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-03-16 14:57:50 +01:00
cecee8a842 systemctl-wrapper.sh: Add script to check for systemd
Maintainer scripts often mess with systemd services via systemctl. In
Docker containers, chroot environments or other environments not
governed by Systemd, systemctl will not exist or complain. This is a
frequent use case, worthy of providing a wrapper to catch and ignore
these cases conveniently.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-03-14 14:15:04 +01:00
e9cb539ecf jw-pkg.py: Enable argcomplete
Register a bash-completion handler for jw-pkg.py, and mark it with
PYTHON_ARGCOMPLETE_OK.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-03-06 12:06:28 +01:00
adbeba2b9b pkg.sh: Don't escape maintainer scripts
Signed-off-by: Jan Lindemann <jan@janware.com>
2026-03-05 13:11:43 +00:00
f55a32024b pgit.sh get: Fix default revision for fresh clones
Fix detection of a project's revision if a project directory is
freshly cloned, and hence doesn't exist, yet. The fix is to default
to master for now.
2026-03-04 16:59:46 +00:00
9373550af6 create-mkdebian.sh: Fix Maintainer + Homepage
There's no "Homepage" meta tag in the .deb files created by jw-pkg,
add one.

Also, generate an e-mail address <global.jw-maintainer>@janware.com
to go into the Maintainer field. Not ideal, but a low-hanging fruit.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-03-04 14:45:38 +01:00
e7cf6afe17 pgit.sh: Fix "Running" log message
pgit.sh logs "Running $0 $@ GIT_SSH=" which is not the exact command
line. Fix that, and prefix log messages with "pgit.sh".

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-03-03 05:11:59 +01:00
20b14c109d pkg.sh: Determine upload dir from jw-pkg.sh distro info
A compiled release package is currently uploaded to a fixed
directory, determine it dynamically for every distro seperately.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-03-02 16:10:34 +00:00
6f9905a3d5 dpm.sh: Support --nodeps and --allmatches
Signed-off-by: Jan Lindemann <jan@janware.com>
2026-03-02 12:55:36 +00:00
d481e3b8f1 dpm.sh: Support plain rpm -q
Signed-off-by: Jan Lindemann <jan@janware.com>
2026-03-02 12:55:36 +00:00
0cf4b29cfb scripts/get-os.sh: Remove
Remove the now obsolete get-os.sh from jw-pkg. Use "jw-pkg.py distro
info" to get the information it used to provide.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-03-02 12:55:36 +00:00
2f157db18d pkg.sh: Replace get-os.sh by pkg.py distro info
Remove get-os.sh from pkg.sh to reduce redunancy.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-03-02 12:55:36 +00:00
1da00283d1 jw.pkg.cmds.projects.CmdOsCascade: Remove
CmdOsCascade is superseeded by CmdInfo. Use the latter and retire the
former.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-03-02 12:55:36 +00:00
ca7a5a5265 pkg.sh: Evaluate pkg.run on Debian
pkg.run is not evaluated on Debian, fix that. For now it's hacked
into pkg.sh, which is bound to be replaced by Python. The limited
hassle is still worth the detour.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-02-28 13:15:05 +00:00
a0b166748a create-mkdebian.sh: Indent heredocs
For better readability indent the heredocs.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-02-28 13:02:03 +00:00
8dcaa1a6a1 jw.pkg.cmds.projects.CmdListRepos: --from-owner
Rename the --from-user option to --from-owner. Forgejo supports users
and organizations under the more general term "owner", so that's the
better term.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-02-27 17:12:11 +01:00
e799f6bccc pgit.sh: Add command exec
Add a command "exec", which takes its arguments and runs it as a
shell command within all projects in $PGIT_SH_PROJECTS.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-02-21 15:53:27 +01:00
472bba6fbb pgit.sh: Make PGIT_SH_PROJECTS work on all commands
PGIT_SH_PROJECTS currently only sets the projects to operate on for
the get command. Extend this to all commands. And replace the
environment variable by a command-line option, likely after this
script has been ported to Python.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-02-21 15:53:27 +01:00