/
clone
executable file
·51 lines (42 loc) · 1.25 KB
/
clone
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
#!/bin/sh
NYI
# extension_is_installed removed, as it was not working already.
[[ -n "${extension_args}" ]] ||
__sm.log.error "clone: An extension name must be specified."
for (( index = 0 ; index < ${#extension_args[@]} ; index++ ))
do
token="${extension_args[${index}]}"
case "${token}" in
to)
_target="${extension_args[$((++index))]}"
;;
from)
_source="${extension_args[$((++index))]}"
;;
*)
if [[ -z "${_source}" ]]
then
_source="$token"
elif [[ -z "${_target}" ]]
then
_target="$token"
else
break
fi
;;
esac
done
# Sanity checks.
[[ -n "${_source}" ]] ||
__sm.log.error "clone: A source extension name must be specified."
[[ -n "${_target}" ]] ||
__sm.log.error "clone: A target extension name must be specified."
extension_is_installed "${_source}" ||
__sm.log.error "clone: The extension '${_source}' was not found installed; "\
"cannot create a new extension from it."
! extension_is_installed "${_target}" ||
__sm.log.error "clone: The target extension '${_target}' already exists; "\
"cannot create it from ${_source}."
path copy \
from "${extensions_development_path}/${_source}" \
to "${extensions_development_path}/${_target}"