Compare commits

...

11 Commits

Author SHA1 Message Date
473a5ce6aa artixpkg: add basic token check 2023-06-26 18:57:56 +02:00
f511f7c0e9 merge branch 'admin' 2023-06-26 16:15:00 +02:00
bbca425bf8 artixpkg: fix migration of non compliant pkgbase names 2023-06-26 15:58:36 +02:00
10fe40eccb artixpkg: make maintainer flags consistent 2023-06-26 15:33:16 +02:00
6ce9a5b751 artixpkg: fix repo args (#79)
Co-authored-by: Artoo <artoo@artixlinux.org>
Reviewed-on: artix/artools#79
2023-06-26 15:10:30 +02:00
108dcf620a migrate-ci (#78)
Co-authored-by: Artoo <artoo@artixlinux.org>
Reviewed-on: artix/artools#78
2023-06-25 17:16:55 +02:00
7fc2909a29 Merge pull request 'Add other kernels to patch_pkgbase()' (#77) from Qontinuum/artools:master into master
Reviewed-on: artix/artools#77
2023-06-25 17:16:22 +02:00
Qontinuum
f248c20401 Add other kernels to patch_pkgbase() 2023-06-24 14:56:24 +02:00
1516ef432e artixpkg repo: show git status if changes 2023-06-23 00:13:57 +02:00
cc3bd8049c artixpkg (#76)
Co-authored-by: Artoo <artoo@artixlinux.org>
Reviewed-on: artix/artools#76
2023-06-22 23:03:49 +02:00
13d6f8ba37 artools/0.31rc (#75)
Co-authored-by: Artoo <artoo@artixlinux.org>
Reviewed-on: artix/artools#75
2023-06-22 20:19:42 +02:00
19 changed files with 421 additions and 158 deletions

55
src/lib/pkg/admin.sh Normal file
View File

@@ -0,0 +1,55 @@
#!/hint/bash
#
# SPDX-License-Identifier: GPL-3.0-or-later
[[ -z ${ARTOOLS_INCLUDE_ADMIN_SH:-} ]] || return 0
ARTOOLS_INCLUDE_ADMIN_SH=1
set -e
artixpkg_admin_usage() {
local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
cat <<- _EOF_
Usage: ${COMMAND} [COMMAND] [OPTIONS]
COMMANDS
transfer Clone a package repository
OPTIONS
-h, --help Show this help text
EXAMPLES
$ ${COMMAND} transfer libfoo libbar
_EOF_
}
artixpkg_admin() {
if (( $# < 1 )); then
artixpkg_admin_usage
exit 0
fi
# option checking
while (( $# )); do
case $1 in
-h|--help)
artixpkg_admin_usage
exit 0
;;
transfer)
_ARTOOLS_COMMAND+=" $1"
shift
# shellcheck source=src/lib/pkg/admin/transfer.sh
source "${LIBDIR}"/pkg/admin/transfer.sh
artixpkg_admin_transfer "$@"
exit 0
;;
-*)
die "invalid argument: %s" "$1"
;;
*)
die "invalid command: %s" "$1"
;;
esac
done
}

View File

@@ -0,0 +1,66 @@
#!/bin/bash
#
# SPDX-License-Identifier: GPL-3.0-or-later
[[ -z ${ARTOOLS_INCLUDE_ADMIN_TRANSFER_SH:-} ]] || return 0
ARTOOLS_INCLUDE_ADMIN_TRANSFER_SH=1
set -e
artixpkg_admin_transfer_usage() {
local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
cat <<- _EOF_
Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
OPTIONS
-h, --help Show this help text
EXAMPLES
$ ${COMMAND} libfoo
$ ${COMMAND} libfoo libbar
_EOF_
}
artixpkg_admin_transfer() {
if (( $# < 1 )); then
artixpkg_admin_transfer_usage
exit 0
fi
# options
local pkgbases=()
local pkgbase
local waste_org="landfill"
local command=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
while (( $# )); do
case $1 in
-h|--help)
artixpkg_admin_transfer_usage
exit 0
;;
--)
shift
break
;;
-*)
die "invalid argument: %s" "$1"
;;
*)
break
;;
esac
done
pkgbases+=("$@")
if [[ -n ${GIT_TOKEN} ]]; then
for pkgbase in "${pkgbases[@]}"; do
transfer_repo "${pkgbase}" "${waste_org}"
done
fi
}

View File

@@ -4,24 +4,15 @@
#{{{ gitea api
get_compliant() {
get_compliant_name() {
local name=$1
printf "%s" "${name}" \
printf "%s\n" "${name}" \
| sed -E 's/([a-zA-Z0-9]+)\+([a-zA-Z]+)/\1-\2/g' \
| sed -E 's/\+/plus/g' \
| sed -E 's/[^a-zA-Z0-9_\-\.]/-/g' \
| sed -E 's/[_\-]{2,}/-/g'
}
get_compliant_name(){
local gitname="$1"
case "$gitname" in
*+) gitname=${gitname//+/plus} ;;
*+*) gitname=${gitname//+/-} ;;
esac
printf "%s\n" "$gitname"
}
api_put() {
curl -s -X PUT "$@"
}
@@ -72,7 +63,7 @@ create_repo() {
local pkgbase="$1"
local url json
url="${GIT_HTTPS}/api/v1/org/${GIT_ORG}/repos"
json="{ \"auto_init\": true, \"name\": \"$pkgbase\", \"gitignores\": \"ArchLinuxPackages\", \"readme\": \"Default\" }"
json="{ \"auto_init\": true, \"name\": \"$pkgbase\", \"gitignores\": \"ArtixLinuxPackages\", \"readme\": \"Default\" }"
stat_busy "Create package repo [$pkgbase] in org (${GIT_ORG})"
api_post "$url" \
@@ -107,23 +98,6 @@ list_all_repos() {
-H "accept: application/json"
}
replace_topic() {
local url
local repo="$1"
local maintainer="$2"
url="${GIT_HTTPS}/api/v1/repos/${GIT_ORG}/$repo/topics"
api_put "$url" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: token ${GIT_TOKEN}" \
-d "{
\"topics\": [
\"${maintainer}\"
]
}"
}
list_topics() {
local url
local pkgbase="$1"

View File

@@ -19,6 +19,8 @@ readonly ARTIX_DB=(
readonly REPO_DB='.artixlinux/pkgbase.yaml'
readonly REPO_CI='.artixlinux/Jenkinsfile'
yaml_array() {
local array
@@ -135,13 +137,14 @@ update_yaml_base() {
local name
local pkgnames
local arches
local pkgbase
name="${pkgbase:-${pkgname}}"
pkgbase="${pkgbase:-${pkgname}}"
version="$(get_full_version)"
pkgnames=$(yaml_array "${pkgname[@]}")
arches=$(yaml_array "${arch[@]}")
name="${name}" version="${version}" pkgnames="${pkgnames}" arches="${arches}" \
name="${pkgbase}" version="${version}" pkgnames="${pkgnames}" arches="${arches}" \
yq -P 'with(
.pkgbase;
.name = env(name) |
@@ -277,3 +280,11 @@ show_db() {
yq -rP '. | .repos |= with_entries(select(.value.version))' "${REPO_DB}"
return 0
}
show_srcinfo_base() {
pkg2yaml . | yq '.pkgbase'
}
show_srcinfo_pkgs() {
pkg2yaml . | yq '.pkgnames'
}

View File

@@ -1,35 +0,0 @@
#!/hint/bash
#
# SPDX-License-Identifier: GPL-3.0-or-later
local_head(){
git log --pretty=%H ...refs/heads/master^ | head -n 1
}
remote_head(){
git ls-remote origin -h refs/heads/master | cut -f1
}
has_changeset(){
msg "Checking remote for changes"
if [[ "$(local_head)" != "$(remote_head)" ]]; then
msg2 "remote changes: yes"
return 0
fi
msg2 "remote changes: no"
return 1
}
commit_ci(){
local ci=Jenkinsfile
printf "@Library('artix-ci') import org.artixlinux.RepoPackage\n" > "${ci}"
{
printf '\n'
printf 'PackagePipeline(new RepoPackage(this))\n'
} >> "${ci}"
git add "${ci}"
git commit -m "initial ci commit"
}

View File

@@ -19,9 +19,17 @@ declare -rA REPO_MAP=(
[community]=galaxy
)
update_gitignore() {
{
printf '*.service\n'
printf '*.timer\n'
printf '*.socket\n'
} >> .gitignore
}
migrate_to_yaml() {
if [[ -f trunk/PKGBUILD ]]; then
cp -r trunk/* ./
stat_busy "Migrating ${pkgbase} to new layout"
create_repo_db
stat_done
@@ -55,13 +63,39 @@ migrate_to_yaml() {
.version = env(version) |
.packages = env(pkgs) )' \
-i "${REPO_DB}"
if [[ -n ${GIT_TOKEN} ]]; then
local topic gitname
gitname=$(get_compliant_name "${pkgbase}")
topic="${REPO_MAP[$r]}"
if ! add_topic "${gitname}" "${topic}"; then
warning "failed to add topic: ${topic}"
fi
topic="${r}"
if ! remove_topic "${gitname}" "${topic}"; then
warning "failed to remove topic: ${topic}"
fi
fi
done
git rm -r x86_64
fi
cp -r trunk/* ./
git rm -r trunk
if [[ -f .artixlinux/agent.yaml ]]; then
git rm .artixlinux/agent.yaml
fi
if [[ -f .gitignore ]]; then
update_gitignore
fi
if [[ -f Jenkinsfile ]]; then
git mv Jenkinsfile "${REPO_CI}"
fi
git add .
git commit -m "migrate to new layout"
fi

View File

@@ -17,12 +17,12 @@ artixpkg_git_clone_usage() {
Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
OPTIONS
-m, --maintainer=NAME Clone all packages of the named maintainer
--protocol https Clone the repository over https
-t, --topic=NAME Clone all packages of the named topic
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
--universe Clone all existing packages, useful for cache warming
-h, --help Show this help text
-m, --maintainer=NAME Clone all packages of the named maintainer
--protocol https Clone the repository over https
-t, --topic=NAME Clone all packages of the named topic
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
--universe Clone all existing packages, useful for cache warming
-h, --help Show this help text
EXAMPLES
$ ${COMMAND} libfoo linux libbar

View File

@@ -7,25 +7,34 @@ ARTOOLS_INCLUDE_GIT_CONFIG_SH=1
# shellcheck source=src/lib/pkg/db/db.sh
source "${LIBDIR}"/pkg/db/db.sh
# shellcheck source=src/lib/pkg/db/git.sh
source "${LIBDIR}"/pkg/db/git.sh
# shellcheck source=src/lib/pkg/db/migrate.sh
source "${LIBDIR}"/pkg/db/migrate.sh
set -e
commit_ci(){
printf "@Library('artix-ci') import org.artixlinux.RepoPackage\n" > "${REPO_CI}"
{
printf '\n'
printf 'PackagePipeline(new RepoPackage(this))\n'
} >> "${REPO_CI}"
git add "${REPO_CI}"
git commit -m "initial ci commit"
}
artixpkg_git_config_usage() {
local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
cat <<- _EOF_
Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
OPTIONS
-t, --topic Set the maintainer topic via gitea api
-u, --upstream Add upstream arch remote
--protocol https Configure remote url to use https
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
-h, --help Show this help text
-m, --maintainer Set the maintainer topic via gitea api
-u, --upstream Add upstream arch remote
--protocol https Configure remote url to use https
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
-h, --help Show this help text
EXAMPLES
$ ${COMMAND} -t libfoo
@@ -106,7 +115,7 @@ artixpkg_git_config() {
artixpkg_git_config_usage
exit 0
;;
-t|--topic)
-m|--maintainer)
SET_TOPIC=1
shift
;;
@@ -201,7 +210,7 @@ artixpkg_git_config() {
for path in "${paths[@]}"; do
if ! realpath=$(realpath -e "${path}"); then
error "No such directory: ${path}"
# continue
continue
fi
pkgbase=$(basename "${realpath}")
@@ -210,7 +219,7 @@ artixpkg_git_config() {
if [[ ! -d "${path}/.git" ]]; then
error "Not a Git repository: ${path}"
# continue
continue
fi
( cd "${path}" || return
git config pull.rebase true
@@ -255,14 +264,19 @@ artixpkg_git_config() {
migrate_to_yaml
if [[ ! -f Jenkinsfile ]]; then
if [[ -f Jenkinsfile ]]; then
git mv Jenkinsfile "${REPO_CI}"
git commit -m "move jenkinsfile"
fi
if [[ ! -f ${REPO_CI} ]]; then
msg "Adding ci support ..."
commit_ci
fi
if [[ ! -f ${REPO_DB} ]]; then
msg "Adding repo db ..."
msg "Creating repo db ..."
create_repo_db
if [[ -f PKGBUILD ]]; then

View File

@@ -19,9 +19,9 @@ artixpkg_git_create_usage() {
Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
OPTIONS
-c, --clone Clone the Git repository after creation
-t, --team=NAME Assign team name [default: world]
-h, --help Show this help text
-c, --clone Clone the Git repository after creation
-t, --team=NAME Assign team name [default: world]
-h, --help Show this help text
EXAMPLES
$ ${COMMAND} libfoo
@@ -92,13 +92,15 @@ artixpkg_git_create() {
for pkgbase in "${pkgbases[@]}"; do
local gitname
gitname=$(get_compliant_name "${pkgbase}")
if ! create_repo "${gitname}" >/dev/null; then
die "failed to create project: ${pkgbase}"
if [[ -n ${GIT_TOKEN} ]]; then
if ! create_repo "${gitname}" >/dev/null; then
die "failed to create project: ${pkgbase}"
fi
if ! add_team_to_repo "${gitname}" "${TEAM}" >/dev/null; then
warning "failed to assign team: ${TEAM}"
fi
msg_success "Successfully created ${pkgbase}"
fi
if ! add_team_to_repo "${gitname}" "${TEAM}" >/dev/null; then
warning "failed to assign team: ${TEAM}"
fi
msg_success "Successfully created ${pkgbase}"
if (( clone )); then
artixpkg_git_clone "${pkgbase}"
elif (( config )); then

View File

@@ -17,12 +17,11 @@ artixpkg_git_pull_usage() {
Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
OPTIONS
-m, --maintainer=NAME Pull all packages of the named maintainer
-t, --topic=NAME Pull all packages of the named topic
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
--universe Pull all existing packages
--fetch Fetch only
-h, --help Show this help text
-m, --maintainer=NAME Pull all packages of the named maintainer
-t, --topic=NAME Pull all packages of the named topic
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
--universe Pull all existing packages
-h, --help Show this help text
EXAMPLES
$ ${COMMAND} libfoo linux libbar
@@ -42,7 +41,6 @@ artixpkg_git_pull() {
# options
local PULL_ALL=0
local FETCH=0
local MAINTAINER=
local TOPIC=
local CONFIGURE_OPTIONS=()
@@ -79,10 +77,6 @@ artixpkg_git_pull() {
PULL_ALL=1
shift
;;
--fetch)
FETCH=1
shift
;;
-j|--jobs)
(( $# <= 1 )) && die "missing argument for %s" "$1"
jobs=$2
@@ -140,17 +134,12 @@ artixpkg_git_pull() {
for pkgbase in "${pkgbases[@]}"; do
if [[ -d ${pkgbase} ]]; then
( cd ${pkgbase} || return
if (( FETCH )); then
msg "Fetching ${pkgbase} ..."
if ! git fetch origin; then
die 'failed to fetch %s' "${pkgbase}"
fi
else
msg "Pulling ${pkgbase} ..."
if ! git pull origin master; then
die 'failed to pull %s' "${pkgbase}"
fi
msg "Pulling ${pkgbase} ..."
if ! git pull origin master; then
die 'failed to pull %s' "${pkgbase}"
fi
)
else
warning "Skip pulling ${pkgbase}: Directory does not exist"

View File

@@ -17,11 +17,11 @@ artixpkg_repo_usage() {
Usage: ${COMMAND} [COMMAND] [OPTIONS]
COMMANDS
add Add built pkgbase to repo
move Move built pkgbase between repos
remove Remove built pkgbase from repo
import Import latest tag from arch upstream
show Show the pkgbase's repo db
add Add built pkgbase to repo
move Move built pkgbase between repos
remove Remove built pkgbase from repo
import Import latest tag from arch upstream
show Show the pkgbase's repo db
OPTIONS
-h, --help Show this help text

View File

@@ -5,9 +5,6 @@
[[ -z ${ARTOOLS_INCLUDE_REPO_ADD_SH:-} ]] || return 0
ARTOOLS_INCLUDE_REPO_ADD_SH=1
# shellcheck source=src/lib/pkg/db/git.sh
source "${LIBDIR}"/pkg/db/git.sh
set -e
@@ -17,10 +14,10 @@ artixpkg_repo_add_usage() {
Usage: ${COMMAND} [OPTIONS] [DEST_REPO] [PKGBASE]...
OPTIONS
-p, --push Push pkgbase
-r, --rebuild Triggers a rebuild
-n, --nocheck Disable the check function
-h, --help Show this help text
-p, --push Push pkgbase
-r, --rebuild Triggers a rebuild
-n, --nocheck Disable the check function
-h, --help Show this help text
EXAMPLES
$ ${COMMAND} world-gremlins libfoo
@@ -72,6 +69,7 @@ artixpkg_repo_add() {
done
DEST="$1"
shift
pkgbases+=("$@")
if ! in_array "${DEST}" "${ARTIX_DB[@]}"; then
@@ -88,10 +86,6 @@ artixpkg_repo_add() {
fi
( cd "${pkgbase}" || return
# if has_changeset; then
# die "Remote changes detected! Please pull (%s)" "${pkgbase}"
# fi
if [[ ! -f PKGBUILD ]]; then
die "No PKGBUILD found in (%s)" "${pkgbase}"
fi

View File

@@ -22,7 +22,7 @@ patch_pkgbase(){
-e '/nscd.service/d' \
-i "${pkgbuild}"
;;
linux|linux-lts)
linux|linux-lts|linux-zen|linux-hardened|linux-rt|linux-rt-lts)
msg "Patching %s" "${name}"
sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i "${pkgbuild}"
sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \
@@ -65,7 +65,7 @@ artixpkg_repo_import() {
local TAG
local rsync_args=()
rsync_args+=(-aWxvci --progress --delete-before --no-R --no-implied-dirs)
rsync_args+=(--exclude '.git' --exclude 'Jenkinsfile' --exclude '.gitignore' --exclude 'README.md')
rsync_args+=(--exclude '.git' --exclude '.gitignore' --exclude 'README.md')
while (( $# )); do
case $1 in
@@ -98,10 +98,6 @@ artixpkg_repo_import() {
fi
( cd "${pkgbase}" || return
# if has_changeset; then
# die "Remote changes detected! Please pull (%s)" "${pkgbase}"
# fi
stat_busy "Checking for upstream url"
if ! git config --local --get remote.upstream.url &>/dev/null; then
git remote add upstream "${GIT_UPSTREAM_URL}/${pkgbase}".git

View File

@@ -5,9 +5,6 @@
[[ -z ${ARTOOLS_INCLUDE_REPO_MOVE_SH:-} ]] || return 0
ARTOOLS_INCLUDE_REPO_MOVE_SH=1
# shellcheck source=src/lib/pkg/db/git.sh
source "${LIBDIR}"/pkg/db/git.sh
set -e
@@ -83,10 +80,6 @@ artixpkg_repo_move() {
fi
( cd "${pkgbase}" || return
# if has_changeset; then
# die "Remote changes detected! Please pull (%s)" "${pkgbase}"
# fi
if [[ ! -f PKGBUILD ]]; then
die "No PKGBUILD found in (%s)" "${pkgbase}"
fi

View File

@@ -5,9 +5,6 @@
[[ -z ${ARTOOLS_INCLUDE_REPO_REMOVE_SH:-} ]] || return 0
ARTOOLS_INCLUDE_REPO_REMOVE_SH=1
# shellcheck source=src/lib/pkg/db/git.sh
source "${LIBDIR}"/pkg/db/git.sh
set -e
@@ -59,6 +56,7 @@ artixpkg_repo_remove() {
done
DEST="$1"
shift
pkgbases=("$@")
if ! in_array "${DEST}" "${ARTIX_DB[@]}"; then
@@ -75,10 +73,6 @@ artixpkg_repo_remove() {
fi
( cd "${pkgbase}" || return
# if has_changeset; then
# die "Remote changes detected! Please pull (%s)" "${pkgbase}"
# fi
if [[ ! -f PKGBUILD ]]; then
die "No PKGBUILD found in (%s)" "${pkgbase}"
fi

115
src/lib/pkg/repo/show.sh Normal file
View File

@@ -0,0 +1,115 @@
#!/hint/bash
#
# SPDX-License-Identifier: GPL-3.0-or-later
[[ -z ${ARTOOLS_INCLUDE_REPO_SHOW_SH:-} ]] || return 0
ARTOOLS_INCLUDE_REPO_SHOW_SH=1
set -e
has_changeset(){
git fetch origin &>/dev/null
if [[ $(git rev-parse HEAD) != $(git rev-parse @{u}) ]]; then
msg2 "changes: yes"
git status -sb
return 0
fi
msg2 "changes: no"
return 1
}
artixpkg_repo_show_usage() {
local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
cat <<- _EOF_
Usage: ${COMMAND} [OPTIONS] [DEST_REPO] [PKGBASE]...
OPTIONS
-b, --base Show srcinfo base
-p, --pkgs Show srcinfo pkgs
-h, --help Show this help text
EXAMPLES
$ ${COMMAND} libfoo
$ ${COMMAND} -b libfoo
$ ${COMMAND} -p libfoo
_EOF_
}
artixpkg_repo_show() {
if (( $# < 1 )); then
artixpkg_repo_show_usage
exit 0
fi
# options
local pkgbases=()
local pkgbase
local SRC_BASE=0
local SRC_PKGS=0
while (( $# )); do
case $1 in
-h|--help)
artixpkg_repo_show_usage
exit 0
;;
-b|--base)
SRC_BASE=1
shift
;;
-p|--pkgs)
SRC_PKGS=1
shift
;;
-*)
die "invalid argument: %s" "$1"
;;
*)
break
;;
esac
done
pkgbases=("$@")
for pkgbase in "${pkgbases[@]}"; do
if [[ -d "${pkgbase}" ]];then
if [[ ! -d "${pkgbase}/.git" ]]; then
error "Not a Git repository: ${pkgbase}"
continue
fi
( cd "${pkgbase}" || return
msg "Checking origin for changes"
if has_changeset; then
warning "Remote changes detected! Please update (%s)" "${pkgbase}"
fi
if [[ ! -f PKGBUILD ]]; then
die "No PKGBUILD found in (%s)" "${pkgbase}"
fi
msg "Querying ${pkgbase} ..."
if ! show_db; then
warning "Could not query ${REPO_DB}"
fi
if (( SRC_BASE )); then
msg "Showing srcinfo base ..."
show_srcinfo_base
fi
if (( SRC_PKGS )); then
msg "Showing srcinfo pkgs ..."
show_srcinfo_pkgs
fi
)
fi
done
}

View File

@@ -0,0 +1,43 @@
#!/hint/bash
#
# SPDX-License-Identifier: GPL-3.0-or-later
[[ -z ${ARTOOLS_INCLUDE_VERSION_SH:-} ]] || return 0
ARTOOLS_INCLUDE_VERSION_SH=1
set -e
artixpkg_version_usage() {
COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
cat <<- _EOF_
Usage: ${COMMAND} [OPTIONS]
Shows the current version information of artixpkg
OPTIONS
-h, --help Show this help text
_EOF_
}
artixpkg_version_print() {
cat <<- _EOF_
artixpkg @buildtoolver@
_EOF_
}
artixpkg_version() {
while (( $# )); do
case $1 in
-h|--help)
artixpkg_version_usage
exit 0
;;
*)
die "invalid argument: %s" "$1"
;;
esac
done
artixpkg_version_print
}

View File

@@ -22,6 +22,7 @@ usage() {
COMMANDS
repo Pacman database modification for packge update, move etc
git Manage Git packaging repositories and their configuration
version Show artixpkg version information
OPTIONS
-h, --help Show this help text
@@ -67,6 +68,22 @@ while (( $# )); do
artixpkg_git "$@"
exit 0
;;
admin)
_ARTOOLS_COMMAND+=" $1"
shift
# shellcheck source=src/lib/pkg/admin.sh
source "${LIBDIR}"/pkg/admin.sh
artixpkg_admin "$@"
exit 0
;;
version|--version|-V)
_ARTOOLS_COMMAND+=" $1"
shift
# shellcheck source=src/lib/pkg/version/version.sh
source "${LIBDIR}"/pkg/version/version.sh
artixpkg_version "$@"
exit 0
;;
*)
die "invalid command: %s" "$1"
;;

View File

@@ -46,7 +46,7 @@ pkgbuild_extract_to_yaml() {
if get_pkgbuild_attribute "$pkgname" "$attrname" "$isarray" 'outvalue'; then
[[ -z $pkgname ]] && srcyaml_write_attr 2 4 2 "$attrname" "${outvalue[@]}"
[[ -n $pkgname ]] && srcyaml_write_attr 6 8 4 "$attrname" "${outvalue[@]}"
[[ -n $pkgname ]] && srcyaml_write_attr 4 6 2 "$attrname" "${outvalue[@]}"
fi
}
@@ -82,12 +82,8 @@ yaml_write_global() {
noextract options backup
source validpgpkeys "${known_hash_algos[@]/%/sums}")
local version
version=$(get_full_version)
Yaml+=$(write_yaml_map 0 "pkgbase")
Yaml+=$(write_yaml_map 2 "name" "${pkgbase:-${pkgname}}")
Yaml+=$(write_yaml_map 2 "version" "${version}")
srcyaml_write_section_details ""
}
@@ -97,9 +93,9 @@ yaml_write_package() {
local multivalued=(arch groups license checkdepends depends optdepends
provides conflicts replaces options backup)
Yaml+=$(write_yaml_map 2 "packages")
Yaml+=$(write_yaml_map 0 "pkgnames")
for pkg in "${pkgname[@]}"; do
Yaml+=$(write_yaml_seq_map 4 "pkgname" "$pkg")
Yaml+=$(write_yaml_seq_map 2 "pkgname" "$pkg")
srcyaml_write_section_details "$pkg"
done
}
@@ -108,6 +104,11 @@ write_srcyaml() {
Yaml=$(write_yaml_header)
yaml_write_global
yaml_write_package
# local version
# version=$(get_full_version)
# Yaml+=$(write_yaml_map 2 "version" "${version}")
printf '%s\n' "${Yaml}"
}