source: trunk/project-meta/project-meta @ 153

Last change on this file since 153 was 153, checked in by g7moreau, 6 years ago
  • Stupid error ; -> ,
  • Property svn:executable set to *
File size: 4.2 KB
Line 
1#!/usr/bin/env perl
2#
3# 2018/01/17 Gabriel Moreau
4
5use strict;
6use warnings;
7
8use File::Copy qw{copy};   
9use YAML::Syck;
10use Getopt::Long();
11use Cwd();
12
13my ($verbose);
14Getopt::Long::GetOptions(
15   'verbose' => \$verbose,
16   );
17
18
19my %CMD_DB = (
20   'help'            => \&cmd_help,
21   'version'         => \&cmd_version,
22   'check'           => \&cmd_check,
23   'make-link'       => \&cmd_make_link,
24   'make-author'     => \&cmd_make_author,
25   'make-licence'    => \&cmd_make_licence,
26   );
27
28################################################################
29# main program
30################################################################
31
32my $cmd = shift @ARGV || 'help';
33if (defined $CMD_DB{$cmd}) {
34   $CMD_DB{$cmd}->(@ARGV);
35   }
36else {
37   print {*STDERR} "project-meta: command $cmd not found\n\n";
38   $CMD_DB{'help'}->();
39   exit 1;
40   }
41
42exit;
43
44################################################################
45# subroutine
46################################################################
47
48################################################################
49# command
50################################################################
51
52sub cmd_help {
53   print <<END;
54NAME
55   $0 - action on project metadata
56
57SYNOPSIS
58   $0 [-verbose] check
59END
60   }
61
62################################################################
63
64sub cmd_version {
65   print "0.01\n";
66   }
67
68################################################################
69
70sub print_ok {
71   my ($key, $test) = @_;
72   
73   printf "%-35s : %s\n", $key, $test ? 'yes' : 'no';
74   }
75
76################################################################
77
78sub cmd_check {
79   my $meta = YAML::Syck::LoadFile("PROJECT-META.yml");
80
81   my $acronym     = $meta->{'project'}{'acronym'};
82   my $current_dir = "/fsnet/project/coriolis/2014/14CARR" ; # Cwd::getcwd();
83   my $dap_folder  = $meta->{'public-dap'}{'dap-folder'};
84
85   print_ok 'project/acronym',                  $acronym =~ m{\d\d\w[\w\d_]+};
86   print_ok 'public-dap/dap-folder',            $dap_folder ne '' and $dap_folder =~ m{^/};
87   print_ok 'dap-folder not match current_dir', $dap_folder !~ m{$current_dir};
88
89   #print YAML::Syck::Dump($meta);
90   }
91
92################################################################
93
94sub addfolder2list {
95   my ($folderdb, $folder) = @_;
96   
97   $folder =~ s{/[^/]+$}{};
98   $folderdb->{$folder}++;
99
100   addfolder2list($folderdb, $folder) if $folder =~ m{/};
101   }
102
103################################################################
104
105sub cmd_make_link {
106   my $meta = YAML::Syck::LoadFile("PROJECT-META.yml");
107   my $acronym = $meta->{'project'}{'acronym'};
108   my $current_dir = "/fsnet/project/coriolis/2014/14CARR" ; # Cwd::getcwd();
109   my $dap_folder = $meta->{'public-dap'}{'dap-folder'};
110
111   # Create a list of the folder
112   my %folders;
113   for my $dataset (@{$meta->{'public-dap'}{'data-set'}}) {
114      addfolder2list(\%folders, $dataset);
115      }
116
117   print "chmod o+rX,o-w $current_dir\n";
118   for my $folder (sort keys %folders) {
119      print "chmod o+rX,o-w $current_dir/$folder\n";
120      print "mkdir -p $dap_folder/$acronym/$folder\n";
121      }
122
123   for my $dataset (@{$meta->{'public-dap'}{'data-set'}}) {
124      my $folder = $dataset =~ s{/[^/]+$}{}r;
125      print "ln --symbolic --target-directory $dap_folder/$acronym/$folder/ $current_dir/$dataset\n";
126
127   print "chmod -R o+rX,o-w $dap_folder/$acronym/\n";
128      }
129   }
130
131################################################################
132
133sub cmd_make_author {
134   my $meta = YAML::Syck::LoadFile("PROJECT-META.yml");
135   }
136
137################################################################
138
139sub cmd_make_licence {
140   my $meta = YAML::Syck::LoadFile("PROJECT-META.yml");
141
142   my $current_dir = Cwd::getcwd();
143
144   if (-f "$current_dir/LICENCE.txt") {
145      print "Warning: LICENCE.txt already exists\n";
146      return;
147      }
148
149   my $licence = $meta->{'public-dap'}{'data-licence'};
150
151   if (not -f "/usr/share/project-meta/licence.d/$licence.txt") {
152      print "Error: licence $licence doesn't exists in project-meta database\n";
153      exit 1;
154      }
155
156   copy("/usr/share/project-meta/licence.d/$licence.txt", "$current_dir/LICENCE.txt")
157      or die "Error: licence copy failed - $!";
158   return;
159   }
160
161################################################################
Note: See TracBrowser for help on using the repository browser.