view calcon.pl @ 8:37b9a5119474

add apple address book (Tiger 10.4)
author kono
date Sat, 07 May 2005 23:25:45 +0900
parents 13949e4d6f18
children 1a68139a269f
line wrap: on
line source

#!/usr/bin/perl 

use Calcon;

use strict;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK 
    $opt_f $opt_t $opt_n $opt_d $opt_h $opt_F $opt_O $opt_a $opt_c
);

my %input = (
    'Zaurus' 	=> 'Calcon::Zaurus_read',
    'Backup Zaurus' 	=> 'Calcon::Zaurus_backup_read',
    'Xcalendar' => 'Calcon::Xcalendar_read',
    'Vcard' 	=> 'Calcon::Vcard_read',
    'SLA300' 	=> 'Calcon::Sla300_read',
    'iApp' 	=> 'Calcon::iApp_read',
  'Entourage'	=> 'Calcon::Entourage_read',
    'File' 	=> 'Calcon::File_read',
);

my %output = (
    'Xcalendar'	=> 'Calcon::Xcalendar_write',
    'Vcard' 	=> 'Calcon::Vcard_write',
    'SLA300'	=> 'Calcon::Sla300_write',
  'AppleScript'	=> 'Calcon::iApp_write',
    'iApp' 	=> 'Calcon::iApp_write',
 'Address Book' => 'Calcon::Vcard_Apple_write',
  'Entourage'	=> 'Calcon::Entourage_write',
    'Print'     => 'Calcon::Print_write',
    'File' 	=> 'Calcon::File_write',
);

use Getopt::Std;

getopts('f:t:ndhO:acF'); 

if ($opt_h) {
    print "Usage: $0 [-d -n] -f input_type -t output_type inputfile\n";
    print "  input  type: ",join(" ",keys %input),"\n";
    print "  output type: ",join(" ",keys %output),"\n";
    exit 0;
}

# print "option: $opt_f $opt_t\n";
my $from_opts;
my $to_opts;

if (! @ARGV) { @ARGV = ('/dev/stdin'); }
foreach my $file ( @ARGV ) {
    my ($obj,$out);

    $opt_f = 'file' if (!$opt_f);
    $opt_t = 'file' if (!$opt_t);

    if ($opt_f =~ s/:.*//) { $from_opts = $&; }
    $opt_f =~ s/(\W)/\\$1/g;
    foreach my $key ( keys %input) {
	if ($key =~ /^$opt_f/i) {
	    $obj  = $input{$key}; 
	    last;
	}
    }
    $obj = $obj->new($from_opts);

    if ($opt_t =~ s/:.*//) { $to_opts = $&; }
    $to_opts .= '-n' if ($opt_n);
    $opt_t =~ s/(\W)/\\$1/g;
    foreach my $key ( keys %output) {
	if ($key =~ /^$opt_t/i) {
	    $out  = $output{$key}; 
	    last;
	}
    }
    $out = $out->new($to_opts); 
# print "$obj $out\n";
    $obj->set_output($out);

    # $out->{'-file-out'} = $opt_n; too late

    foreach my $o ( $obj, $out) {
	$o->set_debug(1) if ($opt_d);
	$o->{'-address-only'} = 1 if ($opt_a);
	$o->{'-calendar-only'} = 1 if ($opt_c);
	$o->{'-future-only'} = 1 if ($opt_F);
    }

# print "option: $opt_f $opt_t\n";
    $obj -> decode($file);
}

#

__END__

=head1 NAME

calcon.pl -- Convert Various Calendar/Address data format

=head1 SYNOPSIS

    perl calcon.pl -f from -t form [-d] [-n]

=head1 DESCRIPTION

 -f from-format
    File format
    Zaurus Read Zaurus MI C1 Compact Flast
    Xcalendar
    vCal/vCard
    iApp via Applescript
    Entourage via Applescript
    

 -t from-format
    File format
    iCal and Addres Book Applescript execution (-f put result into files in script-out )
    vCal/vCard
    Zaurus SLA-300
    Entourage via Applescript
    Address Book  (Mac OS X 10.4 Address Book)

 -a addres only
 -c calendar only
 -F future only

 -h   show help
 -d debug
 -n non-execution mode for applescript
      scripts are put into script-out directory

=cut