diff options
Diffstat (limited to '')
-rw-r--r-- | lib/ballet/Git.pm | 5 | ||||
-rw-r--r-- | lib/ballet/Page.pm | 23 |
2 files changed, 25 insertions, 3 deletions
diff --git a/lib/ballet/Git.pm b/lib/ballet/Git.pm index 6ade622..3e2fc6a 100644 --- a/lib/ballet/Git.pm +++ b/lib/ballet/Git.pm @@ -1,6 +1,7 @@ package ballet::Git; use Mouse; +use File::Spec; use Git::Repository; with 'ballet::Page'; @@ -17,8 +18,10 @@ has git_repo => ( lazy => 1, default => sub { my $self = shift; - Git::Repository->new( git_dir => $self->wiki_path ),; + Git::Repository->new( + git_dir => File::Spec->catdir( $self->wiki_path, '.git' ) ),; }, ); + 1; diff --git a/lib/ballet/Page.pm b/lib/ballet/Page.pm index 7eafa90..63486f5 100644 --- a/lib/ballet/Page.pm +++ b/lib/ballet/Page.pm @@ -1,24 +1,43 @@ package ballet::Page; +use File::Spec; use Mouse::Role; sub find_page { my ($self, $name, $version) = @_; $version ||= 'master'; + my @output = $self->git_repo->run('ls-tree', $version); + my @page = grep {$_ =~ /$name\./} @output; + if (!@page) { die "blablabla"; } - return $self->_format_page(shift @page); - + my $content = $self->_format_page(shift @page); +} + +sub update_page { + my ($self, $page_name, $content) = @_; + + open my $fh, '>', + File::Spec->catfile( $self->wiki_path, $page_name . '.md' ); + print $fh $content; + close $fh; + + $self->git_repo->run(add => $page_name.'.md'); + $self->git_repo->run('commit' => '-m', 'udpate' ); + + 1; } sub _format_page { my ($self, $blob) = @_; + my @line = split (/\s/, $blob); my @content = $self->git_repo->run('cat-file', '-p', $line[2]); + return join("\n", @content); } |