Commit Graph

1099 Commits

Author SHA1 Message Date
Levente Polyak 4d72f4560c
doc(version): extensively revamp documentation for version subcommands
Enhanced and overhauled the documentation for the 'version' subcommand.
The improvements include comprehensive details on the subcommand's
behavior, usage, and a variety of scenarios it handles.

Added a central section within the pkgctl-version manpage that documents
the nvchecker configuration and rules.

Component: pkgctl version
Singled-off-by: Levente Polyak <anthraxx@archlinux.org>
2024-01-22 19:45:16 +01:00
Levente Polyak e3edf25554
feat(version): use exit code for check to indicate out-of-date versions
It can be handy to have an exit code that allows better status
indication or chaining.

On exit, return one of the following codes:

- 0: Normal exit condition, all checked versions are up-to-date
- 1: Unknown cause of failure
- 2: Normal exit condition, but there are out-of-date versions
- 3: Failed to run some version checks

Component: pkgctl version check
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2024-01-22 19:45:10 +01:00
Levente Polyak b258bb3b7c
feat(version): add verbose option to display up-to-date versions
Sometimes it can be desired to get a results for each entry even if the
current version is up-to-date. Add a --verbose option to print this
optional detail.

Component: pkgctl version check
Component: pkgctl version upgrade
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2024-01-22 19:45:04 +01:00
Levente Polyak 08ece1640b
feat(version): add spinner while checking upstream versions
It may take quite some time to check a lot of upstream versions.
However, we still want to nicely group the results together. To avoid
just showing a static status message it makes much more sense to show a
dynamic spinner with a summary of the progress.

Component: pkgctl version check
Component: pkgctl version upgrade
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2024-01-22 19:44:57 +01:00
Levente Polyak fedfc80ca1
feat(term): add terminal utils to handle a dynamic spinner
The spinner uses a status file that can be used to dynamically update
the message. The spinner itself buffers the output in a frame buffer
variable before flushing a frame in one go.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2024-01-22 19:44:51 +01:00
Levente Polyak 66e83c950c
feat(version): pretty print and group together version check results
Collect all check results in arrays and pretty print the results after
grouping them together based on out-of-date, up-to-date and failures.
Print a summary that shows a brief statistic about the results when
processing multiple check items.

Component: pkgctl version check
Component: pkgctl version upgrade
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2024-01-21 23:28:29 +01:00
Levente Polyak 96f39525bf
feat(version): support nvchecker keyfile from user config home
This adds support for global keyfile from the user config home
XDG_CONFIG_HOME which allows to set tokens for GitHub and GitLab for
certain nvchecker configuration.

When ~/.config/nvchecker/keyfile.toml exists, it will automatically be
appended as keyfile of the local .nvchecker.toml file.

Component: pkgctl version check
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2024-01-21 23:28:29 +01:00
Levente Polyak 03d5c928cf
fix(version): add error handling to version check subcommand
Add defensive programming to the execution chain of the version check
subcommand for graceful error handling of subprocesses as well as errors
returned from nvchecker itself indicated in the returned JSON.

Furthermore this fixes a bug when processing multiple packages where the
pkgbase variable is stuck for subsequent packages that do not declare a
pkgbase variable itself.

Component: pkgctl version check
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2024-01-21 23:28:29 +01:00
Christian Heusel 6054c869e1
feat(upgrade): introduce the version upgrade subcommand
This subcommand applies the detected upstream version upgrades to a
PKGBUILD.

Component: pkgctl version upgrade
Co-authored-by: Levente Polyak <anthraxx@archlinux.org>
Signed-off-by: Christian Heusel <christian@heusel.eu>
2024-01-21 23:28:29 +01:00
Christian Heusel 313c5b4d32
chore(check): factor out function to get upstream version
Component: pkgctl version check
Signed-off-by: Christian Heusel <christian@heusel.eu>
2024-01-21 23:28:28 +01:00
Christian Heusel db8c157eea
chore(build): factor out functions to modify PKGBUILDs
Component: pkgctl build
Signed-off-by: Christian Heusel <christian@heusel.eu>
2024-01-21 23:28:28 +01:00
Levente Polyak 343a2b5d4c
chore(search): correct typo in optional dependency bat 2024-01-18 19:38:42 +01:00
Levente Polyak 7a8f0eb47e
fix(doc): correct typo in optional dependency bat
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2024-01-18 03:02:18 +01:00
Jelle van der Waa e6f7aa395f
feat(version): introduce version check subcommand
The version subcommand handles pkgver related commands, the first
subcommand being `check`. Check runs nvchecker if a `.nvchecker.toml`
file exists and compares the current pkgver with the latest release.

