-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupdate_engenious.sh
executable file
·86 lines (62 loc) · 2.64 KB
/
update_engenious.sh
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
prereleases="true"
global_rematch() {
declare -n ret=$3
local s=$1 regex=$2
while [[ $s =~ $regex ]]; do
ret="${BASH_REMATCH[1]}"
s=${s#*"${BASH_REMATCH[1]}"}
done
}
get_latest_version() {
declare -n ret=$3
package_id=$1
prereleases=$2
versions=d$(wget --compression=auto -qO- "https://api-v2v3search-0.nuget.org/autocomplete?id=$package_id&prerelease=$prereleases")
pat='\"([^"]*)\"' # last part encased in quotation marks
global_rematch "$versions" "$pat" result
ret="$result"
}
get_latest_version "engenious" "$prereleases" engenious_version
get_latest_version "engenious.ContentTool" "$prereleases" engenious_contenttool_version
get_latest_version "engenious.UI" "$prereleases" engenious_ui_version
update_package_ref() {
local packageName=$2
local newVersion="Version=\"$3\""
local s=$1 regex="<PackageReference([^\>]*)/>"
local previousLen=${#1}
while [[ $s =~ $regex ]]; do
match=${BASH_REMATCH[0]}
len=${#match}
s=${s#*"${BASH_REMATCH[0]}"}
newLen=${#s}
index=$previousLen-$newLen-$len
if [[ $match =~ Include[[:space:]]*=[[:space:]]*\"$packageName\" ]]; then
echo -n "${1::$index}"
[[ $match =~ Version[[:space:]]*=[[:space:]]*\"[^\"]*\" ]]
currentVersionString=${BASH_REMATCH[0]}
replacedVersion=${match/$currentVersionString/$newVersion}
echo "$replacedVersion"
endIndex=$index+$len+1
echo "${1:$endIndex:$previousLen}"
fi
done
}
file=templates/engenious.UI/engeniousTemplate/engeniousTemplate.csproj
echo "Updating $file"
fileContent=$(cat "$file")
update_package_ref "$fileContent" "engenious" "$engenious_version" > $file
echo "Updated engenious version to: '$engenious_version'"
fileContent=$(cat "$file")
update_package_ref "$fileContent" "engenious.ContentTool" "$engenious_contenttool_version" > $file
echo "Updated engenious.ContentTool version to: '$engenious_contenttool_version'"
fileContent=$(cat "$file")
update_package_ref "$fileContent" "engenious.UI" "$engenious_ui_version" > $file
echo "Updated engenious.UI version to: '$engenious_ui_version'"
file=templates/engenious/engeniousTemplate/engeniousTemplate.csproj
echo "Updating $file"
fileContent=$(cat "$file")
update_package_ref "$fileContent" "engenious" "$engenious_version" > $file
echo "Updated engenious version to: '$engenious_version'"
fileContent=$(cat "$file")
update_package_ref "$fileContent" "engenious.ContentTool" "$engenious_contenttool_version" > $file
echo "Updated engenious.ContentTool version to: '$engenious_contenttool_version'"