Metadata-Version: 2.1
Name: pass2csv
Version: 0.1.3
Summary: Export pass(1), "the standard unix password manager", to CSV
Home-page: https://github.com/reinefjord/pass2csv
Author: Rupus Reinefjord
Author-email: rupus@reinefjord.net
License: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: Topic :: Utilities
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: python-gnupg

# pass2csv

Source is available [at GitHub](https://github.com/reinefjord/pass2csv).

You can install it directly from PyPI with pip:

    python3 -m pip install --user pass2csv


## Usage

```
$ pass2csv --help
usage: pass2csv [-h] [-a] [-b GPGBINARY] [-x] [-l LOGIN_FIELDS [LOGIN_FIELDS ...]] [-u]
                [-e EXCLUDE_ROWS [EXCLUDE_ROWS ...]]
                path

positional arguments:
  path                  path to the password-store folder to export

optional arguments:
  -h, --help            show this help message and exit
  -a, --agent           ask gpg to use its auth agent
  -b GPGBINARY, --gpgbinary GPGBINARY
                        path to the gpg binary you wish to use
  -x, --kpx             format the CSV for KeePassXC
  -l LOGIN_FIELDS [LOGIN_FIELDS ...], --login-fields LOGIN_FIELDS [LOGIN_FIELDS ...]
                        strings to interpret as names of login fields (only used with -x)
  -u, --get-url         match row starting with 'url:' and extract it (only used with -x)
  -e EXCLUDE_ROWS [EXCLUDE_ROWS ...], --exclude-rows EXCLUDE_ROWS [EXCLUDE_ROWS ...]
                        regexps to exclude from the notes field (only used with -x)
```


## Export format
There are two ways to export CSV data:

1.  The format for the KeePass Generic CSV Importer:

        Group(/),Title,Password,Notes

    Where 'Password' is the first line of the entry in `pass` and
    'Notes' are all subsequent lines. '\\' should not be interpreted as
    an escape character.

    This is the default mode.

2.  The format for the KeePassXC Importer:

        Group(/),Title,Login,Password,URL,Notes

    Where 'Password' is the first line of the entry in `pass`, 'User' is
    configured with `-l`, URL is extracted if `-u` is
    set, and 'Notes' contains any other fields that do not match
    `-e`.

    'User' field is chosen by searching for the first field with a name
    set by `-l`. Once the field is found, the login is set and the field
    is removed from notes.

    Use `-x` or `--kpx` to enable this mode.


### Example KeePassXC Import
- Cmd line

        pass2csv ~/.password-store -x -l username login email -u -e '^---$'

- Password entry (`sites/example`)

        password123
        ---
        username: user_name
        email: user@example.com
        url: example.com
        some_note

- Output CSV row (formatted)

        sites, example, user_name, password123, example.com, "email: user@example.com\nsome_note"

- `user_name` was chosen because `username` was the first argument to `-l`.
- Both login and URL fields were excluded from the notes field because they
  were used in another field.
- `---` Was not included in the notes field because it was matched by `-e`.


### Example KeePass Generic CSV Importer
- Cmd line

        pass2csv ~/.password-store

- Password entry: Same as above
- Output CSV row (formatted)

        sites, example, password123, "---\nusername: user_name\nemail: user@example.com\nurl: example.com\nsome_note"


## Development
Create a virtual environment:

    python3 -m venv venv

Activate the environment:

    . venv/bin/activate

Now you may either use `pip` directly to install the dependencies, or
you can install `pip-tools`. The latter is recommended.


### pip

    pip install -r requirements.txt


### pip-tools
[pip-tools](https://github.com/jazzband/pip-tools) can keep your virtual
environment in sync with the `requirements.txt` file, as well as
compiling a new `requirements.txt` when adding/removing a dependency in
`requirements.in`.

It is recommended that pip-tools is installed within the virtual
environment.

    pip install pip-tools
    pip-compile  # only necessary when adding/removing a dependency
    pip-sync


