123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- #!/usr/bin/perl
-
- use strict;
- use File::Basename;
- use Data::Dumper;
- use warnings;
-
- my $path = dirname($0);
-
- my %conf = (
- 'jimc' => "jimc.jnlp",
- 'regions' => "$path/regions",
- 'deployconf' => "$ENV{HOME}/.jimc",
- 'defaults' => "$path/defaults",
- );
-
- my $regions_list = list_regions();
- my $selected_region = select_region($regions_list);
- print "REGION: $selected_region\n";
- deploy_region($selected_region);
- start_jimc($selected_region);
-
- print "NOTE: Close JIMC before saving the region!\n";
- print "Do you want to save the region? [y/N] ";
- my $sel = <STDIN>;
- if ( defined $sel && $sel =~/[yY]/ ) {
- save_region($selected_region);
- print "Region $selected_region saved\n";
- }
- print "Done\n";
-
-
-
- sub list_regions {
- my %r;
- opendir(DIR,$conf{regions}) || die "directory $conf{regions} does not exist";
- while(readdir DIR) {
- next if /^\./;
- my $dir = $_;
- opendir(DIR2,$conf{regions}.'/'.$dir) || next;
- while(readdir DIR2) {
- next if /^\./;
- my $file = $_;
- push @{$r{$dir}}, $file;
- }
- closedir(DIR2);
- }
- closedir(DIR);
- return \%r;
- }
-
- sub select_region {
- my($regions) = @_;
-
- my $select;
- my $region;
-
- while(1) {
-
- print "=============================================================================\n";
- print "== SELECT REGION TO START ==\n";
- print "=============================================================================\n";
- my @idx;
- foreach my $r ( sort keys %{$regions} ) {
- push @idx, $r;
- printf("== %s) %s\n", scalar(@idx), $r);
- }
- print "=============================================================================\n";
- print "Which region do you want to start? : ";
- my $select = <STDIN>;
- chomp $select;
-
- if ( defined $select && $select =~ /^\d+$/ && defined $idx[$select-1] ) {
- $region = $idx[$select-1];
- last;
- }
- }
-
- return $region;
- }
-
- sub deploy_region {
- my($region) = @_;
-
- system("rm -f $conf{deployconf}/*");
- system("cp $conf{defaults}/* $conf{deployconf}/");
- system("cp $conf{regions}/$region/* $conf{deployconf}/");
- }
-
- sub start_jimc {
- my($region) = @_;
-
- my $jimc = "$conf{regions}/$region/$conf{jimc}" ?
- "$conf{regions}/$region/$conf{jimc}" : "$conf{defaults}/$conf{jimc}";
-
- system("open $jimc");
- }
-
- sub save_region {
- my($region) = @_;
-
- opendir(CONF,$conf{deployconf}) || die "failed to open jimc config dir $conf{deployconf}";
- while(readdir CONF) {
- next if /^\./;
- my $file = $_;
-
- if ( -r "$conf{regions}/$region/$file" ) {
- print "Copying $file to region $region\n";
- system("cp $conf{deployconf}/$file $conf{regions}/$region/$file");
- }
- }
- closedir(CONF);
- }
-
- sub file_ts {
- my($file) = @_;
-
- if ( -r $file ) {
- my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat($file);
- return $mtime > $ctime ? $mtime : $ctime;
- }
- return 0;
- }
|