diff options
author | Holger Cremer <HolgerCremer@gmail.com> | 2015-06-11 20:47:03 +0200 |
---|---|---|
committer | Holger Cremer <HolgerCremer@gmail.com> | 2015-06-12 19:31:23 +0200 |
commit | 9d61f22844bdfcbe983976aaf5176d08e741a6de (patch) | |
tree | 8cb3f04507eda40c902337ee40dfc8c044007781 /src/cli | |
parent | 609f72b68df7d8c5a029d5faf1867ef68a5ff6ef (diff) | |
download | serial-barcode-scanner-9d61f22844bdfcbe983976aaf5176d08e741a6de.tar.bz2 |
a simple cli interface to send barcodes
Diffstat (limited to 'src/cli')
-rw-r--r-- | src/cli/.gitignore | 1 | ||||
-rw-r--r-- | src/cli/Makefile | 11 | ||||
-rw-r--r-- | src/cli/cli-interface.vala | 19 | ||||
-rw-r--r-- | src/cli/cli.vala | 28 | ||||
-rw-r--r-- | src/cli/main.vala | 65 |
5 files changed, 124 insertions, 0 deletions
diff --git a/src/cli/.gitignore b/src/cli/.gitignore new file mode 100644 index 0000000..573c0c4 --- /dev/null +++ b/src/cli/.gitignore @@ -0,0 +1 @@ +cli diff --git a/src/cli/Makefile b/src/cli/Makefile new file mode 100644 index 0000000..f042ca8 --- /dev/null +++ b/src/cli/Makefile @@ -0,0 +1,11 @@ +all: cli + @echo > /dev/null + +cli: main.vala cli.vala cli-interface.vala ../config/config-interface.vala + valac -X -w -o $@ --pkg linux --pkg posix --pkg gio-2.0 $^ + + +clean: + rm -rf cli + +.PHONY: all clean diff --git a/src/cli/cli-interface.vala b/src/cli/cli-interface.vala new file mode 100644 index 0000000..879ad27 --- /dev/null +++ b/src/cli/cli-interface.vala @@ -0,0 +1,19 @@ +/* Copyright 2015, Holger Cremer <HolgerCremer@gmail.com> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +[DBus (name = "io.mainframe.shopsystem.Cli")] +public interface Cli : Object { + public abstract signal void received_barcode(string barcode); +} diff --git a/src/cli/cli.vala b/src/cli/cli.vala new file mode 100644 index 0000000..bc6fe9d --- /dev/null +++ b/src/cli/cli.vala @@ -0,0 +1,28 @@ +/* Copyright 2015, Holger Cremer <HolgerCremer@gmail.com> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +[DBus (name = "io.mainframe.shopsystem.Cli")] +public class CliImpl { + + public signal void received_barcode(string barcode); + + public CliImpl() { + } + + public void send(string msg) { + stdout.printf("Sending: %s\n", msg); + received_barcode(msg); + } +} diff --git a/src/cli/main.vala b/src/cli/main.vala new file mode 100644 index 0000000..a85cbc7 --- /dev/null +++ b/src/cli/main.vala @@ -0,0 +1,65 @@ +/* Copyright 2015, Holger Cremer <HolgerCremer@gmail.com> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +CliImpl cli; +MainLoop ml; +string[] commands; + +public static int main(string[] args) { + if (args.length == 1) { + stdout.printf("Nothing to send.\nUsage: %s <commnds to send...>\nExample: %s \"USER 1\" \"LOGOUT\"\n", args[0], args[0]); + return 0; + } + commands = args[1:args.length]; + + cli = new CliImpl(); + Bus.own_name( + BusType.SESSION, + "io.mainframe.shopsystem.Cli", + BusNameOwnerFlags.NONE, + on_bus_aquired, + on_name_aquired, + () => stderr.printf("Could not aquire name\n")); + + ml = new MainLoop(); + + ml.run(); + + return 0; +} + +void on_name_aquired() { + foreach (string cmd in commands) { + cli.send(cmd); + } + + // wait a minimal amount of time, to ensure the event was sent + TimeoutSource time = new TimeoutSource (100); + time.set_callback (() => { + ml.quit (); + return false; + }); + time.attach (ml.get_context ()); + +} + +void on_bus_aquired(DBusConnection con) { + try { + con.register_object("/io/mainframe/shopsystem/cli", cli); + } catch(IOError e) { + stderr.printf("Could not register service\n"); + } + +}
\ No newline at end of file |