updated git and svn scripts
[xrzperl.git] / zim-add-directory
bloba331b4dac5e5bb3033d5ddee11e9a6d6d3246b71
1 #!/usr/bin/perl -w
2 ###APPNAME: zim-add-directory
3 ###APPAUTHOR: duel
4 ###APPDATE: 2008-05-11 14:27:04
5 ###APPVER: 0.1
6 ###APPDESC: add a directory entry to a zim txt file
7 ###APPUSAGE: [--test] (directory) [level]
8 #[entry Name] [entry Description] [destination]
9 ###APPEXAMPLE: zim-add-directory Test .test abc.txt
10 ###APPOPTION: --test:No writing will be made
11 use strict;
13 #ENV variable MUST be defined somewhere,
14 #FOR perl to search modules from,
15 #OR nothing will work
16 use Cwd;
17 use lib $ENV{XR_PERL_MODULE_DIR};
19 use MyPlace::Script::Usage qw/help_required help_even_empty/;
20 exit 0 if(help_even_empty($0,@ARGV));
22 my $test=0;
24 if($ARGV[0] eq "--test") {
25 $test=1;
26 shift;
28 my ($root_d,$level) = @ARGV;
30 #my ($edir,$ename,$edesc,$dist) = @ARGV;
31 #my $eloc;
32 sub tee($) {
33 my $str=shift;
34 print STDERR "\t$str";
35 return $str;
38 #unless($ename) {
39 # $ename = $edir;
40 # $ename =~ s/\/$//g;
41 # $ename =~ s/^.*\///g;
44 #unless($eloc) {
45 # $eloc = $ename;
46 ## $eloc =~ s/[ ,\+ ~×]/_/g;
47 # $eloc = ".$eloc";
50 #unless($dist) {
51 # $dist=$ENV{PWD};
52 # $dist =~ s/\/?$/.txt/;
55 sub error_chdir($) {
56 my $dir=shift;
57 warn "Can't change to $dir!\n";
60 sub writeDirectory($) {
61 $level--;
62 my $edir=shift;
63 my $ename = $edir;
64 $ename =~ s/\/$//g;
65 $ename =~ s/^.*\///g;
66 my @files;
67 my @dirs;
69 my $olddir=cwd();
70 chdir($edir) or return(error_chdir($edir));
71 foreach my $file (glob("*")) {
72 next if($file eq ".");
73 next if($file eq "..");
74 if(-d $file && $level>=0) {
75 push @dirs,$file;
77 else {
78 next unless($file =~ /\.txt$/);
79 $file =~ s/\.txt$//;
80 next if(-d $file);
81 push @files,$file;
84 if(@files or @dirs) {
85 chdir($olddir) or return(error_chdir($olddir));
86 print STDERR "Writing $edir.txt...\n";
87 if($test) {
88 open FO,">","/dev/null";
90 else {
91 open FO,">","$edir.txt";
93 print FO tee("=" x 6 . " " . $ename . " " . "=" x 6 . "\n");
94 print FO tee(scalar(localtime()) . "\n\n");
95 if(@files) {
96 print FO tee("File list:\n");
97 foreach my $file(@files) {
98 print FO tee("* [[.$file|$file]]\n");
100 print FO tee("\n");
102 if(@dirs) {
103 print FO tee("Directory list:\n");
104 foreach my $dir(@dirs) {
105 print FO tee("* [[.$dir|<$dir>]]\n");
108 close FO;
109 if(@dirs) {
110 chdir($edir) or return(error_chdir($edir));
111 foreach(@dirs) {
112 &writeDirectory($_);
116 chdir($olddir) or return(error_chdir($olddir));
119 &writeDirectory($root_d);