summaryrefslogtreecommitdiff
path: root/src/tmate/config.vala
blob: 8957d0263b40f343e25e42d377a5ce88f6e80f31 (plain) (blame)
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
namespace Tmate
{
	[SingleInstance]
	class Config : Object
	{
			private static HashTable<string, string> cfg;
			construct {
				cfg = new HashTable<string, string>(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;
			}
	}
}