]> mj.ucw.cz Git - bex.git/blob - lib/bin/bex-mach
"bex mach" can be asked for a set of machines
[bex.git] / lib / bin / bex-mach
1 #!/usr/bin/perl
2 # Batch EXecutor -- List Machines and Groups
3 # (c) 2011-2019 Martin Mares <mj@ucw.cz>
4
5 use strict;
6 use warnings;
7 use Getopt::Long;
8 use BEX;
9
10 my $edit;
11 my $queue_name;
12
13 sub usage() {
14         print <<AMEN ;
15 Usage: bex mach [<options>] [[!]<machine-or-group> ...]
16
17 Options:
18 --groups        List groups instead of machines
19 None defined so far.
20 AMEN
21         exit 0;
22 }
23
24 my $groups;
25
26 GetOptions(
27         "help" => \&usage,
28         "groups!" => \$groups,
29 ) or die "Try `bex mach --help' for more information.\n";
30
31 my $machines = \%BEX::Config::machines;
32
33 if ($groups) {
34         !@ARGV or die "bex mach --groups accepts no positional arguments.\n";
35         for my $h (sort keys %$machines) {
36                 my $m = $machines->{$h};
37                 ref $m eq 'ARRAY' or next;
38                 print "$h = ", join(" ",
39                         map {
40                                 my $x = $machines->{$_};
41                                 !defined($x) ? "$_?" :
42                                 ref $x eq 'HASH' ? $_ :
43                                 ref $x eq 'ARRAY' ? "\@$_" :
44                                 "$_???"
45                         } @$m), "\n";
46         }
47 } elsif (@ARGV) {
48         my @machines = BEX::Config::parse_machine_list(@ARGV);
49         for my $m (sort @machines) {
50                 print "$m\n";
51         }
52 } else {
53         for my $h (sort keys %$machines) {
54                 my $m = $machines->{$h};
55                 ref $m eq 'HASH' or next;
56                 print "$h\n";
57         }
58
59 }