-
Notifications
You must be signed in to change notification settings - Fork 12
/
Config.rakumod
46 lines (37 loc) · 1.07 KB
/
Config.rakumod
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
unit module Fez::Util::Config;
use Fez::Util::Json;
state $ENV-CONFIG-PATH = (%*ENV<FEZ_CONFIG>//%?RESOURCES<config.json>).IO;
state $USER-CONFIG-PATH = (
if $*DISTRO.is-win {
%*ENV<FEZ_CONFIG> //
%*ENV<APPDATA>.IO.add('fez').add('fez-config.json')
} else {
%*ENV<FEZ_CONFIG> //
%*ENV<HOME>.IO.add('.fez-config.json')
}
).IO;
$USER-CONFIG-PATH.parent.mkdir unless $USER-CONFIG-PATH.parent.d;
$USER-CONFIG-PATH.spurt(to-j({})) unless $USER-CONFIG-PATH.e;
state %USER-CONFIG;
state %ENV-CONFIG;
sub user-config is export {
%USER-CONFIG;
}
sub env-config is export {
%ENV-CONFIG;
}
sub config-value($name) is export {
%USER-CONFIG{$name} //
%ENV-CONFIG{$name};
}
sub write-to-user-config(%values) is export {
%USER-CONFIG = |%USER-CONFIG, %values;
$USER-CONFIG-PATH.IO.spurt(to-j(%USER-CONFIG));
}
sub user-config-path is export { $USER-CONFIG-PATH; }
sub env-config-path is export { $ENV-CONFIG-PATH; }
sub reload-config is export {
%ENV-CONFIG = from-j($ENV-CONFIG-PATH.slurp);
%USER-CONFIG = from-j($USER-CONFIG-PATH.slurp);
}
reload-config;