Преглед изворни кода

Common command interface for CLI use

Zachary Kotlarek пре 14 година
родитељ
комит
87837ce884
1 измењених фајлова са 42 додато и 0 уклоњено
  1. 42 0
      serial/cmd.pl

+ 42 - 0
serial/cmd.pl

@@ -0,0 +1,42 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use IO::Socket::UNIX;
+use POSIX qw(ceil floor);
+
+# App config
+my $TIMEOUT  = 5;
+my $TEMP_DIR = `getconf DARWIN_USER_TEMP_DIR`;
+chomp($TEMP_DIR);
+my $DATA_DIR = $TEMP_DIR . 'plexMonitor/';
+
+# Debug
+my $DEBUG = 0;
+if ($ENV{'DEBUG'}) {
+	$DEBUG = 1;
+}
+
+# Command-line parameters
+my ($DEV, $CMD) = @ARGV;
+my $CMD_FILE = $DATA_DIR . $DEV . '.socket';
+
+# Sanity check
+if (!-d $DATA_DIR || !-S $CMD_FILE) {
+	die("Bad config\n");
+}
+
+# Socket init
+my $sock = IO::Socket::UNIX->new(
+	'Peer'    => $CMD_FILE,
+	'Type'    => SOCK_DGRAM,
+	'Timeout' => $TIMEOUT
+) or die('Unable to open socket: ' . $CMD_FILE . ": ${@}\n");
+
+# Send the command
+$sock->send($CMD)
+  or die('Unable to write command to socket: ' . $CMD_FILE . ': ' . $CMD . ": ${!}\n");
+
+# Cleanup
+$sock->close();
+undef($sock);
+exit(0);