--- couchdb/design-couch.pl 2009/08/18 14:30:06 252 +++ couchdb/design-couch.pl 2009/08/30 12:07:15 371 @@ -23,6 +23,11 @@ my ( $command, $database, $design ) = @ARGV; die "usage: $0 [push|pull] database design\n" unless $database && $design; +if ( ! -e $design && $command eq 'pull') { + warn "# create new design $design\n"; + mkdir $design; +} + chdir $design || die "can't find $design: $!"; my $ua = LWP::UserAgent->new; @@ -38,12 +43,20 @@ #warn "# dir $dir"; } } + +sub svn { + my $path = shift; + return if $path =~ m{(_.*|.*\.(push|pull)\.js)$}; + system "svn add --parents $path"; +} + sub write_file { my ( $path, $content ) = @_; $path =~ s{^/+}{}; create_path $path; File::Slurp::write_file $path, $content; print "$path ", -s $path, " bytes created\n"; + svn $path; } sub write_attachment { @@ -52,6 +65,7 @@ create_path $file; $ua->mirror( "$url/$path", $file ); print "detached $file ", -s $file, " bytes\n"; + svn $file; } @@ -98,6 +112,8 @@ } elsif ( $command eq 'push' ) { + $ua->request( HTTP::Request::Common::PUT( "http://localhost:5984/$database" ) ) && warn "# created database $database\n"; + my $json; find({ no_chdir => 1, wanted => sub {