102 lines
2.5 KiB
Bash
Executable file
102 lines
2.5 KiB
Bash
Executable file
#!/usr/bin/env fish
|
|
|
|
function get_deb
|
|
###
|
|
# required set global vars:
|
|
# url_base - apt repo base url
|
|
# versions - output of (wget -qO- $url_base/path/to/Packages.gz | gzip -d | grep "^Filename:" | cut -d' ' -f2 | sort -u | grep -e '-[0-9]' | string split ' ')
|
|
# package_set - list of package names taken from that apt repo
|
|
###
|
|
|
|
set -l package_versioned_set
|
|
|
|
for package in $package_set
|
|
set -l package_versioned
|
|
|
|
for _version in $versions
|
|
set -a package_versioned $(echo $_version | grep -e $package\-[0-9\.-]\*_)
|
|
end
|
|
|
|
set -a package_versioned_set $package_versioned[-1]
|
|
end
|
|
|
|
set -l urls
|
|
for package in $package_versioned_set
|
|
set -a urls $url_base/$package
|
|
end
|
|
|
|
echo $urls
|
|
end
|
|
|
|
function update_urls
|
|
for package_dir in $package_dirs
|
|
set -g package_set (cat $package_dir/deb_names)
|
|
|
|
set -g deb_urls (get_deb)
|
|
|
|
# construct the SRC_URI string
|
|
set -l _uuid (uuidgen)
|
|
echo 'SRC_URI="\\' > /tmp/$_uuid
|
|
for deb_url in (echo $deb_urls | string split ' ')
|
|
printf '\t%s\\\n' $deb_url >> /tmp/$_uuid
|
|
end
|
|
echo '"' >> /tmp/$_uuid
|
|
|
|
# replace the block
|
|
set ebuild_file "$package_dir/$(echo $package_dir | string split '/')[-1]-9999.ebuild"
|
|
if ! test -f "$FILE"
|
|
echo "Can't update missing file:"
|
|
echo "$ebuild_file"
|
|
echo "#======="
|
|
sed -e 's/\\\n/\n/g' /tmp/$_uuid | string replace '\\' ''
|
|
echo "#======="
|
|
break
|
|
end
|
|
|
|
local overwrite="n"
|
|
echo "Overwrite SRC_URI in $ebuild_file ?"
|
|
echo "[y/n]"
|
|
while true
|
|
read -f overwrite
|
|
[[ "$overwrite" == y* || "$overwrite" == n* ]] && echo "$overwrite" && break || echo "unrecognized input"
|
|
end
|
|
echo $overwrite
|
|
if [[ "$overwrite" == y* ]]
|
|
break
|
|
sed '/^SRC_URI="/,/^"/c\\'"$(cat /tmp/$_uuid)" -i "$ebuild_file"
|
|
rm /tmp/$_uuid
|
|
|
|
# update manifests
|
|
cd $package_dirs
|
|
pkgdev manifest
|
|
else
|
|
echo "fuck"
|
|
end
|
|
end
|
|
end
|
|
|
|
###
|
|
|
|
# script dir
|
|
set -l DIR (cd (dirname (status -f)); and pwd)
|
|
|
|
# folders to process
|
|
set -g package_dirs (find $DIR -name 'deb_names' | string replace '/deb_names' '')
|
|
|
|
set -g url_base "https://apt.repos.intel.com/oneapi"
|
|
set -g versions (wget -qO- $url_base/dists/all/main/binary-amd64/Packages.gz | gzip -d | grep "^Filename:" | cut -d' ' -f2 | sort -u | grep -e '-[0-9]*.[0-9]-[0-9]*.[0-9].[0-9]*' | string split ' ')
|
|
|
|
switch $argv[1]
|
|
case 'update'
|
|
echo Updating:
|
|
echo $package_dirs | string split ' '
|
|
update_urls && return 0 || return 1
|
|
case 'fetch'
|
|
echo $versions | string split ' ' && return 0
|
|
case ''
|
|
#help
|
|
return 0
|
|
case '*'
|
|
echo Unsupported operation
|
|
return 1
|
|
end
|