- JDK 17 (ex: openjdk-17-jdk on Ubuntu)
- libsodium
- cryptobox-c
- cryptobox4j
- Android (see the Android module)
- JVM (see the cli module)
- iOS (partially)
- JavaScript (just a tiny bit)
The cli
can be executed on the terminal of any machine that
satisfies the dependencies mentioned above, and is capable of actions like:
- Logging in
- Create a group conversation
- Add user to group conversation
- Receive and send text messages in real time
- Remove another client from your account remotely
- Refill MSL key packages
Just run make
, which will download and compile dependencies listed above from source,
the output will be $PROJECT_ROOT$/native/libs
When running any tasks that require the native libraries (libsodium
, cryptobox-c
and cryptobox4j
), you need to pass their location as VM options like so:
-Djava.library.path=./path/to/native/libraries/mentioned/before
For example, if you want to run the task jvmTest
and the libraries are in ./native/libs
:
./gradlew jvmTest -Djava.library.path=./native/libs
You can see all commands and options by running login --help
Usage: cliapplication login [OPTIONS] COMMAND [ARGS]...
Options:
-e, --email TEXT Account email
-p, --password TEXT Account password
--environment TEXT Choose backend environment: can be production, staging
or an URL to a server configuration
-h, --help Show this message and exit
Commands:
create-group
listen-group
delete-client
add-member
remove-member
console
refill-key-packages
mark-as-read Mark a conversation as read
update-supported-protocols
./gradlew :cli:assemble
java -jar cli/build/libs/cli.jar login --email <email> --password <password> listen-group
or if you want the jar file deleted after your run:
./gradlew :cli:run --console=plain --quiet --args="login --email <email> --password <password> listen-group"
For running on arm64 mac
./gradlew :cli:macosArm64Binaries
./cli/build/bin/macosArm64/debugExecutable/cli.kexe login
For running on intel mac
./gradlew :cli:macosX64Binaries
./cli/build/bin/macosX64/debugExecutable/cli.kexe login
We use and try to maintain our codestyle uniformed, so apart from having our checks in place in our CI. You can have live feedback using the IDE, here is how:
-
IntelliJ -> Settings -> Plugins -> Marketplace -> Search and install "Detekt"
-
Settings -> Tools -> Detekt -> set: (replace $PROJECT_ROOT accordingly to your machine)
- Configuration Files: $PROJECT_ROOT/detekt/detekt.yml
- Baseline File: $PROJECT_ROOT/detekt/baseline.yml (optional)
- Plugin Jars: $PROJECT_ROOT/detekt-rules/build/libs/detekt-rules.jar (this will add our custom rules to provide live feedback)
or
You can run locally in your terminal:
./gradlew clean detekt
%%{
init: {
'theme': 'neutral'
}
}%%
graph LR
persistence --> logger
persistence --> util
samples --> logic
samples --> calling
samples --> network
samples --> cryptography
samples --> persistence
samples --> protobuf
samples --> logger
tango-tests --> network
tango-tests --> logic
tango-tests --> persistence
persistence-test --> persistence
testservice --> network
testservice --> cryptography
testservice --> logic
network --> logger
network --> protobuf
network --> util
network --> network-util
cryptography --> logger
monkeys --> network
monkeys --> cryptography
monkeys --> logic
monkeys --> util
android --> network
android --> cryptography
android --> logic
logic --> network-util
logic --> logger
logic --> calling
logic --> network
logic --> cryptography
logic --> persistence
logic --> protobuf
logic --> util
logic --> persistence-test
cli --> network
cli --> cryptography
cli --> logic
cli --> util
network-util --> logger
This graph is generated using ./gradlew createModuleGraph
. More about it here.
The logo is adapted from OpenMoji β the open-source emoji and icon project. License: CC BY-SA 4.0