mirror of
https://github.com/Gator96100/ProxSpace.git
synced 2025-07-16 02:03:02 -07:00
97 lines
2.8 KiB
Bash
97 lines
2.8 KiB
Bash
# Pactoys Recipe Library
|
|
# Copyright (C) 2016 Renato Silva
|
|
# Licensed under BSD
|
|
|
|
declare -Ag pactoys
|
|
test -n "${pactoys[module.recipe]}" && return
|
|
pactoys[module.recipe]=1
|
|
|
|
source "${PACTOYS_LIBRARY:-/usr/share/pactoys/library}/default.sh" || return
|
|
source "${PACTOYS_LIBRARY:-/usr/share/pactoys/library}/output.sh" || return
|
|
source "${PACTOYS_LIBRARY:-/usr/share/pactoys/library}/util.sh" || return
|
|
|
|
pactoys_recipe_location() {
|
|
local recipe="${1}"
|
|
local -n nameref_location="${2}"
|
|
if [[ "${recipe}" = */* ]]
|
|
then nameref_location="${recipe%/*}"
|
|
else nameref_location="${PWD}"
|
|
fi
|
|
}
|
|
|
|
pactoys_recipe_folder() {
|
|
local recipe="${1}"
|
|
local -n nameref_name="${2}"
|
|
pactoys_recipe_location "${recipe}" nameref_name
|
|
while [[ "${nameref_name}" = */ ]]; do
|
|
nameref_name="${nameref_name%/}"
|
|
done
|
|
nameref_name="${nameref_name##*/}"
|
|
}
|
|
|
|
pactoys_recipe_type() {
|
|
local -n nameref_type="${1}"
|
|
local -n nameref_pkgname="${2}"
|
|
local -n nameref_arch="${3}"
|
|
local name
|
|
test -n "${nameref_pkgname}" || return 1
|
|
for name in "${nameref_pkgname[@]}"; do
|
|
if [[ "${name}" != mingw-w64-* ]]; then
|
|
nameref_type='unix'
|
|
return 0
|
|
fi
|
|
done
|
|
if [[ "${nameref_arch[@]}" = any ]]
|
|
then nameref_type='mingw'
|
|
else nameref_type='unix'
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
pactoys_recipe_info() {
|
|
local recipe="${1}"
|
|
local -a properties=("${@:2}")
|
|
local property
|
|
for property in "${properties[@]}"; do
|
|
local -n nameref_property="${property#*:}"
|
|
property="${property%:*}"
|
|
nameref_property=()
|
|
pactoys_lines_to_list nameref_property "$(
|
|
MINGW_PACKAGE_PREFIX='mingw-w64'
|
|
PATH=".:${PATH}" source "${recipe}"
|
|
declare -n nameref_property="${property}"
|
|
printf '%s\n' "${nameref_property[@]}")"
|
|
done
|
|
}
|
|
|
|
pactoys_package_name() {
|
|
local recipe="${1}"
|
|
local pkgbase="${2}"
|
|
local pkgname="${3}"
|
|
local -n nameref_name="${4}"
|
|
local name directory
|
|
pactoys_recipe_folder "${recipe}" directory
|
|
name="${pkgbase:-${pkgname}}"
|
|
nameref_name="${name:-<unknown>} (${directory})"
|
|
nameref_name="${nameref_name% (${name})}"
|
|
}
|
|
|
|
pactoys_find_recipes() {
|
|
local -n nameref_recipes="${1}"
|
|
local recipe_name="${2}"
|
|
local maintainer="${3}"
|
|
local directories=("${@:4}")
|
|
if test -n "${maintainer}"; then
|
|
local email="$(pactoys_noiseless git config user.email)"
|
|
maintainer="^#.*Maintainer.*:.*[<(]?${email}[)>]?"
|
|
if test -z "${email}"; then
|
|
pactoys[error]='failed detecting maintainer from git'
|
|
return 1
|
|
fi
|
|
fi
|
|
pactoys_find_files nameref_recipes "${recipe_name}" "${maintainer}" "${directories[@]}" || return 1
|
|
if test -z "${nameref_recipes}"; then
|
|
pactoys[error]='no recipes found'
|
|
return 1
|
|
fi
|
|
}
|