Skip to content

Commit e446df6

Browse files
authored
Merge pull request #9 from marverix/improve-pattern
Improve pattern
2 parents 961bdf0 + efdb138 commit e446df6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+13867
-484
lines changed

gah

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ EXT_ALL_ARCHIVES="$EXT_ZIP|$EXT_TAR"
8282
REGEXP_EXT_ZIP=".+(${EXT_ZIP})$"
8383
REGEXP_EXT_TAR=".+(${EXT_TAR})$"
8484

85+
REGEXP_IGNORE_PATTERN="(linux-android)"
8586
REGEXP_SKIP_FILES="^(license|readme|changelog).*|.*\.(md|txt)$"
8687

8788
function get_os() {
@@ -123,9 +124,11 @@ function get_filename_regexp() {
123124
local version_regexp_part='([_-]v?[0-9.]+)?'
124125
local os_regexp_part=$(get_os_regexp_part)
125126
local arch_regexp_part=$(get_arch_regexp_part)
127+
local suffix_regexp_part='([_-][a-z0-9_-]+)?'
126128

127129
local regexp="${name_regexp_part}${version_regexp_part}"
128130
regexp+="(${os_regexp_part}${arch_regexp_part}|${arch_regexp_part}${os_regexp_part})"
131+
regexp+="${suffix_regexp_part}"
129132
regexp+="(${EXT_ALL_ARCHIVES})?"
130133
echo "$regexp"
131134
}
@@ -142,6 +145,8 @@ function get_md_url_regexp() {
142145
#--------------------------------------------------
143146
#region GitHub API functions
144147

148+
REGEXP_NAME_FROM_HTML_URL='^https:\/\/[^/]+\/[^/]+\/([^/]+)'
149+
145150
function get_fetch_release_info_url() {
146151
local suffix="latest"
147152
if [[ -n "$2" && "$2" != "latest" ]]; then
@@ -168,6 +173,14 @@ function fetch_release_info() {
168173
print_green "Found release: $release_name"
169174
}
170175

176+
function get_repo_name() {
177+
local release_json="$1"
178+
local html_url=$(jq -r '.html_url' "$release_json")
179+
if [[ "$html_url" =~ $REGEXP_NAME_FROM_HTML_URL ]]; then
180+
echo "${BASH_REMATCH[1]}"
181+
fi
182+
}
183+
171184
function find_download_url() {
172185
local release_json="$1"
173186

@@ -180,9 +193,13 @@ function find_download_url() {
180193
for name in $(jq -r '.assets[].name' "$release_json"); do
181194
local lower_name=$(echo "$name" | tr '[A-Z]' '[a-z]')
182195
if [[ "$lower_name" =~ $regexp ]]; then
183-
print_debug " $name ... Match!"
184-
found="true"
185-
jq -r --arg name "$name" '.assets[] | select(.name == $name) | .browser_download_url' "$release_json"
196+
if [[ "$lower_name" =~ $REGEXP_IGNORE_PATTERN ]]; then
197+
print_debug " $name ... Ignored"
198+
else
199+
print_debug " $name ... Match!"
200+
found="true"
201+
jq -r --arg name "$name" '.assets[] | select(.name == $name) | .browser_download_url' "$release_json"
202+
fi
186203
else
187204
print_debug " $name ... Doesn't match"
188205
fi

test/01_regexp_functions.bats

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ teardown() {
157157
run get_filename_regexp
158158

159159
assert_success
160-
assert_output '([a-z][a-z0-9_-]+?)([_-]v?[0-9.]+)?([._-](unknown[._-])?(linux|linux-gnu|linux-musl)[._-](amd64|x86_64|x64|universal)|[._-](amd64|x86_64|x64|universal)[._-](unknown[._-])?(linux|linux-gnu|linux-musl))(\.zip|\.tar\.gz|\.tar\.xz|\.tar\.bz2)?'
160+
assert_output '([a-z][a-z0-9_-]+?)([_-]v?[0-9.]+)?([._-](unknown[._-])?(linux|linux-gnu|linux-musl)[._-](amd64|x86_64|x64|universal)|[._-](amd64|x86_64|x64|universal)[._-](unknown[._-])?(linux|linux-gnu|linux-musl))([_-][a-z0-9_-]+)?(\.zip|\.tar\.gz|\.tar\.xz|\.tar\.bz2)?'
161161
}
162162

163163
@test "get_filename_regexp should return proper string for linux/arm64" {
@@ -168,7 +168,7 @@ teardown() {
168168
run get_filename_regexp
169169

170170
assert_success
171-
assert_output '([a-z][a-z0-9_-]+?)([_-]v?[0-9.]+)?([._-](unknown[._-])?(linux|linux-gnu|linux-musl)[._-](arm64|aarch64|universal)|[._-](arm64|aarch64|universal)[._-](unknown[._-])?(linux|linux-gnu|linux-musl))(\.zip|\.tar\.gz|\.tar\.xz|\.tar\.bz2)?'
171+
assert_output '([a-z][a-z0-9_-]+?)([_-]v?[0-9.]+)?([._-](unknown[._-])?(linux|linux-gnu|linux-musl)[._-](arm64|aarch64|universal)|[._-](arm64|aarch64|universal)[._-](unknown[._-])?(linux|linux-gnu|linux-musl))([_-][a-z0-9_-]+)?(\.zip|\.tar\.gz|\.tar\.xz|\.tar\.bz2)?'
172172
}
173173

174174
@test "get_filename_regexp should return proper string for macos/amd64" {
@@ -179,7 +179,7 @@ teardown() {
179179
run get_filename_regexp
180180

181181
assert_success
182-
assert_output '([a-z][a-z0-9_-]+?)([_-]v?[0-9.]+)?([._-](apple[._-])?(darwin|macos|osx)[._-](amd64|x86_64|x64|universal)|[._-](amd64|x86_64|x64|universal)[._-](apple[._-])?(darwin|macos|osx))(\.zip|\.tar\.gz|\.tar\.xz|\.tar\.bz2)?'
182+
assert_output '([a-z][a-z0-9_-]+?)([_-]v?[0-9.]+)?([._-](apple[._-])?(darwin|macos|osx)[._-](amd64|x86_64|x64|universal)|[._-](amd64|x86_64|x64|universal)[._-](apple[._-])?(darwin|macos|osx))([_-][a-z0-9_-]+)?(\.zip|\.tar\.gz|\.tar\.xz|\.tar\.bz2)?'
183183
}
184184

185185
@test "get_filename_regexp should return proper string for macos/arm64" {
@@ -190,5 +190,5 @@ teardown() {
190190
run get_filename_regexp
191191

192192
assert_success
193-
assert_output '([a-z][a-z0-9_-]+?)([_-]v?[0-9.]+)?([._-](apple[._-])?(darwin|macos|osx)[._-](arm64|aarch64|universal)|[._-](arm64|aarch64|universal)[._-](apple[._-])?(darwin|macos|osx))(\.zip|\.tar\.gz|\.tar\.xz|\.tar\.bz2)?'
193+
assert_output '([a-z][a-z0-9_-]+?)([_-]v?[0-9.]+)?([._-](apple[._-])?(darwin|macos|osx)[._-](arm64|aarch64|universal)|[._-](arm64|aarch64|universal)[._-](apple[._-])?(darwin|macos|osx))([_-][a-z0-9_-]+)?(\.zip|\.tar\.gz|\.tar\.xz|\.tar\.bz2)?'
194194
}

0 commit comments

Comments
 (0)