mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-02-26 01:11:16 -05:00
Add a CLI option to list elements recursively (#2345)
This commit is contained in:
parent
aa7216b9d9
commit
4ff63c2bf5
@ -50,6 +50,11 @@ int List::execute(const QStringList& arguments)
|
|||||||
QObject::tr("Key file of the database."),
|
QObject::tr("Key file of the database."),
|
||||||
QObject::tr("path"));
|
QObject::tr("path"));
|
||||||
parser.addOption(keyFile);
|
parser.addOption(keyFile);
|
||||||
|
|
||||||
|
QCommandLineOption recursiveOption(QStringList() << "R"
|
||||||
|
<< "recursive",
|
||||||
|
QObject::tr("Recursive mode, list elements recursively"));
|
||||||
|
parser.addOption(recursiveOption);
|
||||||
parser.process(arguments);
|
parser.process(arguments);
|
||||||
|
|
||||||
const QStringList args = parser.positionalArguments();
|
const QStringList args = parser.positionalArguments();
|
||||||
@ -58,22 +63,24 @@ int List::execute(const QStringList& arguments)
|
|||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool recursive = parser.isSet(recursiveOption);
|
||||||
|
|
||||||
Database* db = Database::unlockFromStdin(args.at(0), parser.value(keyFile));
|
Database* db = Database::unlockFromStdin(args.at(0), parser.value(keyFile));
|
||||||
if (db == nullptr) {
|
if (db == nullptr) {
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.size() == 2) {
|
if (args.size() == 2) {
|
||||||
return this->listGroup(db, args.at(1));
|
return this->listGroup(db, recursive, args.at(1));
|
||||||
}
|
}
|
||||||
return this->listGroup(db);
|
return this->listGroup(db, recursive);
|
||||||
}
|
}
|
||||||
|
|
||||||
int List::listGroup(Database* database, QString groupPath)
|
int List::listGroup(Database* database, bool recursive, QString groupPath)
|
||||||
{
|
{
|
||||||
QTextStream outputTextStream(stdout, QIODevice::WriteOnly);
|
QTextStream outputTextStream(stdout, QIODevice::WriteOnly);
|
||||||
if (groupPath.isEmpty()) {
|
if (groupPath.isEmpty()) {
|
||||||
outputTextStream << database->rootGroup()->print();
|
outputTextStream << database->rootGroup()->print(recursive);
|
||||||
outputTextStream.flush();
|
outputTextStream.flush();
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -84,7 +91,7 @@ int List::listGroup(Database* database, QString groupPath)
|
|||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
outputTextStream << group->print();
|
outputTextStream << group->print(recursive);
|
||||||
outputTextStream.flush();
|
outputTextStream.flush();
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ public:
|
|||||||
List();
|
List();
|
||||||
~List();
|
~List();
|
||||||
int execute(const QStringList& arguments);
|
int execute(const QStringList& arguments);
|
||||||
int listGroup(Database* database, QString groupPath = QString(""));
|
int listGroup(Database* database, bool recursive, QString groupPath = QString(""));
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // KEEPASSXC_LIST_H
|
#endif // KEEPASSXC_LIST_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user