Giter VIP home page Giter VIP logo

wireapp / kalium Goto Github PK

View Code? Open in Web Editor NEW
44.0 20.0 5.0 160.85 MB

๐ŸŒ An SDK for creating Wire clients on Android and JVM. Expanding to iOS and Web.

Home Page: https://wireapp.github.io/kalium/

License: GNU General Public License v3.0

Makefile 0.06% Kotlin 99.93% JavaScript 0.01% Shell 0.01% Dockerfile 0.01%
android-library chat-application chat-sdk e2ee jvm kotlin kotlin-multiplatform multiplatform-kotlin-library

kalium's Introduction

Kalium Logo

Kalium

JVM & JS Tests codecov

How to build

Dependencies

Supported Platforms

  • 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

Building dependencies on macOS 12

Just run make, which will download and compile dependencies listed above from source, the output will be $PROJECT_ROOT$/native/libs

Running on your machine

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

Running the CLI

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
JVM
./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"
Native (Mac)

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

Detekt rules

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:

  1. IntelliJ -> Settings -> Plugins -> Marketplace -> Search and install "Detekt"

  2. 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

Dependency Graph

%%{
  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
Loading

This graph is generated using ./gradlew createModuleGraph. More about it here.

Logo

The logo is adapted from OpenMoji โ€“ the open-source emoji and icon project. License: CC BY-SA 4.0

kalium's People

Contributors

alexandreferris avatar augustocdias avatar borichellow avatar c-g-owen avatar comawill avatar dependabot[bot] avatar dkovacevic avatar dmkasperski avatar emil-wire avatar garzas avatar github-actions[bot] avatar gongracr avatar jk0cr avatar jschumacher-wire avatar lukasforst avatar mchenani avatar mohamadjaara avatar mohammedmokresh avatar mythsunwind avatar ohassine avatar rohan-wire avatar saleniuk avatar sysvinit avatar szymonmrozek avatar tmspzz avatar tronk12 avatar typfel avatar vitorhugods avatar yamilmedina avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.