Changeset 178


Ignore:
Timestamp:
Jan 20, 2018, 12:05:55 AM (3 years ago)
Author:
g7moreau
Message:
  • Add make-zip method
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/project-meta/project-meta

    r177 r178  
    2626   'check'           => \&cmd_check,
    2727   'make-link'       => \&cmd_make_link,
     28   'make-zip'        => \&cmd_make_zip,
    2829   'make-author'     => \&cmd_make_author,
    2930   'make-licence'    => \&cmd_make_licence,
     
    157158      }
    158159   print "chmod -R o+rX,o-w $dap_folder/$acronym/\n";
     160   }
     161
     162################################################################
     163
     164sub cmd_make_zip {
     165   my $meta = YAML::Syck::LoadFile("PROJECT-META.yml");
     166   my $current_dir = Cwd::getcwd();
     167   my $data_set    = $meta->{'public-dap'}{'data-set'};
     168   my $acronym     = $meta->{'project'}{'acronym'};
     169   my $time = time;
     170
     171   push @{$data_set}, 'AUTHORS.txt', 'COPYRIGHT.txt', 'LICENCE.txt';
     172   {
     173      # Remove doublon
     174      my %seen = ();
     175      @{$data_set} = grep { ! $seen{$_}++ } @{$data_set};
     176      }
     177
     178   # Create a Zip file
     179   use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
     180
     181   my $zip = Archive::Zip->new();
     182
     183   for my $dataset (@{$data_set}) {
     184      if (-d $dataset) {
     185         # Folder case
     186         $zip->addDirectory($dataset);
     187         }
     188      elsif (-f $dataset) {
     189         # File case
     190         $zip->addFile($dataset);
     191         }
     192      else {
     193         # Strange cas
     194         print "Error: entry $dataset doesn't exists\n";
     195         }
     196      }
     197
     198   # Save the Zip file
     199   unless ($zip->writeToFileNamed("$current_dir/$acronym-$time.zip") == AZ_OK) {
     200      die 'Error: zip write error';
     201      }
    159202   }
    160203
Note: See TracChangeset for help on using the changeset viewer.