X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=stodo;h=7cc9b5dde45b768bc7a12b2c5d17cc40df61686a;hb=1886c7247cb16ed68a78cd5550b152689a465999;hp=25824636f5908c0a4232ec0d8fe64cef28b952a6;hpb=c2e0cc58f3f86e948a03333c2ea13abc870e2f6a;p=bin.git diff --git a/stodo b/stodo index 2582463..7cc9b5d 100755 --- a/stodo +++ b/stodo @@ -99,22 +99,31 @@ my %options = (quiet => 0, GetOptions(\%options,'debug|d+','help|h|?','man|m','quiet|q+','simulate|s+'); -pod2usage() if $options{help} or not exists $ENV{TODODB}; +pod2usage() if $options{help}; pod2usage({verbose=>2}) if $options{man}; $DEBUG = $options{debug}; # Figure out what we're doing -my $tododb = $ENV{TODODB}; +my $tododb = exists $ENV{TODODB} ? $ENV{TODODB} : '.todo'; if ($tododb !~ m#^/#) { $tododb = cwd().'/'.$tododb; } +if (not -r $tododb) { + print STDERR "Todo DB '$tododb' does not exist or is not readable\n"; + exit 1; +} $tododb = full_readlink($tododb); my $base_dir = dirname($tododb); my $tododb_name = basename($tododb); if (not -e "$base_dir/.svn") { - print "$base_dir/.svn doesn't exist, not commiting\n" unless $options{quiet}; + print STDERR "$base_dir/.svn doesn't exist, not commiting\n" unless $options{quiet}; + exit 0; +} + +if (not -e "$base_dir/.svn/text-base/${tododb_name}.svn-base") { + print STDERR "$base_dir/.svn/text-base/${tododb_name}.svn-base doesn't exist, not committing\n" unless $options{quiet}; exit 0; } @@ -124,17 +133,17 @@ my $svn_entries_fh = new IO::File "$base_dir/.svn/entries",'r' my $url_type; my $svn_host; while (<$svn_entries_fh>) { - next unless m#^\s+url=\"(http|svn\+ssh|file):///?([^\/]+)#; + next unless m#^(?:\s+url=\")?(http|svn\+ssh|file):///?([^\/]+)#; $url_type = $1; last if $url_type eq 'file'; $svn_host = $2; last; } if ($ENV{STODO_NO_COMMIT}) { - print "Exiting because of STODO_NO_COMMIT env variable\n" unless $options{quiet}; + print STDERR "Exiting because of STODO_NO_COMMIT env variable\n" unless $options{quiet}; exit 0; } -if (not defined $svn_host and $url_type ne 'file') { +if (not defined $svn_host and (not defined $url_type or $url_type ne 'file')) { die "Was unable to find which host the svn repository is located on"; } if ($url_type ne 'file') { @@ -252,6 +261,9 @@ else { sub fix_content { my ($s) = @_; + if (not ref(${[values %{$s}]}[0]) eq 'HASH') { + $s = {$s->{time} => $s}; + } foreach my $entry (values %{$s}) { if (exists $entry->{content}) { $entry->{content} =~ s/^\s*|\s*$//g;