aboutsummaryrefslogtreecommitdiff
path: root/lib/_ak_settings
blob: 5a38a1e4c4815b664d8cbe3fd279c0605bc2627e (plain)
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
#!/usr/bin/env bash

source $AK_LIBDIR/_ak_script

_ak_settings_get(){
    if [ ! -z "$1" ] && [ -n "$1" ]
    then
        cd $AK_SETTINGS
        echo $1 | grep '\.' > /dev/null 2>&1
        if [ $? -ne 0 ]
        then
            _ak_log_error "No ungrouped settings allowed"
            exit 1
        fi
        echo $1 | grep '\.\.' > /dev/null 2>&1
        if [ $? -eq 0 ]
        then
            _ak_log_error "No '..' allowed"
            exit 1
        fi
        subset="$(echo $1 | cut -d '.' -f 1)"
        echo "$subset" | grep '[.\-\*/~!@#$%^&*()_=\-\>\<,{}[]]' > /dev/null 2>&1
        if [ $? -eq 0 ]
        then
            _ak_log_error "Names containing symbols are not allowed"
            exit 1
        fi
        if [ ! -d $subset ]
        then
            _ak_log_error "Subsetting $subset not found"
            exit 1
        fi
        cd $subset
        label="$(echo $1 | cut -d '.' -f 2-)"
        echo "$label" | grep '[.\-\*/~!@#$%^&*()_=\-\>\<,{}[]]' > /dev/null 2>&1
        if [ $? -eq 0 ]
        then
            _ak_log_error "Names containing symbols are not allowed"
            exit 1
        fi
        if [ ! -f $AK_SETTINGS/$subset/$label ]
        then
            _ak_log_error "Key: $subset.$label was not found"
            exit 1
        fi
        cat $AK_SETTINGS/$subset/$label
    else
        cd $AK_SETTINGS
        find . -type f | while read setting
        do
            printf '%s:%s\n' "$(echo $setting| sed -e 's/^\.\///;s/\//./g')" "$(cat $setting)"
        done
    fi
}

_ak_settings_set(){
    if [ ! -z "$1" ] && [ -n "$1" ]
    then
        echo $1 | grep '\.\.' > /dev/null 2>&1
        if [ $? -eq 0 ]
        then
            _ak_log_error "No '..' allowed"
            exit 1
        fi
        if [ ! -z "$2" ] && [ -n "$2" ]
        then
            cd $AK_SETTINGS
            echo $1 | grep '\.' > /dev/null 2>&1
            if [ $? -ne 0 ]
            then
                _ak_log_error "No ungrouped settings allowed"
                exit 1
            fi
            subset="$(echo $1 | cut -d '.' -f 1)"
            echo "$subset" | grep '[.\-\*/~!@#$%^&*()_=\-\>\<,{}[]]' > /dev/null 2>&1
            if [ $? -eq 0 ]
            then
                _ak_log_error "Names containing symbols are not allowed"
                exit 1
            fi
            if [ ! -d $subset ]
            then
                mkdir $subset
                if [ $? -ne 0 ]
                then
                    _ak_log_error "Could not create $AK_SETTINGS/$subset"
                    exit 1
                fi
            fi
            label="$(echo $1 | cut -d '.' -f 2-)"
            echo "$label" | grep '[.\-\*/~!@#$%^&*()_=\-\>\<,{}[]]' > /dev/null 2>&1
            if [ $? -eq 0 ]
            then
                _ak_log_error "Names containing symbols are not allowed"
                exit 1
            fi
            if [ -f $AK_SETTINGS/$subset/$label ]
            then
                _ak_log_warning "Overwritting $subset.$label:$(cat $AK_SETTINGS/$subset/$label) with $2"
            fi
            printf '%s' "$2" > $AK_SETTINGS/$subset/$label
        else
            _ak_log_error "No value provided for $1"
        fi
    else
        _ak_log_error "No value provided to set"
    fi
}

_ak_settings_get_sub(){
    _ak_not_implemented
}

_ak_settings_get_all(){
    _ak_not_implemented
}