depot/third_party/nixpkgs/pkgs/development/compilers/dotnet/nuget-package-hook.sh

94 lines
2.6 KiB
Bash

# shellcheck shell=bash disable=SC2154
unpackNupkg() {
local -r nupkg="$1" unpacked="$2"
local nuspec nuspec_l
mkdir -p "$unpacked"
@unzip@/bin/unzip -nqd "$unpacked" "$nupkg"
cd "$unpacked"
chmod -R +rw .
nuspec=(*.nuspec)
nuspec_l="${nuspec,,}"
if [[ $nuspec != "$nuspec_l" ]]; then
mv "$nuspec" "$nuspec".tmp
mv "$nuspec".tmp "$nuspec_l"
fi
echo {} > .nupkg.metadata
cd - >/dev/null
}
_unpackNugetPackagesInOutput() {
local -r unpacked="$prefix"/share/nuget/packages/.unpacked
local nuspec nuspec_l
(
shopt -s nullglob globstar
for nupkg in "$prefix"/share/nuget/source/**/*.nupkg; do
unpackNupkg "$nupkg" "$unpacked"
@xmlstarlet@/bin/xmlstarlet \
sel -t \
-m /_:package/_:metadata \
-v _:id -nl \
-v _:version -nl \
"$unpacked"/*.nuspec | (
read id
read version
id=''${id,,}
version=''${version,,}
mkdir -p "$prefix"/share/nuget/packages/"$id"
mv "$unpacked" "$prefix"/share/nuget/packages/"$id"/"$version"
)
done
rm -rf "$prefix"/share/nuget/source
)
}
unpackNugetPackages() {
local output
for output in $(getAllOutputNames); do
prefix="${!output}" _unpackNugetPackagesInOutput
done
}
if [[ -z ${dontUnpackNugetPackages-} ]]; then
preFixupHooks+=(unpackNugetPackages)
fi
_createNugetSourceInOutput() {
local package version id dir nupkg content
local -a nuspec
(
shopt -s nullglob
for package in "$prefix"/share/nuget/packages/*/*; do
version=$(basename "$package")
id=$(basename "$(dirname "$package")")
dir="$prefix/share/nuget/source/$id/$version"
nupkg=$dir/$id.$version.nupkg
nuspec=("$package"/*.nuspec)
if [[ -n ${createInstallableNugetSource-} ]]; then
content=.
else
content=$(basename "${nuspec[0]}")
fi
mkdir -p "$dir"
cp "${nuspec[0]}" "$dir/$id.nuspec"
(cd "$package" && @zip@/bin/zip -rq0 "$nupkg" "$content")
@stripNondeterminism@/bin/strip-nondeterminism --type zip "$nupkg"
touch "$nupkg".sha512
done
)
}
createNugetSource() {
local output
for output in $(getAllOutputNames); do
prefix="${!output}" _createNugetSourceInOutput
done
}
if [[ -z ${dontCreateNugetSource-} ]]; then
postFixupHooks+=(createNugetSource)
fi