OSDN Git Service

(no commit message)
[fswiki/fswiki.git] / update.pl
1 #####################################################################\r
2 #\r
3\8ew\92è\93ú\88È\8d~\82É\8dX\90V\82³\82ê\82½\83t\83@\83C\83\8b\82ð\92\8a\8fo\82·\82é\83X\83N\83\8a\83v\83g\r
4 #\r
5 #####################################################################\r
6 use File::Path;\r
7 use File::Copy;\r
8 \r
9 my $date = $ARGV[0];\r
10 my $dir  = $ARGV[1];\r
11 \r
12 if($date eq "" || !($date =~ /^[1-2][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]$/)){\r
13         &print_help();\r
14         exit;\r
15 }\r
16 \r
17 $date =~ s/-//g;\r
18 $date = int($date);\r
19 \r
20 if($dir ne ""){\r
21         if(-e $dir){\r
22                 print "$dir\83f\83B\83\8c\83N\83g\83\8a\82ð\8dí\8f\9c\82µ\82Ü\82·\81B\n";\r
23                 rmtree($dir);\r
24         }\r
25         if(-e "$dir.zip"){\r
26                 print "$dir.zip\82ð\8dí\8f\9c\82µ\82Ü\82·\81B\n";\r
27                 unlink "$dir.zip";\r
28         }\r
29 }\r
30 \r
31 $find_flag = 0;\r
32 &search_dir($date,".",$dir);\r
33 \r
34 if($dir ne ""){\r
35         if($find_flag == 1){\r
36                 print "\88³\8fk\83t\83@\83C\83\8b\82ð\8dì\90¬\82µ\82Ü\82·\81B\n";\r
37                 system("zip $dir.zip -r $dir");\r
38         }\r
39 \r
40 }\r
41 \r
42 #====================================================================\r
43\83w\83\8b\83v\82ð\95\\8e¦\r
44 #====================================================================\r
45 sub print_help {\r
46         print "\8ew\92è\93ú\95t\88È\8d~\82É\8dX\90V\82³\82ê\82½\83t\83@\83C\83\8b\82ð\92\8a\8fo\82µ\81A\83A\81[\83J\83C\83u\82ð\8dì\90¬\82µ\82Ü\82·\81B\n";\r
47         print "\n";\r
48         print "perl update.pl YYYY-MM-DD [\8fo\97Í\90æ\83f\83B\83\8c\83N\83g\83\8a\96¼]\n";\r
49         print "  \83f\83B\83\8c\83N\83g\83\8a\96¼\82ð\8fÈ\97ª\82·\82é\82Æ\8aY\93\96\83t\83@\83C\83\8b\96¼\82ð\89æ\96Ê\82É\95\\8e¦\82µ\82Ä\8fI\97¹\82µ\82Ü\82·\81B\n";\r
50 }\r
51 \r
52 #====================================================================\r
53\83f\83B\83\8c\83N\83g\83\8a\82ð\8c\9f\8dõ\r
54 #====================================================================\r
55 sub search_dir {\r
56         my $date = shift;\r
57         my $dir  = shift;\r
58         my $to   = shift;\r
59         my @list = ();\r
60         \r
61         opendir(DIR,$dir);\r
62         while(my $entry = readdir(DIR)){\r
63                 if(index($entry,".")!=0 && $entry ne "CVS"){\r
64                         if($dir eq "." && ($entry eq "log" || $entry eq "backup" || $entry eq "attach" || $entry eq "pdf")){\r
65                                 \r
66                         } elsif($dir eq "./data" && $entry ne "FrontPage" && $entry ne "Help"){\r
67                                 \r
68                                 \r
69                         } else {\r
70                                 push(@list,"$dir/$entry");\r
71                         }\r
72                 }\r
73         }\r
74         closedir(DIR);\r
75         \r
76         foreach my $entry (@list){\r
77                 if(-d $entry){\r
78                         &search_dir($date,$entry,$to);\r
79                 } else {\r
80                         # \83t\83@\83C\83\8b\82Ì\8dX\90V\8e\9e\8d\8f\82ð\83`\83F\83b\83N\r
81                         my @status = stat($entry);\r
82                         my ($sec,$min,$hour,$mday,$mon,$year)=localtime($status[9]);\r
83                         my $date_str = sprintf("%04d%02d%02d",$year+1900,$mon+1,$mday);\r
84                         \r
85                         if(int($date_str) >= $date){\r
86                                 print $entry."\n";\r
87                                 # \83f\83B\83\8c\83N\83g\83\8a\82ª\8ew\92è\82³\82ê\82Ä\82¢\82ê\82Î\83f\83B\83\8c\83N\83g\83\8a\82É\83R\83s\81[\r
88                                 if($to ne ""){\r
89                                         # \82¿\82å\82Á\82Æ\82±\82Ì\82Ö\82ñ\83L\83^\83i\83C\81E\81E\81E\r
90                                         my $path = $dir;\r
91                                         $path =~ s/^\.//;\r
92                                         my $copydir = "$to$path";\r
93                                         unless(-e $copydir){\r
94                                                 mkpath($copydir) or die "$copydir\82Ì\8dì\90¬\82É\8e¸\94s\82µ\82Ü\82µ\82½\81B";\r
95                                         }\r
96                                         \r
97                                         my $name = $entry;\r
98                                         $name =~ s/^(.*?\/)*//g;\r
99                                         copy($entry,"$copydir/$name") or die "$copydir/$name\82Ì\83R\83s\81[\82É\8e¸\94s\82µ\82Ü\82µ\82½\81B";\r
100                                         \r
101                                         $find_flag = 1;\r
102                                 }\r
103                         }\r
104                 }\r
105         }\r
106 }\r