Остання активність 1 month ago

nuno ревизій цього gist 1 month ago. До ревизії

1 file changed, 66 insertions

gistfile1.txt(файл створено)

@@ -0,0 +1,66 @@
1 + #!/usr/bin/env bash
2 +
3 + # ============================================
4 + # Flag Registry
5 + # ============================================
6 +
7 + declare -A _REGISTERED_FLAGS=()
8 +
9 + # ============================================
10 + # Registration
11 + # ============================================
12 +
13 + function flag::register() {
14 + local flag="$1"
15 + _REGISTERED_FLAGS["$flag"]=1
16 + }
17 +
18 + function flag::registered() {
19 + [[ -n "${_REGISTERED_FLAGS["$1"]:-}" ]]
20 + }
21 +
22 + # ============================================
23 + # Parsing
24 + # ============================================
25 +
26 + # Parse flags from args into associative array
27 + # Usage: flag::parse "$@"
28 + # Access: flag::get --name
29 + declare -A _FLAG_VALUES=()
30 +
31 + function flag::parse() {
32 + _FLAG_VALUES=()
33 +
34 + while [[ $# -gt 0 ]]; do
35 + case "$1" in
36 + --*)
37 + local key="$1"
38 + # Boolean flag (no value follows, or next arg is another flag)
39 + if [[ $# -eq 1 || "$2" == --* ]]; then
40 + _FLAG_VALUES["$key"]="true"
41 + shift
42 + else
43 + _FLAG_VALUES["$key"]="$2"
44 + shift 2
45 + fi
46 + ;;
47 + *)
48 + shift
49 + ;;
50 + esac
51 + done
52 + }
53 +
54 + function flag::get() {
55 + echo "${_FLAG_VALUES["$1"]:-}"
56 + }
57 +
58 + function flag::enabled() {
59 + [[ "${_FLAG_VALUES["$1"]:-}" == "true" ]]
60 + }
61 +
62 + function flag::set() {
63 + local key="$1"
64 + local value="$2"
65 + _FLAG_VALUES["$key"]="$value"
66 + }
Новіше Пізніше