Age | Commit message (Collapse) | Author |
|
This will make it tremendously easier to add arguments, subcommands and
special positional option handling. Instead of the need to code the
nested structure via bash and switch cases, we can simply declare
functions and arrays with the matching names according to the
subcommands or argument labels.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Related to https://gitlab.archlinux.org/archlinux/devtools/-/issues/125
Closes #125
Signed-off-by: Christian Heusel <christian@heusel.eu>
Co-Authored-By: Levente Polyak <anthraxx@archlinux.org>
|
|
This allows to show arguments on root level of commands that themselves
have subcommands available. Complete those when any - is used in the
completion word.
|
|
Normally the default in Arch is that all home directories are private.
However, this may have been changed locally. To make sure we never
expose secrets, lets use a umask of 0077 when writing the config.
Additionally add some temporary fixup code to migrate the file and
directory permissions of already existing paths.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Output a warning when this option is used to remind packagers to rebuild
the packages with checks once the bootstrap cycle has been completed.
|
|
This will help to make sure dependencies are explicitly stated and
reflected in the PKGBUILD.
|
|
This would allow to supply the gitlab tokens via the env var
DEVTOOLS_GITLAB_TOKEN and therefore allow users to choose whatever
program they want to fill this env var.
Closes #113
Signed-off-by: Christian Heusel <christian@heusel.eu>
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Adds a check for the configured Git editor (git config core.editor) in
both commitpkg and build.sh.
Additionally, instead of blindly executing vi when all other options are
exhausted, remove it instead as it is a none standard installed editor
anyway.
Closes #106
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Instead of trying to port this ancient script, which doesn't even seem
to work with community, let's instead remove it. We will be adding a
replacement script in pkgctl soon with a smarter and more convenient UX.
|
|
The list of all maintainers that have worked so far on devtools is
exceeding a sane amount making each manpage convulsed. The authors can
be pulled from GitLab directly without occupying lots of space on every
manpage. We would like to express gratitude to all our maintainers.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Automatic path conversion is limited to GitLab API v4 and will be
removed in the future. It's expected that the caller does the path
conversion on caller side and only passes a valid path to the API within
its limitations.
Hence convert project names to valid paths:
1. replace single '+' between word boundaries with '-'
2. replace any other '+' with literal 'plus'
3. replace any special chars other than '_', '-' and '.' with '-'
4. replace consecutive '_-' chars with a single '-'
5. replace 'tree' with 'unix-tree' due to GitLab reserved keyword
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
The remote protocol is automatically determined from the author email
address by choosing SSH for all official packager identities and
read-only HTTPS otherwise.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
|
|
This ensures the repository we try to commit and release from uses the
latest distro specs for its local git config. The check errors out early
before touching anything and prints a recommendation how to update the
repo.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
|
|
|
|
For local development testing, there is a convenience wrapper for
`pkgctl` that will automatically build the project using make and proxy
all calls to the local build directory.
Either `./test/bin/pkgctl` can be run directly or the `test/bin`
directory can be added to the PATH.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
It's safest to probe for the validity of the remote origin and abort
early otherwise. This also allows to print some hints how to create or
configure new repositories at appropriate times.
Additionally fetch remote changes and check the local branch contains
the remote branch ref, otherwise abort and print a hint how to pull and
update the branch.
This should add all check needed for the average failure case that may
lead to a weird state or creation of a local tag that may not be
pushable.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
There is no reason anymore to use m4 since we got rid of the includes by
using library files. Let's replace the last usage of m4 and completely
red rid of it.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
We have used the datadir like a kitchen sink, lets clean up a bit by
having a better and well structured layout. Put makepkg and pacman
configs in separate directories: makepkg.conf.d and pacman.conf.d.
|
|
This is a smart and more convenient invocation of the classical
commitpkg and archrelease with auto-discovery for target repositories
and a shorthand option to directly call db-update.
|
|
|
|
|
|
|
|
|
|
This helps to have a convenient way to manage and test our personal
GitLab tokens. Those are used for certain API calls like creating new
repositories.
prefill the access token web view as per
https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#prefill-personal-access-token-name-and-scopes
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
We need to use API calls as we can't create repositories in protected
namespaces by simply pushing a none existing repository. For privacy
reasons this is limited to private personal repositories in GitLab.
|
|
|
|
This will greatly help us to structure the functionality and commands in
a more sane way. We will distribute the sources as actual libraries and
reuse code with imports instead of processing everything with m4 and
duplicating a lot of code.
|
|
This is the first step of a simple and highly structured unified
interface to devtools commands in a single wrapper.
The split is based on groups like `repo`, `build` and `diff`
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
This can be quite handy if a packager quickly wants to check the GitLab
page for merge requests or but reports. Quickly calling a cli command
inside the current packaging clone or with the pkgname provided will
open the remote location inside the browser.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
This can be very handy for cache warming on the repo server or
to perform mass operations on all PKGBUILDs.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
It makes a lot of sense to have them in a central place that can be
swapped and also re-used across different execution units. Hence lets
move the repos.archlinux.org host to lib/common.sh
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Query Archweb to retrieve a list of all packages of a maintainer by
their pkgbase. AFterwards loop through all packages and clone them.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Manages Git packaging repositories and helps with their configuration
according to distro specs.
Git author information and the used signing key is set up from
makepkg.conf read from any valid location like /etc or XDG_CONFIG_HOME.
The configure command can be used to synchronize the distro specs and
makepkg.conf settings for previously cloned repositories.
The unprivileged option can be used for cloning packaging repositories
without SSH access using read-only HTTPS.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
|
|
We unified the source repositories to a single location. Having to cross
repo move them between physical locations is not required anymore.
|
|
|
|
This allows us to reuse the code and have the conversion in a single
place instead of cluttering rules across different execution units.
It also fixes the implementations according to the specs of
git-check-ref-format.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
|
|
Signed-off-by: Morten Linderud <foxboron@archlinux.org>
|
|
Signed-off-by: Morten Linderud <foxboron@archlinux.org>
|
|
Signed-off-by: Morten Linderud <foxboron@archlinux.org>
|
|
Signed-off-by: Morten Linderud <foxboron@archlinux.org>
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Signed-off-by: Morten Linderud <foxboron@archlinux.org>
Adjusted-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Do not allow uploads of source=() with only weak cryptographic hashing
algorithms but require at least one strong algorithm.
This doesn't 100% enforce it ofcourse, but it allows for an early
failure instead of failing in `db-update`.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Use the first mirror that is configured for each repo in pacman.conf.
With the default configuration, this means to use the first mirror from /etc/pacman.d/mirrorlist.
If a repo is not configured in pacman.conf, fall back to https://geo.mirror.pkgbuild.com.
|
|
|
|
The `extglob` option changes the behavior of the shell parser, since
extended glob patterns would otherwise be syntax errors. bash-5.2
changed the way a function definition is processed by calling the parser
instead of relying on the ad-hoc code in bash-5.1 and earlier versions.
This means, in bash-5.2 the shell function was parsed without `extglob`
being enabled because the `shopt` command to enable it was part of the
function body.
Add `shopt` options for `extglob` around function definitions to address
this issue and allow bash-5.2 to correctly parse the function.
Co-authored-by: Frédéric Pierret (fepitre) <frederic.pierret@qubes-os.org>
Co-authored-by: Levente Polyak <anthraxx@archlinux.org>
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|