]> mj.ucw.cz Git - bex.git/commitdiff
"bex mach" can be asked for a set of machines
authorMartin Mares <mj@ucw.cz>
Thu, 11 Jul 2019 12:34:51 +0000 (14:34 +0200)
committerMartin Mares <mj@ucw.cz>
Thu, 11 Jul 2019 12:34:51 +0000 (14:34 +0200)
I changed the default: when called with no arguments, it prints all
known machines. Groups are printed only when asked for.

lib/bin/bex-mach

index 7301fa9d78095e02dcc5188c19ba2b94c89a2d81..d21234919947aae5906396194d395aaab8f50536 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 # Batch EXecutor -- List Machines and Groups
 #!/usr/bin/perl
 # Batch EXecutor -- List Machines and Groups
-# (c) 2011-2012 Martin Mares <mj@ucw.cz>
+# (c) 2011-2019 Martin Mares <mj@ucw.cz>
 
 use strict;
 use warnings;
 
 use strict;
 use warnings;
@@ -12,37 +12,48 @@ my $queue_name;
 
 sub usage() {
        print <<AMEN ;
 
 sub usage() {
        print <<AMEN ;
-Usage: bex mach [<options>]
+Usage: bex mach [<options>] [[!]<machine-or-group> ...]
 
 Options:
 
 Options:
+--groups       List groups instead of machines
 None defined so far.
 AMEN
        exit 0;
 }
 
 None defined so far.
 AMEN
        exit 0;
 }
 
+my $groups;
+
 GetOptions(
        "help" => \&usage,
 GetOptions(
        "help" => \&usage,
-) && @ARGV == 0 or die "Try `bex mach --help' for more information.\n";
+       "groups!" => \$groups,
+) or die "Try `bex mach --help' for more information.\n";
 
 my $machines = \%BEX::Config::machines;
 
 
 my $machines = \%BEX::Config::machines;
 
-print "# Hosts:\n";
-for my $h (sort keys %$machines) {
-       my $m = $machines->{$h};
-       ref $m eq 'HASH' or next;
-       print "$h\n";
-}
+if ($groups) {
+       !@ARGV or die "bex mach --groups accepts no positional arguments.\n";
+       for my $h (sort keys %$machines) {
+               my $m = $machines->{$h};
+               ref $m eq 'ARRAY' or next;
+               print "$h = ", join(" ",
+                       map {
+                               my $x = $machines->{$_};
+                               !defined($x) ? "$_?" :
+                               ref $x eq 'HASH' ? $_ :
+                               ref $x eq 'ARRAY' ? "\@$_" :
+                               "$_???"
+                       } @$m), "\n";
+       }
+} elsif (@ARGV) {
+       my @machines = BEX::Config::parse_machine_list(@ARGV);
+       for my $m (sort @machines) {
+               print "$m\n";
+       }
+} else {
+       for my $h (sort keys %$machines) {
+               my $m = $machines->{$h};
+               ref $m eq 'HASH' or next;
+               print "$h\n";
+       }
 
 
-print "\n# Groups:\n";
-for my $h (sort keys %$machines) {
-       my $m = $machines->{$h};
-       ref $m eq 'ARRAY' or next;
-       print "$h = ", join(" ",
-               map {
-                       my $x = $machines->{$_};
-                       !defined($x) ? "$_?" :
-                       ref $x eq 'HASH' ? $_ :
-                       ref $x eq 'ARRAY' ? "\@$_" :
-                       "$_???"
-               } @$m), "\n";
 }
 }