-
Notifications
You must be signed in to change notification settings - Fork 24
/
functions
134 lines (120 loc) · 2.39 KB
/
functions
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#!/bin/sh
#
# # VCS (SCM) Module
#
# ## detect\_uri()
#
#
#
# Code Walkthrough
detect_uri()
{
local extensions_path _uri_path
extensions_path="${1:-}"
(( $# )) && shift || fail "extensions_path must be given as first parameter."
__sm.extension.path.rebuild ".uri" $extensions_path $@
_uri_path="${rebuilded_path}"
if [[ -s "${_uri_path}" ]]
then
uri_path="${_uri_path}"
return 0
else
return 1
fi
}
__sm.vcs.read_uri()
{
local _uri
_uri=$(cat $1)
if [[ -n "${_uri}" && -d "${_uri}" && -f "${_uri}/.uri" && -s "${_uri}/.uri" ]]
then
__sm.vcs.read_uri "${_uri}/.uri"
else
printf "${_uri}\n"
fi
}
# ## scm\_identifier()
#
#
#
# Code Walkthrough
scm_identifier()
{
local _uri
_uri="${1:-}"
(( $# )) && shift || fail "url must be given as first parameter."
if [[ -d "${_uri}" ]]
then
_uri=$( builtin cd "${_uri}"; pwd )
fi
printf "${_uri//\//_}"
}
# ## is\_github\_uri()
#
#
#
# Code Walkthrough
is_github_uri()
{
local _uri
_uri="${1:-}"
(( $# )) && shift || fail "uri must be given as first parameter."
if __sm.string.ematch "${_uri}" "^[[:alnum:]_-]+\/[[:alnum:]_-]+$"
then
if curl -s -f -I -L "https://github.com/${_uri}" >/dev/null 2>&1
then
return 0
else
if (( $? == 60 ))
then
if curl -s -k -f -I -L "https://github.com/${_uri}" >/dev/null 2>&1
then
return 0
fi
fi
fi
debug vcs "Uri '${_uri}' looks like github one, but github claims it is not."
fi
return 1
}
is_archive_uri()
{
local _uri
_uri="${1:-}"
(( $# )) && shift || fail "uri must be given as first parameter."
case "${_uri}" in
*.tar|*.tgz|*.txz|*.tbz2|*.xz|*.bz2|*.gz|*.zip|*.lzma|*github.com/*/*ball/*)
return 0
;;
*)
return 1
;;
esac
}
fetch_uri_detect_scm_type()
{
local _uri
_uri="${1:-}"
(( $# )) && shift || fail "uri must be given as first parameter."
if [[ -d "${_uri}" ]] # check for directory
then
scm_type="path"
elif is_archive_uri "${_uri}" # check for packages
then
scm_type="archive"
elif is_github_uri "${_uri}" # check for pattern user/repository from github
then
scm_type="github"
else
case "${_uri}" in
(*git*) scm_type="git" ;;
(*svn*) scm_type="svn" ;;
(*hg*) scm_type="hg" ;;
(*fossil*) scm_type="fossil" ;;
(*)
return 1
;;
esac
fi
return 0
}