aboutsummaryrefslogtreecommitdiff
path: root/bpkg/pkg-purge.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-10-27 10:06:45 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-10-27 10:06:45 +0200
commitc108bb6ba4090046d8c2cd21f40a8008be977311 (patch)
tree239a0b77f083c32ef4a07ff14cfa147bbe91dd6e /bpkg/pkg-purge.cxx
parent73d5768368cf64c3e3c8505503affaa05b2d0b31 (diff)
Finish drop command implementation
Diffstat (limited to 'bpkg/pkg-purge.cxx')
-rw-r--r--bpkg/pkg-purge.cxx20
1 files changed, 20 insertions, 0 deletions
diff --git a/bpkg/pkg-purge.cxx b/bpkg/pkg-purge.cxx
index b90136a..9b63c15 100644
--- a/bpkg/pkg-purge.cxx
+++ b/bpkg/pkg-purge.cxx
@@ -66,6 +66,26 @@ namespace bpkg
}
}
+ void
+ pkg_purge (const dir_path& c,
+ transaction& t,
+ const shared_ptr<selected_package>& p)
+ {
+ assert (p->state == package_state::fetched ||
+ p->state == package_state::unpacked);
+
+ tracer trace ("pkg_purge");
+
+ database& db (t.database ());
+ tracer_guard tg (db, trace);
+
+ assert (!p->out_root);
+ pkg_purge_fs (c, t, p, true);
+
+ db.erase (p);
+ t.commit ();
+ }
+
int
pkg_purge (const pkg_purge_options& o, cli::scanner& args)
{