Introduces nvchecker as optional dependency which has to be installed in
order to use this particular subcommand.

BREAKING CHANGE: formerly pkgctl version would output the version of the
pkgctl tool, now it is used as a version related subcommand.

Fixes #140

Component: pkgctl version
Component: pkgctl version check
Co-authored-by: Christian Heusel <christian@heusel.eu>
2024-01-10 19:44:15 +01:00
Levente Polyak e413b65df3
fix(build): re-source the PKGBUILD to update changed values
During certain operations like --edit, --pkgver etc the PKGBUILD
may change since last sourced. If a modified checksum of the PKGBUILD
is detected, re-source it before processing.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2024-01-10 00:14:20 +01:00
Levente Polyak ef04960b98
feat(build): update srcinfo file after build
The srcinfo file is essentially a representation of the current build
recipes, hence generate an up to date version by adding it as secondary
build artifact to the build process.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2024-01-10 00:14:14 +01:00
Levente Polyak d210079037
feat(util): add library function to generate source packages 2024-01-10 00:14:08 +01:00
Levente Polyak b264c7f1c7
feat(util): parallelize srcinfo generation
Heavily improve the runtime of huge split packages, by creating an own
parallelized high level implementation of the makepkg low level building
blocks for srcinfo generation.

This reduces the runtine to generate the srcinfo file for thunderbird
from 24 seconds down to 1 second.
2024-01-10 00:14:01 +01:00
Christian Heusel 2b8033b911
feat(aur): add subcommand to drop a package from the repos to the AUR
Add an aur command to interact with the Arch User Repository including
the drop-from-repo subommand which allows to drop packages from the
official repository to the Arch User Repository in one go.

Related to #143

Component: pkgctl aur drop-from-repo
Co-authored-by: Levente Polyak <anthraxx@archlinux.org>
Signed-off-by: Christian Heusel <christian@heusel.eu>
2024-01-09 23:47:45 +01:00
Levente Polyak 8f45c65830
fix(completion): support subcommands that have multiple dashes
Dashes are not supported in function names and underscores were not
automatically translated. Replace all dashes of the current completion
token, if it is an arg which allows subcommands to use underscores
instead of dashes to declare their completion handlers.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2024-01-07 19:32:30 +01:00
Levente Polyak d0dc0e1a32
feat(search): add optional plain output formatting
This allows to run the search command without bats, which is not used in
the default pretty output format.

Component: pkgctl search
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2024-01-07 02:38:42 +01:00
Levente Polyak 0e538cf498
fix(util): open lock file in append mode to avoid overwriting files
Previously if we opened a lock on an existing file with useful content
we overwrote it with an empty file. This is obviously not desired, hence
open the file handle in append mode preserving its content.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2024-01-07 02:38:34 +01:00
Jelle van der Waa 4673ad6c89
feat(search): add subcommand to search across the packaging group
Search for an expression across the GitLab packaging group. To use a
filter, include it in your query. You may use wildcards (*) to use glob
matching. Available filters for the blobs scope: path, extension.

Every usage of the search command must be authenticated. Consult the
'pkgctl auth' command to authenticate with GitLab or view the
authentication status.

This command uses bats for pretty printing the results including line
numbers and syntax highlighting.

Component: pkgctl search
Co-authored-by: Christian Heusel <christian@heusel.eu>
Co-authored-by: Levente Polyak <anthraxx@archlinux.org>
2024-01-07 02:35:18 +01:00
Levente Polyak 78dd150996
chore(offload-build): deprecate in favor of pkgctl build --offload
Emit a warning when offload-build is invoked to warn about future
removal.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2024-01-05 01:07:39 +01:00
Levente Polyak 4425913e4f
chore(build): use more intuitive update-checksums option for humans
The philosophy of our CLI is to provide options that better match human
expectations in an intuitive way rather than mimic wording of previous
tools with abbreviation.

