1/*
2 * Copyright 2013, Stephan A��mus <superstippi@gmx.de>.
3 * Copyright 2013, Rene Gollent, <rene@gollent.com>
4 * Copyright 2020-2022, Andrew Lindesay <apl@lindesay.co.nz>
5 *
6 * All rights reserved. Distributed under the terms of the MIT License.
7 */
8
9
10#include "AbstractPackageProcess.h"
11
12#include "Model.h"
13#include "PackageManager.h"
14#include "PackageUtils.h"
15
16
17using namespace BPackageKit;
18
19// #pragma mark - PackageAction
20
21
22AbstractPackageProcess::AbstractPackageProcess(
23		PackageInfoRef package, Model* model)
24	:
25	fPackage(package),
26	fModel(model)
27{
28	if (package.IsSet())
29		fInstallLocation = PackageUtils::DeriveInstallLocation(package.Get());
30	else
31		fInstallLocation = B_PACKAGE_INSTALLATION_LOCATION_SYSTEM;
32
33	// TODO: ideally if the package is installed at multiple locations,
34	// the user should be able to pick which one to remove.
35	// TODO: allow configuring the installation location
36	fPackageManager = new(std::nothrow) PackageManager(
37		(BPackageInstallationLocation)fInstallLocation);
38}
39
40
41AbstractPackageProcess::~AbstractPackageProcess()
42{
43	delete fPackageManager;
44}
45
46
47PackageInfoRef
48AbstractPackageProcess::FindPackageByName(const BString& name)
49{
50	return fModel->PackageForName(name);
51}
52
53
54