#!/usr/bin/perl -w use strict; use YAML; use Bookmarks; use Getopt::Long; GetOptions( 'file|f=s' => \my $DBNAME, 'tag=s' => \my @TAGS, ); die "Usage: $0 --file \n" unless $DBNAME; my $bookmarks = Bookmarks->new({ dbname => $DBNAME, }); my $command = shift; my %action_for = ( init => sub { $bookmarks->create_tables; }, get => sub { my $identifier = shift; my $query = $identifier =~ /^\d+$/ ? { id => $identifier } : { uri => $identifier }; my $bookmark = $bookmarks->get_bookmark($query); print $bookmark ? Dump($bookmark) : "Not Found\n"; }, add => sub { my ($uri, $title, @tags) = @_; my $bookmark = $bookmarks->add({ uri => $uri, title => $title, tags => \@tags }); print Dump($bookmark); }, list => sub { my @resources = $bookmarks->get_bookmarks({ tag => \@TAGS }); # TODO: list by tags, date, etc. # TODO: coordinate this commandline script with the CGI app print Dump(\@resources); }, load => sub { my ($src_file) = @_; my $src_bookmarks = YAML::LoadFile($src_file); for my $bookmark (@{ $src_bookmarks }) { $bookmarks->add($bookmark); } }, ); $action_for{$command}->(@ARGV); =begin use YAML;