3
3
# # 1.配置 # {
4
4
ISH_CONF_HOME=${ISH_CONF_HOME:= " $HOME /.ish/pluged" }
5
5
ISH_CONF_PATH=${ISH_CONF_PATH:= " $PWD /.ish/pluged" }
6
-
7
6
ISH_CONF_LOG=${ISH_CONF_LOG:= " /dev/stderr" }
8
7
ISH_CONF_LEVEL=${ISH_CONF_LEVEL:= " notice debug" }
9
8
ISH_CONF_COLOR=${ISH_CONF_COLOR:= " true" }
@@ -35,17 +34,15 @@ ish_log() {
35
34
ish_log_debug () { ish_log " debug" " $@ " ` _fileline 2 2` ; }
36
35
ish_log_require () { ish_log " require" " $@ " ; }
37
36
ish_log_request () { ish_log " request" " $@ " ; }
38
- ish_log_source () { ish_log " source" " $@ " ; }
39
37
ish_log_notice () { ish_log " notice" " $@ " ; }
40
38
ish_log_alias () { ish_log " alias" " $@ " ; }
41
39
# }
42
40
# # 3.加载 # {
43
41
require_path () { # 目录 repos
44
- for name in " $@ " ; do
45
- [ -e $name ] && echo $name && continue
42
+ for name in " $@ " ; do [ -f $name ] && echo $name && continue
46
43
for p in $PWD /.ish/pluged $ISH_CONF_PATH $ISH_CONF_HOME ; do
47
- [ -e $p /$name ] && echo $p /$name && break
48
- [ -e ${p%/* } /$name ] && echo ${p%/* } /$name && break
44
+ [ -f $p /$name ] && echo $p /$name && break
45
+ [ -f ${p%/* } /$name ] && echo ${p%/* } /$name && break
49
46
done
50
47
done
51
48
}
@@ -63,37 +60,32 @@ require_pull() { # 更新 repos
63
60
local back=$PWD ; cd " $( require_fork $1 ) " && ish_log_notice pwd $PWD && git pull; cd $back ; echo
64
61
}
65
62
require_temp () { # 下载 file
66
- for name in " $@ " ; do local temp=$( mktemp) ; ish_log_request " $temp <= $ctx_dev /$name "
67
- echo $name | grep " ^src/" & > /dev/null && name=" require/$name "
68
- if curl -h & > /dev/null; then
69
- curl --create-dirs -fsSL -o $temp $ctx_dev /$name && echo $temp
70
- else
71
- wget -O $temp -q $ctx_dev /$name && echo $temp
72
- fi
73
- done
63
+ for file in " $@ " ; do
64
+ local temp=$( mktemp) ; if curl -h & > /dev/null; then
65
+ curl -o $temp --create-dirs -fssl $file
66
+ else
67
+ wget -O $temp -q $file
68
+ fi && echo $temp
69
+ done 2> /dev/null
74
70
}
75
71
require () { # require [mod] file arg...
76
- local mod=$1 && shift
77
- local file=$( require_path $mod )
78
- [ -f " $file " ] || if echo $mod | grep " ^git" & > /dev/null; then
72
+ local mod=$1 && shift ; local file=$( require_path $mod )
73
+ [ -f " $file " ] || if echo $mod | grep " .git$" & > /dev/null; then
79
74
file=$( require_fork " $mod " ) /$1 && shift
80
- elif echo $mod | grep " shylinux.com/x/" & > /dev/null; then
75
+ elif echo $mod | grep " ^ shylinux.com/x/" & > /dev/null; then
81
76
file=$( require_fork " $mod " ) /$1 && shift
82
- else
77
+ elif echo $mod | grep " ^git" & > /dev/null; then
78
+ file=$( require_fork " $mod " ) /$1 && shift
79
+ elif echo $mod | grep " ^http" & > /dev/null; then
83
80
file=$( require_temp $mod )
84
- fi ; [ -f " $file " ] || return 0
85
-
86
- local back=$PWD && [ -d " ${file%/* } " ] && cd ${file%/* }
87
- ISH_CTX_MODULE=$( _name ish_${name} ) ISH_CTX_SCRIPT=$1 _load $file " $@ "
88
- cd $back ; return 0
89
- }
90
- _load () {
91
- local file=$1 && shift
92
- ish_log_source " $file " $@ " "
93
- source ./${file##*/ } " $@ "
94
- }
95
- _name () {
96
- local name=" $* " && echo ${name// [^a-zA-Z0-9_]/ _}
81
+ elif echo $mod | grep " ^/" & > /dev/null; then
82
+ file=$( require_temp $ctx_dev$mod )
83
+ elif echo $mod | grep " ^src/" & > /dev/null; then
84
+ file=$( require_temp $ctx_dev /require/$mod )
85
+ else
86
+ file=$( require_temp $ctx_dev /$mod ) ; [ -z " $file " ] && file=$( require_temp $ctx_dev /require/${ISH_CTX_MODULE%/* } /$mod )
87
+ fi ; [ -f " $file " ] || return 0; ish_log_require " $file <= $mod " ; eval " url=$( echo " $mod " | grep -o " ?.*" | tr " ?&" " " ) "
88
+ ISH_CTX_MODULE=$mod ISH_CTX_SCRIPT=$file source $file " $@ "
97
89
}
98
90
_fileline () {
99
91
local index1=$(( ${1} - 1 ))
0 commit comments