Elektra  0.8.26
Plugin: multifile

For some applications it is beneficially to have multiple configuration files. One way to achieve this, is to mount different files for the application.

In some situations we are not able to specify every configuration file with separate mounts because new configuration files might be created any time. Instead we want to include every configuration file matching a given pattern.

The multifile-resolver does so by calling resolver and storage plugins for each file matching a given pattern.

Plugin Configuration

Usage

kdb mount -R multifile -c storage="ini",pattern="*/*.ini",resolver="resolver" /path /mountpoint

kdb mount -R multifile -c storage="ini",pattern="*.ini",recursive=,resolver="resolver" /path /mountpoint

Examples

1 rm -rf ~/.config/multitest || $(exit 0)
2 mkdir -p ~/.config/multitest || $(exit 0)
3 
4 cat > ~/.config/multitest/lo.ini << EOF \
5 [lo]\
6 addr = 127.0.0.1\
7 Link encap = Loopback\
8 EOF
9 
10 cat > ~/.config/multitest/lan.ini << EOF \
11 [eth0]\
12 addr = 192.168.1.216\
13 Link encap = Ethernet\
14 EOF
15 
16 cat > ~/.config/multitest/wlan.ini << EOF \
17 [wlan0]\
18 addr = 192.168.1.125\
19 Link encap = Ethernet\
20 EOF
21 
22 sudo kdb mount -R multifile -c storage="ini",pattern="*.ini",resolver="resolver" multitest user/tests/multifile
23 
24 kdb ls user/tests/multifile
25 #> user/tests/multifile/lan.ini/eth0
26 #> user/tests/multifile/lan.ini/eth0/Link encap
27 #> user/tests/multifile/lan.ini/eth0/addr
28 #> user/tests/multifile/lo.ini/lo
29 #> user/tests/multifile/lo.ini/lo/Link encap
30 #> user/tests/multifile/lo.ini/lo/addr
31 #> user/tests/multifile/wlan.ini/wlan0
32 #> user/tests/multifile/wlan.ini/wlan0/Link encap
33 #> user/tests/multifile/wlan.ini/wlan0/addr
34 
35 kdb set user/tests/multifile/lan.ini/eth0/addr 10.0.0.2
36 
37 kdb get user/tests/multifile/lan.ini/eth0/addr
38 #> 10.0.0.2
39 
40 cat > ~/.config/multitest/test.ini << EOF \
41 [testsection]\
42 key = val\
43 EOF
44 
45 kdb ls user/tests/multifile
46 #> user/tests/multifile/lan.ini/eth0
47 #> user/tests/multifile/lan.ini/eth0/Link encap
48 #> user/tests/multifile/lan.ini/eth0/addr
49 #> user/tests/multifile/lo.ini/lo
50 #> user/tests/multifile/lo.ini/lo/Link encap
51 #> user/tests/multifile/lo.ini/lo/addr
52 #> user/tests/multifile/test.ini/testsection
53 #> user/tests/multifile/test.ini/testsection/key
54 #> user/tests/multifile/wlan.ini/wlan0
55 #> user/tests/multifile/wlan.ini/wlan0/Link encap
56 #> user/tests/multifile/wlan.ini/wlan0/addr
57 
58 kdb rm -r user/tests/multifile/test.ini
59 
60 stat ~/.config/multifile/test.ini
61 # RET:1
62 
63 sudo kdb umount user/tests/multifile

Recursive:

1 rm -rf ~/.config/multitest || $(exit 0)
2 mkdir -p ~/.config/multitest ~/.config/multitest/a/a1/a12 ~/.config/multitest/a/a2/a22 ~/.config/multitest/b/b1|| $(exit 0)
3 
4 echo "a1key = a1val" > ~/.config/multitest/a/a1/a12/testa1.file
5 echo "a2key = a2val" > ~/.config/multitest/a/a2/a22/testa2.file
6 echo "b1key = b1val" > ~/.config/multitest/b/b1/testb1.file
7 
8 sudo kdb mount -R multifile -c storage="ini",pattern="*.file",recursive=,resolver="resolver" multitest user/tests/multifile
9 
10 kdb ls user/tests/multifile
11 #> user/tests/multifile/a/a1/a12/testa1.file/a1key
12 #> user/tests/multifile/a/a2/a22/testa2.file/a2key
13 #> user/tests/multifile/b/b1/testb1.file/b1key
14 
15 rm -rf ~/.config/multitest
16 
17 sudo kdb umount user/tests/multifile

Limitations