diff options
author | Aylur <[email protected]> | 2024-11-05 21:23:38 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2024-11-05 21:23:38 +0100 |
commit | ca6a37c98a784bcb652ebe3737c906274c0ff1ab (patch) | |
tree | 62d4ab53ce3f47a6927d47b5b1faeae1ef6baed7 /lib/greet/cli.vala | |
parent | 8c6d2185a68e9f09d6780284d1b61fcfaefa655b (diff) | |
parent | 524030ae79f5cffafef3ef09036064070e814879 (diff) |
Merge pull request #66 from Aylur/feat/greetd
feat: greetd ipc client
Diffstat (limited to 'lib/greet/cli.vala')
-rw-r--r-- | lib/greet/cli.vala | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/lib/greet/cli.vala b/lib/greet/cli.vala new file mode 100644 index 0000000..946ec72 --- /dev/null +++ b/lib/greet/cli.vala @@ -0,0 +1,72 @@ +static bool help; +static bool version; +static string username; +static string password; +static string cmd; +[CCode (array_length = false, array_null_terminated = true)] +static string[] env; + +const OptionEntry[] options = { + { "version", 'v', OptionFlags.NONE, OptionArg.NONE, ref version, null, null }, + { "help", 'h', OptionFlags.NONE, OptionArg.NONE, ref help, null, null }, + { "username", 'u', OptionFlags.NONE, OptionArg.STRING, ref username, null, null }, + { "password", 'p', OptionFlags.NONE, OptionArg.STRING, ref password, null, null }, + { "cmd", 'c', OptionFlags.NONE, OptionArg.STRING, ref cmd, null, null }, + { "env", 'e', OptionFlags.NONE, OptionArg.STRING_ARRAY, ref env, null, null }, + { null }, +}; + +async int main(string[] argv) { + try { + var opts = new OptionContext(); + opts.add_main_entries(options, null); + opts.set_help_enabled(false); + opts.set_ignore_unknown_options(false); + opts.parse(ref argv); + } catch (OptionError err) { + printerr (err.message); + return 1; + } + + if (help) { + print("Usage:\n"); + print(" %s [flags]\n\n", argv[0]); + print("Flags:\n"); + print(" -h, --help Print this help and exit\n"); + print(" -v, --version Print version number and exit\n"); + print(" -u, --username User to login to\n"); + print(" -p, --password Password of the user\n"); + print(" -c, --cmd Command to start the session with\n"); + print(" -e, --env Additional env vars to set for the session\n"); + return 0; + } + + if (version) { + printerr(AstalGreet.VERSION); + return 0; + } + + if (username == null) { + printerr("missing username\n"); + return 1; + } + + if (password == null) { + printerr("missing password\n"); + return 1; + } + + if (cmd == null) { + printerr("missing cmd\n"); + return 1; + } + + try { + yield AstalGreet.login_with_env(username, password, cmd, env); + } catch (Error err) { + printerr(err.message); + return 1; + } + + return 0; +} |