annotate pool.pl @ 15:d0692e1c031f

*** empty log message ***
author kono
date Sat, 08 Nov 2008 14:24:55 +0900
parents b55c65241693
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
144819f5d2f6 Initial revision
kono
parents:
diff changeset
1 #!/usr/bin/perl
144819f5d2f6 Initial revision
kono
parents:
diff changeset
2
144819f5d2f6 Initial revision
kono
parents:
diff changeset
3 use Calcon;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
4
144819f5d2f6 Initial revision
kono
parents:
diff changeset
5 use strict;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
6 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK
144819f5d2f6 Initial revision
kono
parents:
diff changeset
7 );
144819f5d2f6 Initial revision
kono
parents:
diff changeset
8
144819f5d2f6 Initial revision
kono
parents:
diff changeset
9 my %input = (
144819f5d2f6 Initial revision
kono
parents:
diff changeset
10 'Zaurus' => 'Calcon::Zaurus_read',
144819f5d2f6 Initial revision
kono
parents:
diff changeset
11 'Backup Zaurus' => 'Calcon::Zaurus_backup_read',
144819f5d2f6 Initial revision
kono
parents:
diff changeset
12 'Xcalendar' => 'Calcon::Xcalendar_read',
144819f5d2f6 Initial revision
kono
parents:
diff changeset
13 'Vcard' => 'Calcon::Vcard_read',
144819f5d2f6 Initial revision
kono
parents:
diff changeset
14 'SLA300' => 'Calcon::Sla300_read',
144819f5d2f6 Initial revision
kono
parents:
diff changeset
15 'iApp' => 'Calcon::iApp_read',
144819f5d2f6 Initial revision
kono
parents:
diff changeset
16 'Entourage' => 'Calcon::Entourage_read',
144819f5d2f6 Initial revision
kono
parents:
diff changeset
17 'File' => 'Calcon::File_read',
144819f5d2f6 Initial revision
kono
parents:
diff changeset
18 );
144819f5d2f6 Initial revision
kono
parents:
diff changeset
19
144819f5d2f6 Initial revision
kono
parents:
diff changeset
20 my %output = (
144819f5d2f6 Initial revision
kono
parents:
diff changeset
21 'Xcalendar' => 'Calcon::Xcalendar_write',
144819f5d2f6 Initial revision
kono
parents:
diff changeset
22 'Vcard' => 'Calcon::Vcard_write',
144819f5d2f6 Initial revision
kono
parents:
diff changeset
23 'SLA300' => 'Calcon::Sla300_write',
144819f5d2f6 Initial revision
kono
parents:
diff changeset
24 'AppleScript' => 'Calcon::iApp_write',
144819f5d2f6 Initial revision
kono
parents:
diff changeset
25 'iApp' => 'Calcon::iApp_write',
9
798ba47e8046 *** empty log message ***
kono
parents: 1
diff changeset
26 'Address Book' => 'Calcon::Vcard_Apple_write',
1
144819f5d2f6 Initial revision
kono
parents:
diff changeset
27 'Entourage' => 'Calcon::Entourage_write',
144819f5d2f6 Initial revision
kono
parents:
diff changeset
28 'Print' => 'Calcon::Print_write',
10
1a68139a269f *** empty log message ***
kono
parents: 9
diff changeset
29 'N702' => 'Calcon::Vcard_N702iD_write',
1
144819f5d2f6 Initial revision
kono
parents:
diff changeset
30 'File' => 'Calcon::File_write',
144819f5d2f6 Initial revision
kono
parents:
diff changeset
31 );
144819f5d2f6 Initial revision
kono
parents:
diff changeset
32
144819f5d2f6 Initial revision
kono
parents:
diff changeset
33
144819f5d2f6 Initial revision
kono
parents:
diff changeset
34 sub find_input {
144819f5d2f6 Initial revision
kono
parents:
diff changeset
35 my ($input) = @_;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
36 my ($obj);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
37
144819f5d2f6 Initial revision
kono
parents:
diff changeset
38 $input =~ s/(\W)/\\$1/g;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
39 foreach my $key ( keys %input) {
144819f5d2f6 Initial revision
kono
parents:
diff changeset
40 if ($key =~ /^$input/i) {
144819f5d2f6 Initial revision
kono
parents:
diff changeset
41 $obj = $input{$key};
144819f5d2f6 Initial revision
kono
parents:
diff changeset
42 last;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
43 }
144819f5d2f6 Initial revision
kono
parents:
diff changeset
44 }
144819f5d2f6 Initial revision
kono
parents:
diff changeset
45 $obj;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
46 }
144819f5d2f6 Initial revision
kono
parents:
diff changeset
47
144819f5d2f6 Initial revision
kono
parents:
diff changeset
48 sub find_output {
144819f5d2f6 Initial revision
kono
parents:
diff changeset
49 my ($output) = @_;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
50 my ($obj);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
51
144819f5d2f6 Initial revision
kono
parents:
diff changeset
52 $output =~ s/(\W)/\\$1/g;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
53 foreach my $key ( keys %output) {
144819f5d2f6 Initial revision
kono
parents:
diff changeset
54 if ($key =~ /^$output/i) {
144819f5d2f6 Initial revision
kono
parents:
diff changeset
55 $obj = $output{$key};
144819f5d2f6 Initial revision
kono
parents:
diff changeset
56 last;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
57 }
144819f5d2f6 Initial revision
kono
parents:
diff changeset
58 }
144819f5d2f6 Initial revision
kono
parents:
diff changeset
59 $obj;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
60 }
144819f5d2f6 Initial revision
kono
parents:
diff changeset
61
144819f5d2f6 Initial revision
kono
parents:
diff changeset
62 &usage if (! @ARGV);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
63
144819f5d2f6 Initial revision
kono
parents:
diff changeset
64 my $mode = "input";
144819f5d2f6 Initial revision
kono
parents:
diff changeset
65 my $type = "file";
144819f5d2f6 Initial revision
kono
parents:
diff changeset
66 my $pool = Calcon::Pool->new();
144819f5d2f6 Initial revision
kono
parents:
diff changeset
67 my $last_flag = 0;
12
b55c65241693 *** empty log message ***
kono
parents: 10
diff changeset
68 my $first_flag = 1;
1
144819f5d2f6 Initial revision
kono
parents:
diff changeset
69
144819f5d2f6 Initial revision
kono
parents:
diff changeset
70 while(my $file = shift( @ARGV )) {
144819f5d2f6 Initial revision
kono
parents:
diff changeset
71 my ($obj,$out,$opt);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
72
144819f5d2f6 Initial revision
kono
parents:
diff changeset
73 if ($file =~ /^-([^-]*)-([^-]*)((-[^-]*)*)/) {
144819f5d2f6 Initial revision
kono
parents:
diff changeset
74 $mode = $1;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
75 $type = $2;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
76 $opt = $3;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
77 $file = shift(@ARGV);
12
b55c65241693 *** empty log message ***
kono
parents: 10
diff changeset
78 $first_flag = 0;
1
144819f5d2f6 Initial revision
kono
parents:
diff changeset
79 } else {
144819f5d2f6 Initial revision
kono
parents:
diff changeset
80 &usage_die();
12
b55c65241693 *** empty log message ***
kono
parents: 10
diff changeset
81
b55c65241693 *** empty log message ***
kono
parents: 10
diff changeset
82 #
b55c65241693 *** empty log message ***
kono
parents: 10
diff changeset
83 # decode を呼び出しても処理は繰り返し行われないらしい
b55c65241693 *** empty log message ***
kono
parents: 10
diff changeset
84 #
b55c65241693 *** empty log message ***
kono
parents: 10
diff changeset
85 # if ($first_flag) {
b55c65241693 *** empty log message ***
kono
parents: 10
diff changeset
86 # &usage_die();
b55c65241693 *** empty log message ***
kono
parents: 10
diff changeset
87 # } else {
b55c65241693 *** empty log message ***
kono
parents: 10
diff changeset
88 # $file = shift(@ARGV);
b55c65241693 *** empty log message ***
kono
parents: 10
diff changeset
89 # }
1
144819f5d2f6 Initial revision
kono
parents:
diff changeset
90 }
144819f5d2f6 Initial revision
kono
parents:
diff changeset
91
144819f5d2f6 Initial revision
kono
parents:
diff changeset
92 if (0 && $#ARGV==1 && $ARGV[0]=~/^-output/) {
144819f5d2f6 Initial revision
kono
parents:
diff changeset
93 # we need not pool interface for this case
144819f5d2f6 Initial revision
kono
parents:
diff changeset
94 # It does not help speed so we abandon it.
144819f5d2f6 Initial revision
kono
parents:
diff changeset
95 print "Simple Case\n";
144819f5d2f6 Initial revision
kono
parents:
diff changeset
96 my $output = $ARGV[1];
144819f5d2f6 Initial revision
kono
parents:
diff changeset
97
144819f5d2f6 Initial revision
kono
parents:
diff changeset
98 $obj = &find_input($type);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
99 $obj = $obj->new($opt);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
100
144819f5d2f6 Initial revision
kono
parents:
diff changeset
101 $ARGV[0] =~ /^-([^-]*)-([^-]*)((-[^-]*)*)/;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
102 $mode = $1;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
103 $type = $2;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
104 $opt = $3;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
105
144819f5d2f6 Initial revision
kono
parents:
diff changeset
106 my $out = &find_output($type);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
107 $out = $out->new($opt,$output);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
108 $obj->set_output($out);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
109 $obj -> decode($file);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
110
144819f5d2f6 Initial revision
kono
parents:
diff changeset
111 $last_flag = 1;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
112 last;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
113 }
144819f5d2f6 Initial revision
kono
parents:
diff changeset
114 # print "$mode $type $opt $file\n";
144819f5d2f6 Initial revision
kono
parents:
diff changeset
115 if ($mode eq 'input') {
144819f5d2f6 Initial revision
kono
parents:
diff changeset
116 $obj = &find_input($type);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
117 $obj = $obj->new($opt);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
118 $obj->set_output($pool);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
119 $obj -> decode($file);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
120 } elsif ($mode eq 'merge') {
144819f5d2f6 Initial revision
kono
parents:
diff changeset
121 $obj = &find_input($type);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
122 $obj = $obj->new($opt);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
123 $obj->set_output($pool);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
124 $pool->merge_mode();
144819f5d2f6 Initial revision
kono
parents:
diff changeset
125 $obj -> decode($file);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
126 } elsif ($mode eq 'delete') {
144819f5d2f6 Initial revision
kono
parents:
diff changeset
127 $obj = &find_input($type);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
128 $obj = $obj->new($opt);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
129 $obj->set_output($pool);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
130 $pool->delete_mode();
144819f5d2f6 Initial revision
kono
parents:
diff changeset
131 $obj -> decode($file);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
132 } elsif ($mode eq 'output') {
144819f5d2f6 Initial revision
kono
parents:
diff changeset
133 $obj = &find_output($type);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
134 $obj = $obj->new($opt,$file);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
135 $pool->set_output($obj);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
136 $pool->output($obj);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
137 $last_flag = 1;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
138 last;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
139 }
144819f5d2f6 Initial revision
kono
parents:
diff changeset
140 }
144819f5d2f6 Initial revision
kono
parents:
diff changeset
141
144819f5d2f6 Initial revision
kono
parents:
diff changeset
142 if (! $last_flag) {
144819f5d2f6 Initial revision
kono
parents:
diff changeset
143 my $opt = '';
144819f5d2f6 Initial revision
kono
parents:
diff changeset
144 my $obj = &find_output('File');
144819f5d2f6 Initial revision
kono
parents:
diff changeset
145 $obj = $obj->new($opt);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
146 $pool->set_output($obj);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
147 $pool->output($obj);
144819f5d2f6 Initial revision
kono
parents:
diff changeset
148 $last_flag = 1;
144819f5d2f6 Initial revision
kono
parents:
diff changeset
149 }
144819f5d2f6 Initial revision
kono
parents:
diff changeset
150
144819f5d2f6 Initial revision
kono
parents:
diff changeset
151
144819f5d2f6 Initial revision
kono
parents:
diff changeset
152 sub usage_die {
144819f5d2f6 Initial revision
kono
parents:
diff changeset
153 &usage();
144819f5d2f6 Initial revision
kono
parents:
diff changeset
154 die();
144819f5d2f6 Initial revision
kono
parents:
diff changeset
155 }
144819f5d2f6 Initial revision
kono
parents:
diff changeset
156
144819f5d2f6 Initial revision
kono
parents:
diff changeset
157 sub usage {
144819f5d2f6 Initial revision
kono
parents:
diff changeset
158 print "Usage: $0 -input-xcal ~/Calendar -output-print-FC /dev/stdout\n";
144819f5d2f6 Initial revision
kono
parents:
diff changeset
159 print " -[mode]-[type][-options] file-name\n";
144819f5d2f6 Initial revision
kono
parents:
diff changeset
160 print " mode: input, merge, delete\n";
144819f5d2f6 Initial revision
kono
parents:
diff changeset
161 print " input type: ",join(" ",keys %input),"\n";
144819f5d2f6 Initial revision
kono
parents:
diff changeset
162 print " output type: ",join(" ",keys %output),"\n";
144819f5d2f6 Initial revision
kono
parents:
diff changeset
163 print
144819f5d2f6 Initial revision
kono
parents:
diff changeset
164 "\t-n\tfile-out\n",
144819f5d2f6 Initial revision
kono
parents:
diff changeset
165 "\t-d\tdebug\n",
144819f5d2f6 Initial revision
kono
parents:
diff changeset
166 "\t-a\taddress only\n",
144819f5d2f6 Initial revision
kono
parents:
diff changeset
167 "\t-c\tcalendar only\n",
144819f5d2f6 Initial revision
kono
parents:
diff changeset
168 "\t-F\tfuture only\n",
144819f5d2f6 Initial revision
kono
parents:
diff changeset
169 "\t-t\ttommorrow\n",
144819f5d2f6 Initial revision
kono
parents:
diff changeset
170 "\t-C\tdisplay count\n",
144819f5d2f6 Initial revision
kono
parents:
diff changeset
171 "";
144819f5d2f6 Initial revision
kono
parents:
diff changeset
172 }
144819f5d2f6 Initial revision
kono
parents:
diff changeset
173
144819f5d2f6 Initial revision
kono
parents:
diff changeset
174 #
144819f5d2f6 Initial revision
kono
parents:
diff changeset
175