package[_repo] list: reduce code duplication
Introduce helper class PackageInfoPrinter that does the printing and is used by both commands.
This commit is contained in:
@@ -0,0 +1,326 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2009-2013, Ingo Weinhold, [email protected].
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
#ifndef PACKAGE_INFO_PRINTER_H
|
||||||
|
#define PACKAGE_INFO_PRINTER_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include <package/hpkg/PackageInfoAttributeValue.h>
|
||||||
|
#include <package/PackageInfo.h>
|
||||||
|
|
||||||
|
|
||||||
|
using namespace BPackageKit;
|
||||||
|
using BPackageKit::BHPKG::BGlobalWritableFileInfoData;
|
||||||
|
using BPackageKit::BHPKG::BPackageInfoAttributeValue;
|
||||||
|
using BPackageKit::BHPKG::BUserData;
|
||||||
|
using BPackageKit::BHPKG::BUserSettingsFileInfoData;
|
||||||
|
|
||||||
|
|
||||||
|
class PackageInfoPrinter {
|
||||||
|
public:
|
||||||
|
bool PrintAttribute(const BPackageInfoAttributeValue& value)
|
||||||
|
{
|
||||||
|
switch (value.attributeID) {
|
||||||
|
case B_PACKAGE_INFO_NAME:
|
||||||
|
PrintName(value.string);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_SUMMARY:
|
||||||
|
PrintSummary(value.string);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_DESCRIPTION:
|
||||||
|
PrintDescription(value.string);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_VENDOR:
|
||||||
|
PrintVendor(value.string);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_PACKAGER:
|
||||||
|
PrintPackager(value.string);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_BASE_PACKAGE:
|
||||||
|
PrintBasePackage(value.string);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_FLAGS:
|
||||||
|
PrintFlags(value.unsignedInt);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_ARCHITECTURE:
|
||||||
|
PrintArchitecture(value.unsignedInt);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_VERSION:
|
||||||
|
PrintVersion(value.version);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_COPYRIGHTS:
|
||||||
|
PrintCopyright(value.string);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_LICENSES:
|
||||||
|
PrintLicense(value.string);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_URLS:
|
||||||
|
PrintUrl(value.string);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_SOURCE_URLS:
|
||||||
|
PrintSourceUrl(value.string);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_PROVIDES:
|
||||||
|
PrintProvides(value.resolvable);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_REQUIRES:
|
||||||
|
PrintRequires(value.resolvableExpression);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_SUPPLEMENTS:
|
||||||
|
PrintSupplements(value.resolvableExpression);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_CONFLICTS:
|
||||||
|
PrintConflicts(value.resolvableExpression);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_FRESHENS:
|
||||||
|
PrintFreshens(value.resolvableExpression);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_REPLACES:
|
||||||
|
PrintReplaces(value.string);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_GLOBAL_WRITABLE_FILES:
|
||||||
|
PrintGlobalWritableFile(value.globalWritableFileInfo);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_USER_SETTINGS_FILES:
|
||||||
|
PrintUserSettingsFile(value.userSettingsFileInfo);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_USERS:
|
||||||
|
PrintUser(value.user);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_GROUPS:
|
||||||
|
PrintGroup(value.string);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_POST_INSTALL_SCRIPTS:
|
||||||
|
PrintPostInstallScript(value.string);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_INSTALL_PATH:
|
||||||
|
PrintInstallPath(value.string);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintName(const char* name) const
|
||||||
|
{
|
||||||
|
printf("\tname: %s\n", name);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintSummary(const char* summary) const
|
||||||
|
{
|
||||||
|
printf("\tsummary: %s\n", summary);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintDescription(const char* description) const
|
||||||
|
{
|
||||||
|
printf("\tdescription: %s\n", description);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintVendor(const char* vendor) const
|
||||||
|
{
|
||||||
|
printf("\tvendor: %s\n", vendor);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintPackager(const char* packager) const
|
||||||
|
{
|
||||||
|
printf("\tpackager: %s\n", packager);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintBasePackage(const char* basePackage) const
|
||||||
|
{
|
||||||
|
printf("\tbase package: %s\n", basePackage);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintFlags(uint32 flags) const
|
||||||
|
{
|
||||||
|
if (flags == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
printf("\tflags:\n");
|
||||||
|
if ((flags & B_PACKAGE_FLAG_APPROVE_LICENSE) != 0)
|
||||||
|
printf("\t\tapprove_license\n");
|
||||||
|
if ((flags & B_PACKAGE_FLAG_SYSTEM_PACKAGE) != 0)
|
||||||
|
printf("\t\tsystem_package\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintArchitecture(uint32 architecture) const
|
||||||
|
{
|
||||||
|
printf("\tarchitecture: %s\n",
|
||||||
|
architecture < B_PACKAGE_ARCHITECTURE_ENUM_COUNT
|
||||||
|
? BPackageInfo::kArchitectureNames[architecture]
|
||||||
|
: "<invalid>");
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintVersion(const BPackageVersionData& version) const
|
||||||
|
{
|
||||||
|
printf("\tversion: ");
|
||||||
|
_PrintPackageVersion(version);
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintCopyright(const char* copyright) const
|
||||||
|
{
|
||||||
|
printf("\tcopyright: %s\n", copyright);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintLicense(const char* license) const
|
||||||
|
{
|
||||||
|
printf("\tlicense: %s\n", license);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintUrl(const char* url) const
|
||||||
|
{
|
||||||
|
printf("\tURL: %s\n", url);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintSourceUrl(const char* sourceUrl) const
|
||||||
|
{
|
||||||
|
printf("\tsource URL: %s\n", sourceUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintProvides(const BPackageResolvableData& provides) const
|
||||||
|
{
|
||||||
|
printf("\tprovides: %s", provides.name);
|
||||||
|
if (provides.haveVersion) {
|
||||||
|
printf(" = ");
|
||||||
|
_PrintPackageVersion(provides.version);
|
||||||
|
}
|
||||||
|
if (provides.haveCompatibleVersion) {
|
||||||
|
printf(" (compatible >= ");
|
||||||
|
_PrintPackageVersion(provides.compatibleVersion);
|
||||||
|
printf(")");
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintRequires(const BPackageResolvableExpressionData& requires) const
|
||||||
|
{
|
||||||
|
_PrintResolvableExpression("requires", requires);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintSupplements(const BPackageResolvableExpressionData& supplements)
|
||||||
|
const
|
||||||
|
{
|
||||||
|
_PrintResolvableExpression("supplements", supplements);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintConflicts(const BPackageResolvableExpressionData& conflicts) const
|
||||||
|
{
|
||||||
|
_PrintResolvableExpression("conflicts", conflicts);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintFreshens(const BPackageResolvableExpressionData& freshens) const
|
||||||
|
{
|
||||||
|
_PrintResolvableExpression("freshens", freshens);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintReplaces(const char* replaces) const
|
||||||
|
{
|
||||||
|
printf("\treplaces: %s\n", replaces);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintGlobalWritableFile(const BGlobalWritableFileInfoData& info) const
|
||||||
|
{
|
||||||
|
printf("\tglobal writable file: %s", info.path);
|
||||||
|
if (info.isDirectory)
|
||||||
|
printf( " directory");
|
||||||
|
if (info.updateType < B_WRITABLE_FILE_UPDATE_TYPE_ENUM_COUNT) {
|
||||||
|
printf(" %s\n",
|
||||||
|
BPackageInfo::kWritableFileUpdateTypes[info.updateType]);
|
||||||
|
} else
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintUserSettingsFile(const BUserSettingsFileInfoData& info) const
|
||||||
|
{
|
||||||
|
printf("\tuser settings file: %s", info.path);
|
||||||
|
if (info.isDirectory)
|
||||||
|
printf( " directory\n");
|
||||||
|
else if (info.templatePath != NULL)
|
||||||
|
printf(" template %s\n", info.templatePath);
|
||||||
|
else
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintUser(const BUserData& user) const
|
||||||
|
{
|
||||||
|
printf("\tuser: %s\n", user.name);
|
||||||
|
if (user.realName != NULL)
|
||||||
|
printf("\t\treal name: %s\n", user.realName);
|
||||||
|
if (user.home != NULL)
|
||||||
|
printf("\t\thome: %s\n", user.home);
|
||||||
|
if (user.shell != NULL)
|
||||||
|
printf("\t\tshell: %s\n", user.shell);
|
||||||
|
for (size_t i = 0; i < user.groupCount; i++)
|
||||||
|
printf("\t\tgroup: %s\n", user.groups[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintGroup(const char* group) const
|
||||||
|
{
|
||||||
|
printf("\tgroup: %s\n", group);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintPostInstallScript(const char* script) const
|
||||||
|
{
|
||||||
|
printf("\tpost install script: %s\n", script);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintInstallPath(const char* path) const
|
||||||
|
{
|
||||||
|
printf("\tinstall path: %s\n", path);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
static void _PrintPackageVersion(const BPackageVersionData& version)
|
||||||
|
{
|
||||||
|
printf("%s", BPackageVersion(version).ToString().String());
|
||||||
|
}
|
||||||
|
|
||||||
|
void _PrintResolvableExpression(const char* fieldName,
|
||||||
|
const BPackageResolvableExpressionData& expression) const
|
||||||
|
{
|
||||||
|
printf("\t%s: %s", fieldName, expression.name);
|
||||||
|
if (expression.haveOpAndVersion) {
|
||||||
|
printf(" %s ",
|
||||||
|
expression.op < B_PACKAGE_RESOLVABLE_OP_ENUM_COUNT
|
||||||
|
? BPackageResolvableExpression::kOperatorNames[
|
||||||
|
expression.op]
|
||||||
|
: "<invalid operator>");
|
||||||
|
_PrintPackageVersion(expression.version);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // PACKAGE_INFO_PRINTER_H
|
||||||
@@ -26,6 +26,7 @@
|
|||||||
#include <package/PackageInfo.h>
|
#include <package/PackageInfo.h>
|
||||||
|
|
||||||
#include "package.h"
|
#include "package.h"
|
||||||
|
#include "PackageInfoPrinter.h"
|
||||||
|
|
||||||
|
|
||||||
using namespace BPackageKit;
|
using namespace BPackageKit;
|
||||||
@@ -81,6 +82,7 @@ template<typename VersionPolicy>
|
|||||||
struct PackageContentListHandler : VersionPolicy::PackageContentHandler {
|
struct PackageContentListHandler : VersionPolicy::PackageContentHandler {
|
||||||
PackageContentListHandler(bool listAttributes)
|
PackageContentListHandler(bool listAttributes)
|
||||||
:
|
:
|
||||||
|
fPrinter(),
|
||||||
fLevel(0),
|
fLevel(0),
|
||||||
fListAttribute(listAttributes)
|
fListAttribute(listAttributes)
|
||||||
{
|
{
|
||||||
@@ -167,182 +169,13 @@ struct PackageContentListHandler : VersionPolicy::PackageContentHandler {
|
|||||||
virtual status_t HandlePackageAttribute(
|
virtual status_t HandlePackageAttribute(
|
||||||
const BPackageInfoAttributeValue& value)
|
const BPackageInfoAttributeValue& value)
|
||||||
{
|
{
|
||||||
switch (value.attributeID) {
|
if (value.attributeID == B_PACKAGE_INFO_NAME)
|
||||||
case B_PACKAGE_INFO_NAME:
|
printf("package-attributes:\n");
|
||||||
printf("package-attributes:\n");
|
|
||||||
printf("\tname: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_SUMMARY:
|
if (!fPrinter.PrintAttribute(value)) {
|
||||||
printf("\tsummary: %s\n", value.string);
|
printf("*** Invalid package attribute section: unexpected "
|
||||||
break;
|
"package attribute id %d encountered\n", value.attributeID);
|
||||||
|
return B_BAD_DATA;
|
||||||
case B_PACKAGE_INFO_DESCRIPTION:
|
|
||||||
printf("\tdescription: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_VENDOR:
|
|
||||||
printf("\tvendor: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_PACKAGER:
|
|
||||||
printf("\tpackager: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_BASE_PACKAGE:
|
|
||||||
printf("\tbase package: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_FLAGS:
|
|
||||||
if (value.unsignedInt == 0)
|
|
||||||
break;
|
|
||||||
printf("\tflags:\n");
|
|
||||||
if ((value.unsignedInt & B_PACKAGE_FLAG_APPROVE_LICENSE) != 0)
|
|
||||||
printf("\t\tapprove_license\n");
|
|
||||||
if ((value.unsignedInt & B_PACKAGE_FLAG_SYSTEM_PACKAGE) != 0)
|
|
||||||
printf("\t\tsystem_package\n");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_ARCHITECTURE:
|
|
||||||
printf("\tarchitecture: %s\n",
|
|
||||||
BPackageInfo::kArchitectureNames[value.unsignedInt]);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_VERSION:
|
|
||||||
printf("\tversion: ");
|
|
||||||
_PrintPackageVersion(value.version);
|
|
||||||
printf("\n");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_COPYRIGHTS:
|
|
||||||
printf("\tcopyright: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_LICENSES:
|
|
||||||
printf("\tlicense: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_URLS:
|
|
||||||
printf("\tURL: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_SOURCE_URLS:
|
|
||||||
printf("\tsource URL: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_PROVIDES:
|
|
||||||
printf("\tprovides: %s", value.resolvable.name);
|
|
||||||
if (value.resolvable.haveVersion) {
|
|
||||||
printf(" = ");
|
|
||||||
_PrintPackageVersion(value.resolvable.version);
|
|
||||||
}
|
|
||||||
if (value.resolvable.haveCompatibleVersion) {
|
|
||||||
printf(" (compatible >= ");
|
|
||||||
_PrintPackageVersion(value.resolvable.compatibleVersion);
|
|
||||||
printf(")");
|
|
||||||
}
|
|
||||||
printf("\n");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_REQUIRES:
|
|
||||||
printf("\trequires: %s", value.resolvableExpression.name);
|
|
||||||
if (value.resolvableExpression.haveOpAndVersion) {
|
|
||||||
printf(" %s ", BPackageResolvableExpression::kOperatorNames[
|
|
||||||
value.resolvableExpression.op]);
|
|
||||||
_PrintPackageVersion(value.resolvableExpression.version);
|
|
||||||
}
|
|
||||||
printf("\n");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_SUPPLEMENTS:
|
|
||||||
printf("\tsupplements: %s", value.resolvableExpression.name);
|
|
||||||
if (value.resolvableExpression.haveOpAndVersion) {
|
|
||||||
printf(" %s ", BPackageResolvableExpression::kOperatorNames[
|
|
||||||
value.resolvableExpression.op]);
|
|
||||||
_PrintPackageVersion(value.resolvableExpression.version);
|
|
||||||
}
|
|
||||||
printf("\n");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_CONFLICTS:
|
|
||||||
printf("\tconflicts: %s", value.resolvableExpression.name);
|
|
||||||
if (value.resolvableExpression.haveOpAndVersion) {
|
|
||||||
printf(" %s ", BPackageResolvableExpression::kOperatorNames[
|
|
||||||
value.resolvableExpression.op]);
|
|
||||||
_PrintPackageVersion(value.resolvableExpression.version);
|
|
||||||
}
|
|
||||||
printf("\n");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_FRESHENS:
|
|
||||||
printf("\tfreshens: %s", value.resolvableExpression.name);
|
|
||||||
if (value.resolvableExpression.haveOpAndVersion) {
|
|
||||||
printf(" %s ", BPackageResolvableExpression::kOperatorNames[
|
|
||||||
value.resolvableExpression.op]);
|
|
||||||
_PrintPackageVersion(value.resolvableExpression.version);
|
|
||||||
}
|
|
||||||
printf("\n");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_REPLACES:
|
|
||||||
printf("\treplaces: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_GLOBAL_WRITABLE_FILES:
|
|
||||||
printf("\tglobal writable file: %s",
|
|
||||||
value.globalWritableFileInfo.path);
|
|
||||||
if (value.globalWritableFileInfo.isDirectory)
|
|
||||||
printf( " directory");
|
|
||||||
if (value.globalWritableFileInfo.updateType
|
|
||||||
< B_WRITABLE_FILE_UPDATE_TYPE_ENUM_COUNT) {
|
|
||||||
printf(" %s\n",
|
|
||||||
BPackageInfo::kWritableFileUpdateTypes[
|
|
||||||
value.globalWritableFileInfo.updateType]);
|
|
||||||
} else
|
|
||||||
printf("\n");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_USER_SETTINGS_FILES:
|
|
||||||
printf("\tuser settings file: %s",
|
|
||||||
value.userSettingsFileInfo.path);
|
|
||||||
if (value.globalWritableFileInfo.isDirectory) {
|
|
||||||
printf( " directory\n");
|
|
||||||
} else if (value.userSettingsFileInfo.templatePath != NULL) {
|
|
||||||
printf(" template %s\n",
|
|
||||||
value.userSettingsFileInfo.templatePath);
|
|
||||||
} else
|
|
||||||
printf("\n");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_USERS:
|
|
||||||
printf("\tuser: %s\n", value.user.name);
|
|
||||||
if (value.user.realName != NULL)
|
|
||||||
printf("\t\treal name: %s\n", value.user.realName);
|
|
||||||
if (value.user.home != NULL)
|
|
||||||
printf("\t\thome: %s\n", value.user.home);
|
|
||||||
if (value.user.shell != NULL)
|
|
||||||
printf("\t\tshell: %s\n", value.user.shell);
|
|
||||||
for (size_t i = 0; i < value.user.groupCount; i++)
|
|
||||||
printf("\t\tgroup: %s\n", value.user.groups[i]);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_GROUPS:
|
|
||||||
printf("\tgroup: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_POST_INSTALL_SCRIPTS:
|
|
||||||
printf("\tpost install script: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_INSTALL_PATH:
|
|
||||||
printf("\tinstall path: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
printf(
|
|
||||||
"*** Invalid package attribute section: unexpected "
|
|
||||||
"package attribute id %d encountered\n", value.attributeID);
|
|
||||||
return B_BAD_DATA;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
@@ -373,8 +206,9 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int fLevel;
|
PackageInfoPrinter fPrinter;
|
||||||
bool fListAttribute;
|
int fLevel;
|
||||||
|
bool fListAttribute;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ SubDir HAIKU_TOP src bin package_repo ;
|
|||||||
|
|
||||||
UsePrivateHeaders kernel shared ;
|
UsePrivateHeaders kernel shared ;
|
||||||
|
|
||||||
|
UseHeaders [ FDirName $(HAIKU_TOP) src bin package ] ;
|
||||||
|
|
||||||
DEFINES += B_ENABLE_INCOMPLETE_POSIX_AT_SUPPORT ;
|
DEFINES += B_ENABLE_INCOMPLETE_POSIX_AT_SUPPORT ;
|
||||||
# TODO: Remove when it is complete!
|
# TODO: Remove when it is complete!
|
||||||
|
|
||||||
@@ -13,4 +15,3 @@ BinCommand package_repo :
|
|||||||
package be
|
package be
|
||||||
$(TARGET_LIBSUPC++)
|
$(TARGET_LIBSUPC++)
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
#include <package/RepositoryInfo.h>
|
#include <package/RepositoryInfo.h>
|
||||||
|
|
||||||
#include "package_repo.h"
|
#include "package_repo.h"
|
||||||
|
#include "PackageInfoPrinter.h"
|
||||||
|
|
||||||
|
|
||||||
using namespace BPackageKit::BHPKG;
|
using namespace BPackageKit::BHPKG;
|
||||||
@@ -27,6 +28,7 @@ using namespace BPackageKit;
|
|||||||
struct RepositoryContentListHandler : BRepositoryContentHandler {
|
struct RepositoryContentListHandler : BRepositoryContentHandler {
|
||||||
RepositoryContentListHandler(bool verbose)
|
RepositoryContentListHandler(bool verbose)
|
||||||
:
|
:
|
||||||
|
fPrinter(),
|
||||||
fLevel(0),
|
fLevel(0),
|
||||||
fVerbose(verbose)
|
fVerbose(verbose)
|
||||||
{
|
{
|
||||||
@@ -40,221 +42,18 @@ struct RepositoryContentListHandler : BRepositoryContentHandler {
|
|||||||
virtual status_t HandlePackageAttribute(
|
virtual status_t HandlePackageAttribute(
|
||||||
const BPackageInfoAttributeValue& value)
|
const BPackageInfoAttributeValue& value)
|
||||||
{
|
{
|
||||||
switch (value.attributeID) {
|
if (value.attributeID == B_PACKAGE_INFO_NAME) {
|
||||||
case B_PACKAGE_INFO_NAME:
|
if (fVerbose) {
|
||||||
if (fVerbose) {
|
printf("package-attributes:\n");
|
||||||
printf("package-attributes:\n");
|
fPrinter.PrintName(value.string);
|
||||||
printf("\tname: %s\n", value.string);
|
} else
|
||||||
} else
|
printf("package: %s", value.string);
|
||||||
printf("package: %s", value.string);
|
} else {
|
||||||
break;
|
if (fVerbose && !fPrinter.PrintAttribute(value)) {
|
||||||
|
printf("*** Invalid package attribute section: unexpected "
|
||||||
case B_PACKAGE_INFO_SUMMARY:
|
|
||||||
if (fVerbose)
|
|
||||||
printf("\tsummary: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_DESCRIPTION:
|
|
||||||
if (fVerbose)
|
|
||||||
printf("\tdescription: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_VENDOR:
|
|
||||||
if (fVerbose)
|
|
||||||
printf("\tvendor: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_PACKAGER:
|
|
||||||
if (fVerbose)
|
|
||||||
printf("\tpackager: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_BASE_PACKAGE:
|
|
||||||
if (fVerbose)
|
|
||||||
printf("\tbase package: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_FLAGS:
|
|
||||||
if (value.unsignedInt == 0 || !fVerbose)
|
|
||||||
break;
|
|
||||||
printf("\tflags:\n");
|
|
||||||
if ((value.unsignedInt & B_PACKAGE_FLAG_APPROVE_LICENSE) != 0)
|
|
||||||
printf("\t\tapprove_license\n");
|
|
||||||
if ((value.unsignedInt & B_PACKAGE_FLAG_SYSTEM_PACKAGE) != 0)
|
|
||||||
printf("\t\tsystem_package\n");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_ARCHITECTURE:
|
|
||||||
if (fVerbose) {
|
|
||||||
printf("\tarchitecture: %s\n",
|
|
||||||
BPackageInfo::kArchitectureNames[value.unsignedInt]);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_VERSION:
|
|
||||||
if (!fVerbose)
|
|
||||||
printf("(");
|
|
||||||
_PrintPackageVersion(value.version);
|
|
||||||
if (!fVerbose)
|
|
||||||
printf(")\n");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_COPYRIGHTS:
|
|
||||||
if (fVerbose)
|
|
||||||
printf("\tcopyright: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_LICENSES:
|
|
||||||
if (fVerbose)
|
|
||||||
printf("\tlicense: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_URLS:
|
|
||||||
if (fVerbose)
|
|
||||||
printf("\tURL: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_SOURCE_URLS:
|
|
||||||
if (fVerbose)
|
|
||||||
printf("\tsource URL: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_PROVIDES:
|
|
||||||
if (!fVerbose)
|
|
||||||
break;
|
|
||||||
printf("\tprovides: %s", value.resolvable.name);
|
|
||||||
if (value.resolvable.haveVersion) {
|
|
||||||
printf(" = ");
|
|
||||||
_PrintPackageVersion(value.resolvable.version);
|
|
||||||
}
|
|
||||||
printf("\n");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_REQUIRES:
|
|
||||||
if (!fVerbose)
|
|
||||||
break;
|
|
||||||
printf("\trequires: %s", value.resolvableExpression.name);
|
|
||||||
if (value.resolvableExpression.haveOpAndVersion) {
|
|
||||||
printf(" %s ", BPackageResolvableExpression::kOperatorNames[
|
|
||||||
value.resolvableExpression.op]);
|
|
||||||
_PrintPackageVersion(value.resolvableExpression.version);
|
|
||||||
}
|
|
||||||
printf("\n");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_SUPPLEMENTS:
|
|
||||||
if (!fVerbose)
|
|
||||||
break;
|
|
||||||
printf("\tsupplements: %s", value.resolvableExpression.name);
|
|
||||||
if (value.resolvableExpression.haveOpAndVersion) {
|
|
||||||
printf(" %s ", BPackageResolvableExpression::kOperatorNames[
|
|
||||||
value.resolvableExpression.op]);
|
|
||||||
_PrintPackageVersion(value.resolvableExpression.version);
|
|
||||||
}
|
|
||||||
printf("\n");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_CONFLICTS:
|
|
||||||
if (!fVerbose)
|
|
||||||
break;
|
|
||||||
printf("\tconflicts: %s", value.resolvableExpression.name);
|
|
||||||
if (value.resolvableExpression.haveOpAndVersion) {
|
|
||||||
printf(" %s ", BPackageResolvableExpression::kOperatorNames[
|
|
||||||
value.resolvableExpression.op]);
|
|
||||||
_PrintPackageVersion(value.resolvableExpression.version);
|
|
||||||
}
|
|
||||||
printf("\n");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_FRESHENS:
|
|
||||||
if (!fVerbose)
|
|
||||||
break;
|
|
||||||
printf("\tfreshens: %s", value.resolvableExpression.name);
|
|
||||||
if (value.resolvableExpression.haveOpAndVersion) {
|
|
||||||
printf(" %s ", BPackageResolvableExpression::kOperatorNames[
|
|
||||||
value.resolvableExpression.op]);
|
|
||||||
_PrintPackageVersion(value.resolvableExpression.version);
|
|
||||||
}
|
|
||||||
printf("\n");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_REPLACES:
|
|
||||||
if (!fVerbose)
|
|
||||||
break;
|
|
||||||
printf("\treplaces: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_CHECKSUM:
|
|
||||||
printf("\tchecksum: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_GLOBAL_WRITABLE_FILES:
|
|
||||||
if (!fVerbose)
|
|
||||||
break;
|
|
||||||
printf("\tglobal writable file: %s",
|
|
||||||
value.globalWritableFileInfo.path);
|
|
||||||
if (value.globalWritableFileInfo.isDirectory)
|
|
||||||
printf( " directory");
|
|
||||||
if (value.globalWritableFileInfo.updateType
|
|
||||||
< B_WRITABLE_FILE_UPDATE_TYPE_ENUM_COUNT) {
|
|
||||||
printf(" %s\n",
|
|
||||||
BPackageInfo::kWritableFileUpdateTypes[
|
|
||||||
value.globalWritableFileInfo.updateType]);
|
|
||||||
} else
|
|
||||||
printf("\n");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_USER_SETTINGS_FILES:
|
|
||||||
if (!fVerbose)
|
|
||||||
break;
|
|
||||||
printf("\tuser settings file: %s",
|
|
||||||
value.userSettingsFileInfo.path);
|
|
||||||
if (value.globalWritableFileInfo.isDirectory) {
|
|
||||||
printf( " directory\n");
|
|
||||||
} else if (value.userSettingsFileInfo.templatePath != NULL) {
|
|
||||||
printf(" template %s\n",
|
|
||||||
value.userSettingsFileInfo.templatePath);
|
|
||||||
} else
|
|
||||||
printf("\n");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_USERS:
|
|
||||||
if (!fVerbose)
|
|
||||||
break;
|
|
||||||
printf("\tuser: %s\n", value.user.name);
|
|
||||||
if (value.user.realName != NULL)
|
|
||||||
printf("\t\treal name: %s\n", value.user.realName);
|
|
||||||
if (value.user.home != NULL)
|
|
||||||
printf("\t\thome: %s\n", value.user.home);
|
|
||||||
if (value.user.shell != NULL)
|
|
||||||
printf("\t\tshell: %s\n", value.user.shell);
|
|
||||||
for (size_t i = 0; i < value.user.groupCount; i++)
|
|
||||||
printf("\t\tgroup: %s\n", value.user.groups[i]);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_GROUPS:
|
|
||||||
if (!fVerbose)
|
|
||||||
break;
|
|
||||||
printf("\tgroup: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_POST_INSTALL_SCRIPTS:
|
|
||||||
if (!fVerbose)
|
|
||||||
break;
|
|
||||||
printf("\tpost install script: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case B_PACKAGE_INFO_INSTALL_PATH:
|
|
||||||
if (!fVerbose)
|
|
||||||
break;
|
|
||||||
printf("\tinstall path: %s\n", value.string);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
printf(
|
|
||||||
"*** Invalid package attribute section: unexpected "
|
|
||||||
"package attribute id %d encountered\n", value.attributeID);
|
"package attribute id %d encountered\n", value.attributeID);
|
||||||
return B_BAD_DATA;
|
return B_BAD_DATA;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
@@ -296,8 +95,9 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int fLevel;
|
PackageInfoPrinter fPrinter;
|
||||||
bool fVerbose;
|
int fLevel;
|
||||||
|
bool fVerbose;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user