-
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy patharg_dirs.sh
More file actions
90 lines (76 loc) · 1.61 KB
/
Copy patharg_dirs.sh
File metadata and controls
90 lines (76 loc) · 1.61 KB
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
#! /bin/bash
__reuse_path () {
[[ -n $path && -d "$path" ]] && return 0
_shift_path "$@"
return $?
}
_shift_path () {
local _path=$(pwd) _arg=
[[ -z "$*" ]] && return 0
for _arg in "$@"
do
if [[ -f "$_arg" || -d "$_arg" ]]; then
_path=$(_python_realpath $_arg)
return 0
fi
done
[[ $_path ]]
}
_python_realpath () {
python -c"import os; print(os.path.realpath('""$@""'))"
}
__reuse_dir () {
[[ -n $dir && -d "$dir" ]] && return 0
_first_arg_dir "$@"
return $?
}
__all_dir_args () {
dir=
dirr= # bash is using "dirs"
[[ -z "$*" ]] && return 1
for _arg in "$@"; do
[[ -d "$_arg" ]] || continue
_arg_dir=$(_python_realpath "$_arg")
[[ -z "$dir" ]] && dir="$_arg_dir"
[[ -z "$dirr" ]] && dirr="$_arg_dir" || dirr="$dirr:$_arg_dir"
done
[[ -z "$dirr" ]] && return 1
[[ $dir ]]
}
__any_dir_arg () {
dir=
[[ -z "$*" ]] && return 1
for _arg in "$@"; do
[[ -d "$_arg" ]] || continue
dir=$(_python_realpath "$_arg")
return 0
done
[[ $dir ]]
}
_first_arg_dir () {
dir=$(show_arg_dir "$@")
[[ $dir ]]
}
__echo_shift_dir () {
shift_dir "$@" || return 1
echo $dir
[[ $dir ]]
}
show_arg_dir () {
[[ "$*" ]] || return 1
[[ -d "$1" ]] || return 1
_python_realpath "$1"
return 0
}
show_arg_dir_or_here () {
local _result=$(show_arg_dir "$@")
[[ $_result ]] || _result=$(readlink -f .)
echo $_result
}
shift_dir () {
true
dir=$(show_arg_dir_or_here "$@")
export dir
true
[[ -d $dir ]]
}