Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add option to list elements recursively in the cli #2345

merged 2 commits into from Oct 3, 2018


None yet
2 participants
Copy link

vi-n commented Oct 2, 2018


In keepassxc-cli it's possible to list the elements in the database but there was no way to list them recursively, this pull request add's that option.

The functionality to recursively print the database was already in the codebase. This pull request only enables the functionality to be used by the end user.

Motivation and context

Removes the need to use "extract" when doing simple scripting tasks.

How has this been tested?

Tested it with several commands:

  • keepasxc-cli ls database.kdbx
    Lists only the top elements in the database
  • keepasxc-cli ls -R database.kdbx
    Lists everything from the top element of the database
  • keepasxc-cli ls database.kdbx group
    Lists only the top elements of the specified group
  • keepasxc-cli ls -R database.kdbx group
    Lists everything from the specified group down
  • keepasxc-cli ls
    Shows a help screen including the new option.

Types of changes

  • New feature (non-breaking change which adds functionality)


  • I have read the CONTRIBUTING document. [REQUIRED]
  • My code follows the code style of this project. [REQUIRED]
  • All new and existing tests passed. [REQUIRED]
  • I have compiled and verified my code with -DWITH_ASAN=ON. [REQUIRED]
Copy link

phoerious left a comment

Thank you for your submission. There are a few things I need you to change.

@@ -50,6 +50,7 @@ int List::execute(const QStringList& arguments)
QObject::tr("Key file of the database."),
parser.addOption({{"R", "recursive"}, "Recursive mode, list elements recursively"});

This comment has been minimized.

Copy link

phoerious Oct 2, 2018


This needs an explicit QStringList() lvalue as in the example above. The description also needs to be wrapped in QObject::tr().

@@ -58,22 +59,24 @@ int List::execute(const QStringList& arguments)

bool recursive = parser.isSet({"R", "recursive"});

This comment has been minimized.

Copy link

phoerious Oct 2, 2018


Re-use the explicit command line option from above.

@phoerious phoerious added this to the v2.4.0 milestone Oct 2, 2018

@vi-n vi-n force-pushed the vi-n:develop branch 2 times, most recently from 61747de to 56e478e Oct 3, 2018

vi-n added some commits Oct 2, 2018

Make the recurivse command line option definition explicit
* Make the command line option an explicit QCommandLine option
* Wrap the description in a QObject::tr for translation purposes

@vi-n vi-n force-pushed the vi-n:develop branch from 56e478e to 066cb06 Oct 3, 2018

@phoerious phoerious merged commit 4ff63c2 into keepassxreboot:develop Oct 3, 2018

3 checks passed

CodeFactor No issues found.
Ubuntu Linux (KeepassXC) TeamCity build finished
Windows 10 (KeepassXC) TeamCity build finished

@louib louib referenced this pull request Nov 8, 2018


Document list -R option. #2464

vi-n added a commit to vi-n/keepassxc that referenced this pull request Nov 13, 2018

droidmonkey added a commit that referenced this pull request Mar 19, 2019

Release 2.4.0
- New Database Wizard [#1952]
- Advanced Search [#1797]
- Automatic update checker [#2648]
- KeeShare database synchronization [#2109, #1992, #2738, #2742, #2746, #2739]
- Improve favicon fetching; transition to Duck-Duck-Go [#2795, #2011, #2439]
- Remove KeePassHttp support [#1752]
- CLI: output info to stderr for easier scripting [#2558]
- CLI: Add --quiet option [#2507]
- CLI: Add create command [#2540]
- CLI: Add recursive listing of entries [#2345]
- CLI: Fix stdin/stdout encoding on Windows [#2425]
- SSH Agent: Support OpenSSH for Windows [#1994]
- macOS: TouchID Quick Unlock [#1851]
- macOS: Multiple improvements; include CLI in DMG [#2165, #2331, #2583]
- Linux: Prevent Klipper from storing secrets in clipboard [#1969]
- Linux: Use polling based file watching for NFS [#2171]
- Linux: Enable use of browser plugin in Snap build [#2802]
- TOTP QR Code Generator [#1167]
- High-DPI Scaling for 4k screens [#2404]
- Make keyboard shortcuts more consistent [#2431]
- Warn user if deleting referenced entries [#1744]
- Allow toolbar to be hidden and repositioned [#1819, #2357]
- Increase max allowed database timeout to 12 hours [#2173]
- Password generator uses existing password length by default [#2318]
- Improve alert message box button labels [#2376]
- Show message when a database merge makes no changes [#2551]
- Browser Integration Enhancements [#1497, #2253, #1904, #2232, #1850, #2218, #2391, #2396, #2542, #2622, #2637, #2790]
- Overall Code Improvements [#2316, #2284, #2351, #2402, #2410, #2419, #2422, #2443, #2491, #2506, #2610, #2667, #2709, #2731]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.