Skip to content

Commit d8bd649

Browse files
feat: dnf4 module (#397)
* feat: dnf4 module * feat: fix JSON formatting errors * feat: fix JSON formatting errors * fix: json syntax errors * Update README.md * Update dnf-repoinfo.sh * Update dnf-repolist.sh * fix: typo * fixes * fixes v2 * restore original .tsp * restore original .tsp * fixes * fixes * fix ref * fixes * feat: branding * feat: resolve merge conflicts * feat: resolve merge conflicts * feat: resolve merge conflicts --------- Co-authored-by: certifiedfoolio <156134535+cherry-os@users.noreply.github.com> Co-authored-by: Gerald Pinder <gmpinder@gmail.com>
1 parent 6659dc3 commit d8bd649

3 files changed

Lines changed: 959 additions & 0 deletions

File tree

modules/dnf/dnf-repoinfo

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
#!/bin/bash
2+
# convert the output of dnf repoinfo into json
3+
4+
repo_id="$1"
5+
repo_info=$(dnf repoinfo -q "$repo_id")
6+
7+
echo "["
8+
echo " {"
9+
10+
repo_id_val=$(echo "$repo_info" | grep -oP "^Repo-id *: *\K.*")
11+
if [ -n "$repo_id_val" ]; then
12+
echo " \"id\":\"$repo_id_val\","
13+
fi
14+
15+
repo_name=$(echo "$repo_info" | grep -oP "^Repo-name *: *\K.*")
16+
if [ -n "$repo_name" ]; then
17+
echo " \"name\":\"$repo_name\","
18+
fi
19+
20+
repo_status=$(echo "$repo_info" | grep -oP "^Repo-status *: *\K.*")
21+
if [ -n "$repo_status" ]; then
22+
if [[ "$repo_status" == "enabled" ]]; then
23+
echo " \"is_enabled\":true,"
24+
else
25+
echo " \"is_enabled\":false,"
26+
fi
27+
fi
28+
29+
repo_revision=$(echo "$repo_info" | grep -oP "^Repo-revision *: *\K.*")
30+
if [ -n "$repo_revision" ]; then
31+
echo " \"revision\":\"$repo_revision\","
32+
fi
33+
34+
repo_updated=$(echo "$repo_info" | grep -oP "^Repo-updated *: *\K.*")
35+
if [ -n "$repo_updated" ]; then
36+
echo " \"updated\":\"$repo_updated\","
37+
fi
38+
39+
repo_available_pkgs=$(echo "$repo_info" | grep -oP "^Repo-available-pkgs *: *\K.*")
40+
if [ -n "$repo_available_pkgs" ]; then
41+
echo " \"available-pkgs\":$repo_available_pkgs,"
42+
fi
43+
44+
repo_pkgs=$(echo "$repo_info" | grep -oP "^Repo-pkgs *: *\K.*")
45+
if [ -n "$repo_pkgs" ]; then
46+
echo " \"pkgs\":$repo_pkgs,"
47+
fi
48+
49+
repo_size=$(echo "$repo_info" | grep -oP "^Repo-size *: *\K.*")
50+
if [ -n "$repo_size" ]; then
51+
echo " \"size\":\"$repo_size\","
52+
fi
53+
54+
repo_metalink=$(echo "$repo_info" | grep -oP "^Repo-metalink *: *\K.*")
55+
if [ -n "$repo_metalink" ]; then
56+
echo " \"metalink\":\"$repo_metalink\","
57+
fi
58+
59+
updated=$(echo "$repo_info" | grep -oP "^Updated *: *\K.*")
60+
if [ -n "$updated" ]; then
61+
echo " \"updated\":\"$updated\","
62+
fi
63+
64+
repo_baseurl=$(echo "$repo_info" | grep -oP "^Repo-baseurl *: *\K.*")
65+
if [ -n "$repo_baseurl" ]; then
66+
echo " \"baseurl\":\"$repo_baseurl\","
67+
fi
68+
69+
repo_expire=$(echo "$repo_info" | grep -oP "^Repo-expire *: *\K.*")
70+
if [ -n "$repo_expire" ]; then
71+
echo " \"expire\":\"$repo_expire\","
72+
fi
73+
74+
repo_filename=$(echo "$repo_info" | grep -oP "^Repo-filename *: *\K.*")
75+
if [ -n "$repo_filename" ]; then
76+
echo " \"repo_file_path\":\"$repo_filename\""
77+
fi
78+
79+
if [[ "$(tail -c 2 <<< "$(echo "$repo_info")" | head -c 1)" == "," ]]; then
80+
sed -i '$ s/,$//'
81+
fi
82+
83+
echo " }"
84+
echo "]"

modules/dnf/dnf-repolist

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/bin/bash
2+
# convert the output of dnf repolist into json
3+
4+
output=$(dnf repolist -q --all 2>/dev/null)
5+
lines=$(echo "$output" | tail -n +3)
6+
first_entry=true
7+
8+
echo "["
9+
10+
echo "$lines" | while read -r line; do
11+
repo_id=$(echo "$line" | awk '{print $1}')
12+
status=$(echo "$line" | awk '{print $NF}')
13+
repo_name=$(echo "$line" | awk '{$1=""; $NF=""; print $0}' | sed -e 's/^ *//g' -e 's/ *$//g')
14+
15+
if [ "$status" = "enabled" ]; then
16+
status=true
17+
else
18+
status=false
19+
fi
20+
if [ "$first_entry" = true ]; then
21+
first_entry=false
22+
fi
23+
24+
cat <<EOF
25+
{
26+
"id":"$repo_id",
27+
"name":"$repo_name",
28+
"is_enabled":$status
29+
},
30+
EOF
31+
done | sed '$s/},/}/'
32+
33+
echo "]"

0 commit comments

Comments
 (0)