12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #!/usr/bin/bash
- OPTS=()
- SPEC=
- while IFS= read -r line; do
- if [ "$line" = "---" ]; then
- break
- fi
- case "$line" in
- --enablerepo=*|\
- --disablerepo=*|\
- --repoid=*|\
- --releasever=*|\
- --refresh)
- OPTS+=("$line")
- ;;
- *)
- SPEC="$line"
- ;;
- esac
- done
- repodir=$(mktemp -d)
- cat > "$repodir/template.repo"
- OPTS+=("--setopt=reposdir=${repodir}")
- OPTS+=("--quiet")
- # This creates the hashfile if it doesn't exist, and keep the ctime and mtime
- # unchanged otherwise.
- # We then copy the {c,m}time to the repo config.
- # This allows DNF caching to work properly.
- hashfile="/tmp/qvm-template-$(b2sum "$repodir/template.repo" | cut -f1 -d' ')"
- touch -a "$hashfile"
- touch -r "$hashfile" "$repodir/template.repo"
- RET=0
- if [ "$1" = "query" ]; then
- dnf repoquery "${OPTS[@]}" --qf='%{name}|%{epoch}|%{version}|%{release}|%{reponame}|%{downloadsize}|%{buildtime}|%{license}|%{url}|%{summary}|%{description}|' "$SPEC"
- RET="$?"
- elif [ "$1" = "download" ]; then
- url="$(dnf download "${OPTS[@]}" --url "$SPEC" | shuf -n 1)"
- curl --silent -L "$url" -o -
- RET="$?"
- fi
- rm -r "$repodir"
- exit "$RET"
|