yubioath-flutter/doc/development.adoc
2019-09-11 10:30:37 +02:00

63 lines
2.0 KiB
Plaintext

== Project outline
Yubico Authenticator is a Qt5 application written in QML that uses the plugin PyOtherSide to enable
the backend logic to be written in Python 3. The python library yubikey-manager is needed to communicate with the YubiKey,
and may be installed from pip or other package managers. If a specific version, (or branch or commit) is needed for development,
point to that version in requirements.txt.
== Build requirements
Yubico Authenticator currently requires Qt version 5.12 or higher.
== Working with the code
=== Install dependencies
It's assumed a Python environment with pip is installed.
==== Windows
Install https://www.qt.io/download[Qt5]. Build and install the Qt5 plugin http://pyotherside.readthedocs.io/en/latest/#building-pyotherside[PyOtherSide].
Make sure the http://www.swig.org/[swig] executable is in your PATH. Add http://libusb.info/[libusb] and https://developers.yubico.com/yubikey-personalization/[ykpers] DLLs to
the root of the repository of ykman (after setting up the project).
==== macOS
$ brew install python3 swig ykpers libusb qt
# Allow access to qmake - see https://superuser.com/a/1153338/104372
$ brew link qt --force
Build and install the Qt5 plugin http://pyotherside.readthedocs.io/en/latest/#building-pyotherside[PyOtherSide].
==== Linux (Debian-based distributions)
$ sudo add-apt-repository -y ppa:yubico/stable
$ sudo apt update
$ sudo apt install python3-yubikey-manager
Install Qt 5.12+ with offical installer.
Build and install the Qt5 plugin http://pyotherside.readthedocs.io/en/latest/#building-pyotherside[PyOtherSide]
=== Setup the repository
$ git clone https://github.com/Yubico/yubioath-desktop.git
$ cd yubioath-desktop
=== Compile the app
$ qmake && make
=== Run the app:
$ yubioath-desktop
== Code Style & Linting
This project uses http://flake8.pycqa.org/[Flake8] (for the python parts) and qmllint
(for the QML parts) for code style with a http://pre-commit.com/[pre-commit] hook.
To use these:
$ pip install pre-commit flake8
$ pre-commit install