updated git and svn scripts
[xrzperl.git] / makezbook
blob42f0df214e61824b866611869f81654365abc850
1 #!/usr/bin/perl -w
2 ###APPNAME: makezbook
3 ###APPAUTHOR: xiaoranzzz
4 ###APPDATE: Wed Oct 17 07:51:57 2007
5 ###APPVER: 0.1
6 ###APPDESC: Packup a folder as a zip file,with pathname excluded.
7 ###APPUSAGE: [OPTIONS] (Directories...)
8 ###APPOPTION: -m [0-9]:Compress Level|-d:Delete directory after successful zipped|-e:Ext Name
9 ###APPEXAMPLE: makezbook -d -m9 -e .zbook music/ pictures/\n\tmakezbook music/ pictures
10 use strict;
11 use Getopt::Std;
12 use File::Glob qw/bsd_glob/;
13 use lib $ENV{XR_PERL_MODULE_DIR};
14 use MyPlace::Script::Usage qw/help_even_empty format_help/;
16 exit 0 if(help_even_empty($0,@ARGV));
18 my $OptFlag='hdm:e:';
19 my %OPT;
20 exit(format_help $0) unless(getopts($OptFlag,\%OPT));
22 my $lvl = $OPT{m};
23 $lvl = 5 if((!defined $lvl) or $lvl<0 or $lvl>9);
24 my $do_unlink = $OPT{d} ? 1 : 0;
25 my $ext = $OPT{e} ? $OPT{e} : ".zbook";
26 my @dirs;
27 foreach(@ARGV) {
28 foreach(bsd_glob($_)) {
29 if(-d $_) {
30 push(@dirs,$_);
31 next;
33 print STDERR ("\"$_\" Ingored\n");
36 die("Nothing to do\n") unless(@dirs);
38 my $USER=$ENV{USER} || "xiaoranzzz";
39 my $HOSTNAME=`hostname` || "myplace.hell";
40 my $MACHINE=`uname -omsr` || "Windows";
41 my $DATE = localtime;
42 my $COMMENT="Creator : $USER\n" .
43 "Host : $HOSTNAME" .
44 "Machine : $MACHINE" .
45 "Date : $DATE";
47 my $ZIPPROGRAM="zip -Xrz";
49 sub resetLine {
50 print "\r" . " "x50;
51 print "\r";
53 sub dosys {
54 return system(@_);
57 use Cwd qw/cwd/;
58 use File::Spec::Functions;
60 my $pwd=cwd();
63 foreach my $idx(0 .. $#dirs) {
64 my $src = $dirs[$idx];
65 $src =~ s/[\/\\]+$//;
66 chdir($pwd) or die("$!\n");
67 my $bookname=$src;
68 $bookname =~ s/[\/\\]$|^.*[\/\\]//g;
69 my $bn = $bookname . $ext;
70 my $fn= File::Spec->rel2abs($src,$pwd) . $ext;
71 my $comment="Filename : $bn\n" . $COMMENT;
72 print("$src->$bn\n$comment");
73 if(!chdir($src)) {print STDERR ("$!\n");next;}
74 # foreach my $cs2w(bsd_glob("cs2w_*.htm[l]")) {
75 # local ($/, *FH);
76 # open(FH,$cs2w) or next;
77 # my $text = <FH>;
78 # close FH;
79 # print STDERR "Processing $cs2w...\n";
80 # $text =~ s/\bBOOKNAME\b/$bookname/g;
81 # open FH,">",$cs2w or next;
82 # print FH $text;
83 # close FH;
84 # }
86 open ZIPP,"|-","$ZIPPROGRAM -$lvl \"$fn\" ." or die("$!\n");
87 print ZIPP ($comment);
88 close ZIPP;
90 if(-f $fn) {
91 resetLine;
92 print("[",$idx+1,"/",$#dirs+1,"] \"$src\"->\"$bn\" [Done]\n");
93 if($do_unlink) {
94 chdir($pwd);
95 print("Deleting \"$src\" ...");
96 if(dosys("rm","-fdr","--",$src)==0) {
97 resetLine;
98 print("Deleting \"$src\" [OK]\n");
100 else {
101 resetLine;
102 print("Deleting \"$src\" [Failed]\n");
106 else {
107 resetLine;
108 print("\"$src\"->\"$bn\" [Failed]\n");