summaryrefslogtreecommitdiffstats
path: root/src/cli
diff options
context:
space:
mode:
authorHolger Cremer <HolgerCremer@gmail.com>2015-06-11 20:47:03 +0200
committerHolger Cremer <HolgerCremer@gmail.com>2015-06-12 19:31:23 +0200
commit9d61f22844bdfcbe983976aaf5176d08e741a6de (patch)
tree8cb3f04507eda40c902337ee40dfc8c044007781 /src/cli
parent609f72b68df7d8c5a029d5faf1867ef68a5ff6ef (diff)
downloadserial-barcode-scanner-9d61f22844bdfcbe983976aaf5176d08e741a6de.tar.bz2
a simple cli interface to send barcodes
Diffstat (limited to 'src/cli')
-rw-r--r--src/cli/.gitignore1
-rw-r--r--src/cli/Makefile11
-rw-r--r--src/cli/cli-interface.vala19
-rw-r--r--src/cli/cli.vala28
-rw-r--r--src/cli/main.vala65
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