diff options
Diffstat (limited to 'pkgs/development/tools/omnisharp-roslyn/create-deps.sh')
-rwxr-xr-x | pkgs/development/tools/omnisharp-roslyn/create-deps.sh | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/pkgs/development/tools/omnisharp-roslyn/create-deps.sh b/pkgs/development/tools/omnisharp-roslyn/create-deps.sh new file mode 100755 index 00000000000..402d64c9b61 --- /dev/null +++ b/pkgs/development/tools/omnisharp-roslyn/create-deps.sh @@ -0,0 +1,66 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p msbuild -p jq -p xmlstarlet -p curl +set -euo pipefail + +cat << EOL +{ fetchurl }: [ +EOL + +tmpdir="$(mktemp -d -p "$(pwd)")" # must be under source root +trap 'rm -rf "$tmpdir"' EXIT + +mapfile -t repos < <( + xmlstarlet sel -t -v 'configuration/packageSources/add/@value' -n NuGet.Config | + while IFS= read index + do + curl --compressed -fsL "$index" | \ + jq -r '.resources[] | select(."@type" == "PackageBaseAddress/3.0.0")."@id"' + done + ) + +msbuild -t:restore -p:Configuration=Release -p:RestorePackagesPath="$tmpdir" \ + -p:RestoreNoCache=true -p:RestoreForce=true \ + src/OmniSharp.Stdio.Driver/OmniSharp.Stdio.Driver.csproj >&2 + +cd "$tmpdir" +for package in * +do + cd "$package" + for version in * + do + found=false + for repo in "${repos[@]}" + do + url="$repo$package/$version/$package.$version.nupkg" + if curl -fsL "$url" -o /dev/null + then + found=true + break + fi + done + + if ! $found + then + echo "couldn't find $package $version" >&2 + exit 1 + fi + + sha256=$(nix-prefetch-url "$url" 2>/dev/null) + cat << EOL + { + name = "$package"; + version = "$version"; + src = fetchurl { + url = "$url"; + sha256 = "$sha256"; + }; + } +EOL + done + cd .. +done +cd .. + +cat << EOL +] +EOL |