-
Notifications
You must be signed in to change notification settings - Fork 28
/
publish.fish
61 lines (49 loc) · 1.36 KB
/
publish.fish
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/env fish
function csproj_field
set csproj $argv[1]
set field $argv[2]
set value (string replace -rf "\\s*<$field>(.*)</$field>" '$1' < $csproj | string trim)[1]
if ! string match -qr -- '.' $value
echo "Could not extract value of $field from $csproj" 1>&2
exit 1
end
echo $value
end
function publish_csproj
set csproj $argv[1]
if ! test -f $csproj
echo "Could not find project file $csproj!" 1>&2
exit 1
end
set -l pkgname (csproj_field $csproj "PackageId")
set -l pkgversion (csproj_field $csproj "Version")
if ! dotnet build -c Release -p:IncludeSymbols=true -p:SymbolPackageFormat=snupkg $csproj
exit 1
end
set nupkg (dirname $csproj)/bin/Release/$pkgname.$pkgversion.nupkg
if ! test -f $nupkg
echo "Could not find nuget package $nupkg!" 1>&2
exit 1
end
set snupkg (dirname $csproj)/bin/Release/$pkgname.$pkgversion.snupkg
if ! test -f $nupkg
echo "Could not find nuget symbol package $snupkg!" 1>&2
exit 1
end
if ! nuget push $nupkg
exit 1
end
# This message is printed by nuget when pushing an actual package, but not for the snupkg:
echo "Pushing $snupkg to 'https://nuget.org'"
if ! nuget push $snupkg
echo "Error publishing snupkg"
exit 1
end
echo "Your snupkg package was pushed"
end
if string match -qr -- . $argv[1]
set csproj $argv[1]
publish_csproj $csproj
else
publish_csproj ./AsyncLock/*.csproj
end