Component: pkgctl build
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2024-01-05 01:01:52 +01:00
Levente Polyak 2a1e8aebaf
chore(make): suppress output when copying git hooks directory 2023-12-19 20:27:01 +01:00
Levente Polyak 3933f20001
fix(cliff): trim fix separator before checking merge request id
The fix separator contains a whitespace, which made the check never
match. We now trim the separator before checking, making it resilient
against any kind of spaces.

Fixes b7984c6073
2023-12-19 20:06:26 +01:00
Levente Polyak 0f14d630bc
feat(cliff): add label for breaking changes to changelog 2023-12-19 20:06:26 +01:00
Levente Polyak d00a2b9890
feat(configure): ship default ignore via exclude
BREAKING CHANGE: Increments the repo spec version which requires to
reconfigure all existing packaging repo clones.

Fixes #129

Component: pkgctl repo configure
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-12-19 20:06:26 +01:00
Christian Heusel c2d73d73ae
fix(commitpkg): prefer core.editor over $EDITOR and $VISUAL
This is done to closer mimick the behaviour of git here, as it prefers
core.editor setting over the other editor options as per git-var(1):

> The order of preference is the $GIT_EDITOR environment variable, then
> core.editor configuration, then $VISUAL, then $EDITOR, and then the
> default chosen at compile time, which is usually vi.

Fixes #192
Signed-off-by: Christian Heusel <christian@heusel.eu>
2023-12-03 22:02:13 +01:00
Levente Polyak f2cafa3cb0
feat(clone): speedup maintainer and universe clone query
There is a single endpoint now to list all pkgbases and their current
maintainers. Use this endpoint for speeding up the clone of all packages
of a maintainer by only issuing a single API call.

Component: pkgctl repo clone
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-12-03 21:51:59 +01:00
Jan Alexander Steffens (heftig) c356995dc1
feat(config): Add -z pack-relative-relocs to LDFLAGS
This moves relative relocations from the `.rela.dyn` section into a new
`.relr.dyn` section with a significantly more compact encoding,
supported since glibc 2.36, GNU Binutils 2.38 and LLVM 15.

This can reduce the size of libraries a lot, e.g. the installed size of
`libphonenumber` dropped from about 17 MB to 7 MB.

For more info, see
https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/23.

Signed-off-by: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
2023-12-03 20:11:24 +01:00
Jan Alexander Steffens (heftig) 1535a69af6
chore(config): Use one -Wl in LDFLAGS per logical flag
This will separate logical flags with whitespace and make it easier to
split the flags across multiple lines.

Signed-off-by: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
2023-12-03 20:11:21 +01:00
Christian Heusel 9a356eae82
feat(web): implement option to print the URL instead of opening it
In certain situations, users may encounter limitations when unable to
utilize xdg-open (e.g., when connected to an Arch machine via SSH).
Consequently, this commit introduces the option to simply print the
repository link to copy or click on it.

Signed-off-by: Christian Heusel <christian@heusel.eu>
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-11-26 18:23:17 +01:00
kpcyrd ae14c246b8
feat(makerepropkg): Add option to skip running check for speedup
Add -n to allow running makepkg with --nocheck. This is useful to reduce
the time required to reproduce a package, as they should not depend on
running the check function for being reproducible.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-11-26 16:48:15 +01:00
Levente Polyak cc369e86d2
feat(makechrootpkg): add option to interactively inspect the chroot
Implement the -x option for makechrootpkg which allows to get an
interactive shell in the chroot after building the package. Useful to
ease the debugging of a package build.

Depending on the argument, the interactive shell is either always
spawned or only when an error occurred during build.

This option is also forwarded from `pkgctl build` via the `--inspect`
flag.

Component: pkgctl build
Component: makechrootpkg
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-11-26 01:28:20 +01:00
David Runge c9de6a18b9
fix(make): Specify GITLAB_HOST for glab to avoid default host confusion
Specify the upstream instance hostname for glab using the `GITLAB_HOST`
environment variable.
Without it `glab` will use whatever is set as host using the `host`
key in its configuration and silently break the links of all uploaded
assets.

