no submod
This commit is contained in:
87
work/notea/crawler/gitlab_wiki.sh
Normal file
87
work/notea/crawler/gitlab_wiki.sh
Normal file
@@ -0,0 +1,87 @@
|
||||
#! /bin/bash
|
||||
|
||||
gitlab_wiki() (
|
||||
is() {
|
||||
gitlab _is_gitlab "$@" && gitlab _is_wiki "$@"
|
||||
}
|
||||
|
||||
human_url() {
|
||||
local url="${1%/}"
|
||||
url="${url%%#*}"
|
||||
echo "$url/$(echo "$2" | base64 --decode)"
|
||||
}
|
||||
|
||||
_host() {
|
||||
local id="$1"
|
||||
local host="${id%%.net*}.net"
|
||||
echo "$host"
|
||||
}
|
||||
|
||||
_project() {
|
||||
local id="$1"
|
||||
local host="$(_host "$@")"
|
||||
local path="${id#$host}"
|
||||
local project="${path%%/wikis*}"
|
||||
project="${project%/-}"
|
||||
project="${project%/-/}"
|
||||
project="${project#/}"
|
||||
project="${project%/}"
|
||||
echo "${project%%#*}"
|
||||
}
|
||||
|
||||
_blob() {
|
||||
local id="$1"
|
||||
local host="$(_host "$@")"
|
||||
local project="$(_project "$@")"
|
||||
local path="${id#$host}"
|
||||
local blob="${path#*/wikis}"
|
||||
blob="${blob#/}"
|
||||
blob="${blob%/}"
|
||||
echo "${blob%%#*}"
|
||||
}
|
||||
|
||||
get() {
|
||||
local base="$1"
|
||||
local host="$(_host "$base")"
|
||||
local project="$(_project "$base")"
|
||||
local blob="$(_blob "$base")"
|
||||
if [ "$(echo "$2" | base64 --decode)" != "" ]; then
|
||||
blob="$blob/$(echo "$2" | base64 --decode)"
|
||||
fi
|
||||
log project=$project
|
||||
log "$host/api/v4/projects/$(urlencode "$project")/wikis/$(urlencode "$blob")"
|
||||
gitlab \
|
||||
_gcurl \
|
||||
"$host/api/v4/projects/$(urlencode "$project")/wikis/$(urlencode "$blob")" \
|
||||
| jq -r .content
|
||||
}
|
||||
|
||||
expand() {
|
||||
local cache_key="gitlab_wiki expand $*"
|
||||
if cache get "$cache_key"; then
|
||||
return 0
|
||||
fi
|
||||
_expand "$@" | sort | cache put "$cache_key"
|
||||
}
|
||||
|
||||
_expand() {
|
||||
local host="$(_host "$1")"
|
||||
local project="$(_project "$1")"
|
||||
local blob="$(_blob "$1")"
|
||||
if [ -n "$blob" ] && [ "$blob" != "" ]; then
|
||||
echo "" | base64
|
||||
return
|
||||
fi
|
||||
log host=$host, project=$project, blob=$blob
|
||||
gitlab \
|
||||
_gcurl \
|
||||
"$host/api/v4/projects/$(urlencode "$project")/wikis?with_content=0" \
|
||||
| jq -r .[].slug \
|
||||
| while read -r line; do
|
||||
echo "$line" | base64
|
||||
done
|
||||
}
|
||||
|
||||
"$@"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user