summaryrefslogtreecommitdiff
path: root/lib/Git/Annex.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Git/Annex.pm')
-rw-r--r--lib/Git/Annex.pm17
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/Git/Annex.pm b/lib/Git/Annex.pm
index 1cd26f4..7d923f9 100644
--- a/lib/Git/Annex.pm
+++ b/lib/Git/Annex.pm
@@ -66,6 +66,7 @@ use Cwd;
use File::chdir;
use Git::Wrapper;
use Git::Repository;
+use File::Spec::Functions qw(catfile rel2abs);
use Moo;
use namespace::clean;
@@ -103,6 +104,22 @@ has repo => (
# Git::Repository::new, so we chdir and let call without arguments
default => sub { local $CWD = shift->toplevel; Git::Repository->new });
+has _unused_cache => (
+ is => "lazy",
+ default => sub { shift->_git_path(catfile(qw(annex unused_info))) });
+
+sub _clear_unused_cache {
+ my $self = shift;
+ delete $self->{_unused};
+ unlink $self->_unused_cache;
+}
+
+sub _git_path {
+ my ($self, $input) = @_;
+ my ($path) = $self->git->rev_parse({ git_path => 1 }, $input);
+ rel2abs($path, $self->toplevel);
+}
+
around BUILDARGS => sub {
my (undef, undef, @args) = @_;
{ toplevel => $args[0] // getcwd };