|
|
@@ -1,3 +1,5 @@
|
|
|
+using Invercargill.Mapping;
|
|
|
+
|
|
|
namespace Usm {
|
|
|
|
|
|
public class Paths {
|
|
|
@@ -10,7 +12,6 @@ namespace Usm {
|
|
|
public string data { get; set; }
|
|
|
public string info { get; set; }
|
|
|
public string lib { get; set; }
|
|
|
- public string altlib { get; set; }
|
|
|
public string canonlib { get; set; }
|
|
|
public string man { get; set; }
|
|
|
public string libexec { get; set; }
|
|
|
@@ -31,7 +32,6 @@ namespace Usm {
|
|
|
Environment.set_variable("DATADIR", Paths.ensure_trailing_slash(data), true);
|
|
|
Environment.set_variable("INFODIR", Paths.ensure_trailing_slash(info), true);
|
|
|
Environment.set_variable("LIBDIR", Paths.ensure_trailing_slash(lib), true);
|
|
|
- Environment.set_variable("ALTLIBDIR", Paths.ensure_trailing_slash(altlib), true);
|
|
|
Environment.set_variable("CANONLIBDIR", Paths.ensure_trailing_slash(canonlib), true);
|
|
|
Environment.set_variable("MANDIR", Paths.ensure_trailing_slash(man), true);
|
|
|
Environment.set_variable("LIBEXECDIR", Paths.ensure_trailing_slash(libexec), true);
|
|
|
@@ -126,9 +126,8 @@ namespace Usm {
|
|
|
include = "include";
|
|
|
data = "share";
|
|
|
info = "share/info";
|
|
|
- lib = sizeof(void*) == 8 ? "lib64" : "lib";
|
|
|
+ lib = "lib";
|
|
|
canonlib = "lib";
|
|
|
- altlib = "lib";
|
|
|
man = "share/man";
|
|
|
libexec = "libexec";
|
|
|
locale = "share/locale";
|
|
|
@@ -141,28 +140,22 @@ namespace Usm {
|
|
|
usm_config_dir = "/etc/usm";
|
|
|
}
|
|
|
|
|
|
- public Paths.usm_environ() {
|
|
|
- var defaults = new Paths.defaults();
|
|
|
-
|
|
|
- destination = Environment.get_variable("USM_DESTDIR") ?? defaults.destination;
|
|
|
- prefix = Environment.get_variable("USM_PREFIX") ?? defaults.prefix;
|
|
|
- bin = Environment.get_variable("USM_BINDIR") ?? defaults.bin;
|
|
|
- include = Environment.get_variable("USM_INCLUDEDIR") ?? defaults.include;
|
|
|
- data = Environment.get_variable("USM_DATADIR") ?? defaults.data;
|
|
|
- info = Environment.get_variable("USM_INFODIR") ?? defaults.info;
|
|
|
- lib = Environment.get_variable("USM_LIBDIR") ?? defaults.lib;
|
|
|
- altlib = Environment.get_variable("USM_ALTLIBDIR") ?? defaults.altlib;
|
|
|
- canonlib = Environment.get_variable("USM_CANONLIBDIR") ?? defaults.canonlib;
|
|
|
- man = Environment.get_variable("USM_MANDIR") ?? defaults.man;
|
|
|
- libexec = Environment.get_variable("USM_LIBEXECDIR") ?? defaults.libexec;
|
|
|
- locale = Environment.get_variable("USM_LOCALEDIR") ?? defaults.locale;
|
|
|
- local_state = Environment.get_variable("USM_LOCALSTATEDIR") ?? defaults.local_state;
|
|
|
- sbin = Environment.get_variable("USM_SBINDIR") ?? defaults.sbin;
|
|
|
- shared_state = Environment.get_variable("USM_SHAREDSTATEDIR") ?? defaults.shared_state;
|
|
|
- sys_config = Environment.get_variable("USM_SYSCONFIGDIR") ?? defaults.sys_config;
|
|
|
- tags = Environment.get_variable("USM_TAGSDIR") ?? defaults.tags;
|
|
|
-
|
|
|
- usm_config_dir = Environment.get_variable("USM_CONFIGDIR") ?? defaults.usm_config_dir;
|
|
|
+ public Paths.usm_environ(Paths? defaults = null) {
|
|
|
+ var fallback = defaults ?? new Paths.defaults();
|
|
|
+ override_from_environment(fallback);
|
|
|
+ }
|
|
|
+
|
|
|
+ private Paths.empty() {}
|
|
|
+
|
|
|
+ public Paths() {
|
|
|
+ var provisional_paths = new Paths.usm_environ();
|
|
|
+ try {
|
|
|
+ var config = new Configuration.from_paths(provisional_paths);
|
|
|
+ override_from_environment(config.paths);
|
|
|
+ }
|
|
|
+ catch {
|
|
|
+ override_from_environment(provisional_paths);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public Paths clone() {
|
|
|
@@ -174,7 +167,6 @@ namespace Usm {
|
|
|
data = data,
|
|
|
info = info,
|
|
|
lib = lib,
|
|
|
- altlib = altlib,
|
|
|
canonlib = canonlib,
|
|
|
man = man,
|
|
|
libexec = libexec,
|
|
|
@@ -187,6 +179,63 @@ namespace Usm {
|
|
|
usm_config_dir = usm_config_dir,
|
|
|
};
|
|
|
}
|
|
|
+
|
|
|
+ private void override_from_environment(Paths fallback) {
|
|
|
+ destination = Environment.get_variable("USM_DESTDIR") ?? fallback.destination;
|
|
|
+ prefix = Environment.get_variable("USM_PREFIX") ?? fallback.prefix;
|
|
|
+ bin = Environment.get_variable("USM_BINDIR") ?? fallback.bin;
|
|
|
+ include = Environment.get_variable("USM_INCLUDEDIR") ?? fallback.include;
|
|
|
+ data = Environment.get_variable("USM_DATADIR") ?? fallback.data;
|
|
|
+ info = Environment.get_variable("USM_INFODIR") ?? fallback.info;
|
|
|
+ lib = Environment.get_variable("USM_LIBDIR") ?? fallback.lib;
|
|
|
+ canonlib = Environment.get_variable("USM_CANONLIBDIR") ?? fallback.canonlib;
|
|
|
+ man = Environment.get_variable("USM_MANDIR") ?? fallback.man;
|
|
|
+ libexec = Environment.get_variable("USM_LIBEXECDIR") ?? fallback.libexec;
|
|
|
+ locale = Environment.get_variable("USM_LOCALEDIR") ?? fallback.locale;
|
|
|
+ local_state = Environment.get_variable("USM_LOCALSTATEDIR") ?? fallback.local_state;
|
|
|
+ sbin = Environment.get_variable("USM_SBINDIR") ?? fallback.sbin;
|
|
|
+ shared_state = Environment.get_variable("USM_SHAREDSTATEDIR") ?? fallback.shared_state;
|
|
|
+ sys_config = Environment.get_variable("USM_SYSCONFIGDIR") ?? fallback.sys_config;
|
|
|
+ tags = Environment.get_variable("USM_TAGSDIR") ?? fallback.tags;
|
|
|
+ usm_config_dir = Environment.get_variable("USM_CONFIGDIR") ?? fallback.usm_config_dir;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static PropertyMapper<Paths> get_mapper() {
|
|
|
+ var defaults = new Paths.defaults();
|
|
|
+ return new PropertyMapperBuilder<Paths>()
|
|
|
+ .map<string?>("prefix", o => o.prefix, (o, v) => o.prefix = v)
|
|
|
+ .when_undefined(o => o.prefix = defaults.prefix)
|
|
|
+ .map<string?>("bin", o => o.bin, (o, v) => o.bin = v)
|
|
|
+ .when_undefined(o => o.bin = defaults.bin)
|
|
|
+ .map<string?>("include", o => o.include, (o, v) => o.include = v)
|
|
|
+ .when_undefined(o => o.include = defaults.include)
|
|
|
+ .map<string?>("data", o => o.data, (o, v) => o.data = v)
|
|
|
+ .when_undefined(o => o.data = defaults.data)
|
|
|
+ .map<string?>("info", o => o.info, (o, v) => o.info = v)
|
|
|
+ .when_undefined(o => o.info = defaults.info)
|
|
|
+ .map<string?>("lib", o => o.lib, (o, v) => o.lib = v)
|
|
|
+ .when_undefined(o => o.lib = defaults.lib)
|
|
|
+ .map<string?>("canonlib", o => o.canonlib, (o, v) => o.canonlib = v)
|
|
|
+ .when_undefined(o => o.canonlib = defaults.canonlib)
|
|
|
+ .map<string?>("man", o => o.man, (o, v) => o.man = v)
|
|
|
+ .when_undefined(o => o.man = defaults.man)
|
|
|
+ .map<string?>("libexec", o => o.libexec, (o, v) => o.libexec = v)
|
|
|
+ .when_undefined(o => o.libexec = defaults.libexec)
|
|
|
+ .map<string?>("locale", o => o.locale, (o, v) => o.locale = v)
|
|
|
+ .when_undefined(o => o.locale = defaults.locale)
|
|
|
+ .map<string?>("localState", o => o.local_state, (o, v) => o.local_state = v)
|
|
|
+ .when_undefined(o => o.local_state = defaults.local_state)
|
|
|
+ .map<string?>("sbin", o => o.sbin, (o, v) => o.sbin = v)
|
|
|
+ .when_undefined(o => o.sbin = defaults.sbin)
|
|
|
+ .map<string?>("sharedState", o => o.shared_state, (o, v) => o.shared_state = v)
|
|
|
+ .when_undefined(o => o.shared_state = defaults.shared_state)
|
|
|
+ .map<string?>("sysConfig", o => o.sys_config, (o, v) => o.sys_config = v)
|
|
|
+ .when_undefined(o => o.sys_config = defaults.sys_config)
|
|
|
+ .map<string?>("tags", o => o.tags, (o, v) => o.tags = v)
|
|
|
+ .when_undefined(o => o.tags = defaults.tags)
|
|
|
+ .set_constructor(() => new Paths.empty())
|
|
|
+ .build();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|