debug.pl 951 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. # Always debug
  5. BEGIN { $ENV{'DEBUG'} = 1; }
  6. # Local modules
  7. use Cwd qw(abs_path);
  8. use File::Basename qw(dirname);
  9. use lib dirname(abs_path($0));
  10. use DMX;
  11. # User config
  12. my %DIM = ();
  13. my $DELAY = 10;
  14. # App config
  15. my $DATA_DIR = DMX::dataDir();
  16. my $STATE_SOCK = $DATA_DIR . 'DEBUG.socket';
  17. # Sockets
  18. DMX::stateSocket($STATE_SOCK);
  19. DMX::stateSubscribe($STATE_SOCK);
  20. # Loop forever
  21. my %exists = ();
  22. my %mtime = ();
  23. while (1) {
  24. my $state = DMX::readState($DELAY, \%exists, \%mtime, undef());
  25. if ($state) {
  26. # Find the latest modification timestamp
  27. my $file = undef();
  28. foreach my $key (keys(%mtime)) {
  29. if (!defined($file) || $mtime{$key} > $mtime{$file}) {
  30. $file = $key;
  31. }
  32. }
  33. # Pretty print
  34. my $time = 0;
  35. if (defined($file)) {
  36. $time = $mtime{$file};
  37. } else {
  38. $file = '<NO MTIME DATA>';
  39. }
  40. print STDERR "\tLast update: " . $file . ': ' . localtime($time) . "\n";
  41. }
  42. }