-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprintsrcinfo
More file actions
115 lines (102 loc) · 3.24 KB
/
printsrcinfo
File metadata and controls
115 lines (102 loc) · 3.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#!/bin/bash
# Ensure the PKGBUILD file exists
if [ ! -f "$1" ]; then
echo "PKGBUILD file not found!"
exit 1
fi
# Source the PKGBUILD to get the global variables
source "$1"
# Function to print package information
print_pkg_info() {
local pkgname="$1"
local pkgdesc="${2:-$pkgdesc}"
local pkgver="${3:-$pkgver}"
local pkgrel="${4:-$pkgrel}"
local arch=("${!5}")
local makedepends=("${!6}")
local depends=("${!7}")
echo "pkgname = $pkgname"
echo " pkgdesc = $pkgdesc"
echo " pkgver = $pkgver"
echo " pkgrel = $pkgrel"
for ar in "${arch[@]}"; do
echo " arch = $ar"
done
for dep in "${makedepends[@]}"; do
echo " makedepends = $dep"
done
for dep in "${depends[@]}"; do
echo " depends = $dep"
done
echo
}
# Print base package info
echo "pkgbase = ${pkgname[0]}"
echo " pkgdesc = $pkgdesc"
echo " pkgver = $pkgver"
echo " pkgrel = $pkgrel"
for ar in "${arch[@]}"; do
echo " arch = $ar"
done
for dep in "${makedepends[@]}"; do
echo " makedepends = $dep"
done
for dep in "${depends[@]}"; do
echo " depends = $dep"
done
echo
# Function to extract information from package functions
extract_package_info() {
local func="$1"
local pkgname="${func#package_}"
local pkgdesc="$pkgdesc"
local pkgver="$pkgver"
local pkgrel="$pkgrel"
local arch=()
local makedepends=()
local depends=()
while read -r line; do
case "$line" in
pkgdesc=*)
pkgdesc="${line#pkgdesc=}"
pkgdesc="${pkgdesc//;/}"
pkgdesc=$(echo "$pkgdesc" | sed -e 's/^["'\'']//;s/["'\'']$//')
;;
pkgver=*)
pkgver="${line#pkgver=}"
pkgver="${pkgver//;/}"
;;
pkgrel=*)
pkgrel="${line#pkgrel=}"
pkgrel="${pkgrel//;/}"
;;
arch=*)
arch_string="${line#arch=}"
arch_string="${arch_string//[\(\)\'\"]}"
arch_string="${arch_string//;/}"
IFS=', ' read -r -a arch <<< "$arch_string"
;;
makedepends=*)
makedepends_string="${line#makedepends=}"
makedepends_string="${makedepends_string//[\(\)\'\"]}"
makedepends_string="${makedepends_string//;/}"
IFS=', ' read -r -a makedepends <<< "$makedepends_string"
;;
depends=*)
# Remove quotes and parentheses from the depends array string
depends_string="${line#depends=}"
depends_string="${depends_string//[\(\)\'\"]}"
depends_string="${depends_string//;/}"
IFS=', ' read -r -a depends <<< "$depends_string"
;;
esac
done < <(declare -f "$func" | sed '1d;$d')
print_pkg_info "$pkgname" "$pkgdesc" "$pkgver" "$pkgrel" arch[@] makedepends[@] depends[@]
}
# Extract and print package-specific info
for func in $(declare -F | awk '{print $3}' | grep '^package_' || echo 'package'); do
if [ "$func" == "package" ]; then
func="$pkgname"
fi
extract_package_info "$func"
done