Signed-off-by: David Runge <dvzrv@archlinux.org>
2023-11-24 22:27:14 +01:00
Christian Heusel 9f8ca5df1a
chore(release): nicely format multiple "Component:" trailers
Signed-off-by: Christian Heusel <christian@heusel.eu>
2023-11-24 02:32:02 +01:00
Christian Heusel 7825f9fb02
chore(docs): correct the manpage for pkgctl db update
Turns out the manpages of pkgctl db update and pkgctl db move were just switched without having the page title adjusted.
Fixing the initial error therefore turned out to create the same problem for the manpage of pkgctl db update, which this commit re-fixes.

Fixes: 5e3ab4b321 ("chore(docs): correct the manpage for pkgctl db move")
Fixes: f834fc4700 ("db: command for Pacman database modification like update, move etc")
Fixes #195
Component: pkgctl db update
Signed-off-by: Christian Heusel <christian@heusel.eu>
2023-11-24 02:17:10 +01:00
Christian Heusel b7984c6073
chore(release): allow fixes tags without cluttering the changelog
Signed-off-by: Christian Heusel <christian@heusel.eu>
2023-11-20 15:10:48 +01:00
Christian Heusel 5e3ab4b321
chore(docs): correct the manpage for pkgctl db move
So far the manpage for pkgctl db move seemed to be a copy of the pkgctl db update manpage
which caused an error upon install as the move page was not created.
Instead compiling this manpage overwrote the one for pkgctl db update
which this commit fixes.

Fixes: f834fc4700 ("db: command for Pacman database modification like update, move etc")
Fixes #195
Component: pkgctl db move
Signed-off-by: Christian Heusel <christian@heusel.eu>
2023-11-20 15:10:41 +01:00
Christian Heusel e7b82f36ef
feat(build): add --updpkgsums option
This is useful so people who update patches etc. can update their checksums on building.
The functionality itself was already implemented for --pkgver, but was not available separately.

Fixes #168
Component: pkgctl build
Signed-off-by: Christian Heusel <christian@heusel.eu>
2023-11-20 15:00:21 +01:00
Orhun Parmaksız 4d7364ed1b
fix(cliff): update the tag_pattern to use regex 2023-10-31 16:55:14 +01:00
Levente Polyak e0ab20d05c
fix(build): use correct variable to reference available architectures
The referenced places were missing in a previous refactoring commit and
hence broke the build command in multiple ways.

Fixes 0669315821
2023-10-17 23:23:36 +02:00
Antonio Rojas 5cbe9ad612
fix(build): allow using --install and --offload simultaneously
Don't take the full (local) path of the package to install when using
--offload.

Fixes #194
Component: pkgctl build
2023-10-14 00:00:52 +02:00
Christian Heusel 6f106e7cd6
chore: refactor loop variable name
Component: pkgctl build
Signed-off-by: Christian Heusel <christian@heusel.eu>
2023-10-02 11:37:06 +02:00
Christian Heusel 0669315821
chore: refactor variable names in valid-{tags,repos}.sh
Even though the variables in these files are globablly used they have a weirdly local sounding name.
This commit fixes this by refactoring all usages throughout our codebase.

Signed-off-by: Christian Heusel <christian@heusel.eu>
2023-10-02 11:29:03 +02:00
Levente Polyak a6d43aca01
chore(release): streamline release make target with git-cliff and glab
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-09-27 01:12:53 +02:00
Levente Polyak 02bc8bfbc0
chore(release): version v1.0.4 2023-09-27 00:38:17 +02:00
Levente Polyak f632659563
fix(clone): ssh connection may require user input (key unlocking etc)
Anything that requires user input (such as a key unlock or hostkey
verify) will block the terminal and wait for input which will never
come.

When cloning or configuring a repo via ssh we therefore initially
connect to gitlab to warm the connection.

Afterwards users are expected to either have setup a ssh ControlMaster
or use something like a ssh agent.

Fixes #148

Component: pkgctl repo clone/configure

Co-Authored-by: Christian Heusel <christian@heusel.eu>
Signed-off-by: Christian Heusel <christian@heusel.eu>
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-09-26 22:44:58 +02:00