namespace Tmate { [SingleInstance] class Config : Object { private static HashTable cfg; construct { cfg = new HashTable(str_hash, str_equal); cfg.insert("server-host", "tty.dev.jadupc.com"); cfg.insert("server-port", "10022"); cfg.insert("server-rsa-fingerprint", "SHA256:QdMBN/QsrS4QyGApxxjt3DZyiysgeRto5YGGjAHRO7g"); cfg.insert("server-ed25519-fingerprint", "SHA256:w/TRuOK0w5qDXNBKdlYlANgZwq3Xg5LSZlBYIwEH8gU"); } public void @delete(string? path) { if (path == null) return; var fcfg = File.new_for_path(path); try { fcfg.delete(); } catch (Error e) { print(@"Error: $(e.message)\n"); } } public new string? @get() { bool failed = false; string cfgpath = ".."; try { FileIOStream scfg; var fcfg = File.new_tmp(".tmate.conf.XXXXXXXXX", out scfg); var cfgout = new DataOutputStream(scfg.output_stream); cfgpath = fcfg.get_path(); cfg.foreach((key, val) => { try { if(! failed) cfgout.put_string(@"set -g tmate-$(key) $(val)\n"); } catch (Error m) { print(@"Error: $(m.message)\n"); failed = true; } }); } catch (Error e) { print(@"Error: $(e.message)\n"); failed = true; } return failed ? null : cfgpath; } } }