-
Notifications
You must be signed in to change notification settings - Fork 249
/
option.sh
executable file
·155 lines (120 loc) · 3.95 KB
/
option.sh
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#!/bin/bash
#
# Example Option, Options and OptionsWrapper objects use.
source "$( cd "${BASH_SOURCE[0]%/*}" && cd .. && pwd )/lib/oo-bootstrap.sh"
import util/option
OptionsWrapper optionMenuWrapper
Options optionMenu
echo 'Set default values manually.'
Option optionA
$var:optionA name = 'one'
$var:optionA value = 1
$var:optionA letter = 'a'
$var:optionA flag = false
$var:optionA required = true
Option optionB
$var:optionB name = 'two'
$var:optionB value = 2
$var:optionB letter = 'b'
$var:optionB flag = false
$var:optionB required = false
Option optionVerbose
$var:optionVerbose name = 'verbose'
$var:optionVerbose value = false
$var:optionVerbose letter = 'v'
$var:optionVerbose flag = true
$var:optionVerbose required = false
# Add options.
$var:optionMenu Set optionA
$var:optionMenu Set optionB
$var:optionMenu Set optionVerbose
$var:optionMenu
echo '----------------'
echo 'Set default values from array.'
# Set defaults index as: [name,value,letter,flag,required]
declare -A DEFAULTS
DEFAULTS[one,1,a,false,true]=''
DEFAULTS[two,2,b,false,false]=''
DEFAULTS[three,3,c,false,false]=''
DEFAULTS[verbose,false,v,true,false]=''
Options optionMenu=$($var:optionMenuWrapper SetDefaults optionMenu DEFAULTS)
$var:optionMenu
echo '----------------'
echo 'Serialize all options.'
$var:optionMenu
echo '----------------'
echo 'Delete option.'
$var:optionMenu Delete optionB
$var:optionMenu
echo '----------------'
echo 'Serialize option.'
serializedOption=$($var:optionA)
echo "$serializedOption"
echo '----------------'
echo 'Get attributes from serialized string.'
Options::GetSerializedAttribute "$serializedOption" 'name'
Options::GetSerializedAttribute "$serializedOption" 'value'
echo '----------------'
echo 'Unserialize option.'
Option optionC
Options::Unserialize "$serializedOption" $ref:optionC
$var:optionC name
$var:optionC value
echo '----------------'
echo 'Search option by name.'
Option optionC=$($var:optionMenu Search 'name' 'verbose')
$var:optionC
echo '----------------'
echo 'Search option by letter.'
Option optionC=$($var:optionMenu Search 'letter' 'a')
$var:optionC
echo '----------------'
echo 'Get options string.'
$var:optionMenu GetOptionsString
echo '----------------'
# Simulate call the script like: ./option.sh -a 777
echo 'Parse arguments -a 777'
set -- "${@:1:2}" '-a 777'
Options optionMenu=$($var:optionMenuWrapper ParseArguments optionMenu "$@")
$var:optionMenu
echo '----------------'
echo 'Copy values from Object to associative array.'
declare -A PARAMETERS=$($var:optionMenu ToArray)
echo "${PARAMETERS[@]}"
echo '----------------'
echo 'Basic use: read defaults from array, write results to associative array.'
echo ' DEFAULTS[one,1,a,false,true] > Options Object'
echo ' DEFAULTS[two,2,b,false,false] > Options Object'
echo ' Option Object > PARAMETERS[one]="1"'
echo ' Option Object > PARAMETERS[two]="2"'
Options optionMenuSample
OptionsWrapper optionMenuWrapperSample
# Name,value,letter,flag,required.
declare -A DEFAULTS_SAMPLE
DEFAULTS_SAMPLE[one,1,a,false,true]=''
DEFAULTS_SAMPLE[two,2,b,false,false]=''
Options optionMenuSample=$($var:optionMenuWrapperSample SetDefaults optionMenuSample DEFAULTS_SAMPLE)
declare -A PARAMETERS_SAMPLE=$($var:optionMenuSample ToArray)
for index in "${!PARAMETERS_SAMPLE[@]}"; do
echo "$index : ${PARAMETERS_SAMPLE[$index]}"
done
echo "${PARAMETERS_SAMPLE[one]}"
echo "${PARAMETERS_SAMPLE[two]}"
echo '----------------'
echo 'Graphical User Interface with yad.'
Options optionMenuYad
OptionsWrapper optionMenuWrapperYad
# Name,value,letter,flag,required.
declare -A DEFAULTS_YAD
DEFAULTS_YAD[one,1,a,false,true]=''
DEFAULTS_YAD[two,2,b,false,false]=''
DEFAULTS_YAD[verbose,false,v,true,false]=''
Options optionMenuYad=$($var:optionMenuWrapperYad SetDefaults optionMenuYad DEFAULTS_YAD)
Options optionMenuYad=$($var:optionMenuWrapperYad GetOptionsGUI optionMenuYad)
if [[ "$($var:optionMenuYad yadSuccess)" == true ]]; then
$var:optionMenuYad
else
echo "An error happend with yad."
fi
echo '----------------'
exit 0