diff --git a/build.gradle b/build.gradle index d9beda7673e1e3e41609b31276bd30052b129342..36a5303eacecfca75732749c28050905b858f079 100644 --- a/build.gradle +++ b/build.gradle @@ -19,6 +19,6 @@ allprojects { } } -task clean (type: Delete) { +task clean(type: Delete) { delete rootProject.buildDir } diff --git a/mailbox/.gitignore b/mailbox-android/.gitignore similarity index 100% rename from mailbox/.gitignore rename to mailbox-android/.gitignore diff --git a/mailbox/build.gradle b/mailbox-android/build.gradle similarity index 97% rename from mailbox/build.gradle rename to mailbox-android/build.gradle index 1e313bb4db1b61bc056b0d14b851689cfa8dcc5d..a90a9f1c4351082f719b6578c7decf5eb64bb035 100644 --- a/mailbox/build.gradle +++ b/mailbox-android/build.gradle @@ -44,7 +44,8 @@ android { } dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation project(path: ':mailbox-core', configuration: 'default') + implementation 'androidx.appcompat:appcompat:1.3.1' implementation "androidx.activity:activity-ktx:1.3.0" implementation "androidx.fragment:fragment-ktx:1.3.6" diff --git a/mailbox/proguard-rules.pro b/mailbox-android/proguard-rules.pro similarity index 100% rename from mailbox/proguard-rules.pro rename to mailbox-android/proguard-rules.pro diff --git a/mailbox/src/main/AndroidManifest.xml b/mailbox-android/src/main/AndroidManifest.xml similarity index 85% rename from mailbox/src/main/AndroidManifest.xml rename to mailbox-android/src/main/AndroidManifest.xml index 0e535a95782692fe221e63d110bd0f2681c52fde..7ecc940b5595f8575158169b7016c59617df104d 100644 --- a/mailbox/src/main/AndroidManifest.xml +++ b/mailbox-android/src/main/AndroidManifest.xml @@ -8,7 +8,7 @@ <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <application - android:name=".MailboxApplication" + android:name=".android.MailboxApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" @@ -16,9 +16,9 @@ android:supportsRtl="true" android:theme="@style/Theme.Briarmailbox"> - <service android:name=".MailboxService" /> + <service android:name=".android.MailboxService" /> - <activity android:name=".MainActivity"> + <activity android:name=".android.MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> diff --git a/mailbox/src/main/java/org/briarproject/mailbox/ApplicationComponent.kt b/mailbox-android/src/main/java/org/briarproject/mailbox/android/ApplicationComponent.kt similarity index 73% rename from mailbox/src/main/java/org/briarproject/mailbox/ApplicationComponent.kt rename to mailbox-android/src/main/java/org/briarproject/mailbox/android/ApplicationComponent.kt index f9f2c7562ed247ac9d0e9a4c7ff7a03879e5e7de..72dab53170f5a22137ce276a388690307bab04b3 100644 --- a/mailbox/src/main/java/org/briarproject/mailbox/ApplicationComponent.kt +++ b/mailbox-android/src/main/java/org/briarproject/mailbox/android/ApplicationComponent.kt @@ -1,4 +1,4 @@ -package org.briarproject.mailbox +package org.briarproject.mailbox.android import dagger.Component diff --git a/mailbox/src/main/java/org/briarproject/mailbox/MailboxApplication.kt b/mailbox-android/src/main/java/org/briarproject/mailbox/android/MailboxApplication.kt similarity index 86% rename from mailbox/src/main/java/org/briarproject/mailbox/MailboxApplication.kt rename to mailbox-android/src/main/java/org/briarproject/mailbox/android/MailboxApplication.kt index 72f53354ea774fdd788292aa6d9ed7ac7632e282..ba58719345388507e89498d934089a8d94aff303 100644 --- a/mailbox/src/main/java/org/briarproject/mailbox/MailboxApplication.kt +++ b/mailbox-android/src/main/java/org/briarproject/mailbox/android/MailboxApplication.kt @@ -1,4 +1,4 @@ -package org.briarproject.mailbox +package org.briarproject.mailbox.android import androidx.multidex.MultiDexApplication import dagger.hilt.android.HiltAndroidApp diff --git a/mailbox/src/main/java/org/briarproject/mailbox/MailboxNotificationManager.kt b/mailbox-android/src/main/java/org/briarproject/mailbox/android/MailboxNotificationManager.kt similarity index 96% rename from mailbox/src/main/java/org/briarproject/mailbox/MailboxNotificationManager.kt rename to mailbox-android/src/main/java/org/briarproject/mailbox/android/MailboxNotificationManager.kt index 476aaaa040e4063c423d7f474704e382bd245359..942b7bb700d9b05809d8da8a9cd0fb32788890c3 100644 --- a/mailbox/src/main/java/org/briarproject/mailbox/MailboxNotificationManager.kt +++ b/mailbox-android/src/main/java/org/briarproject/mailbox/android/MailboxNotificationManager.kt @@ -1,4 +1,4 @@ -package org.briarproject.mailbox +package org.briarproject.mailbox.android import android.app.Notification import android.app.NotificationChannel @@ -13,6 +13,7 @@ import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat.PRIORITY_MIN import androidx.core.content.ContextCompat.getSystemService import dagger.hilt.android.qualifiers.ApplicationContext +import org.briarproject.mailbox.R import javax.inject.Inject import javax.inject.Singleton diff --git a/mailbox/src/main/java/org/briarproject/mailbox/MailboxService.kt b/mailbox-android/src/main/java/org/briarproject/mailbox/android/MailboxService.kt similarity index 91% rename from mailbox/src/main/java/org/briarproject/mailbox/MailboxService.kt rename to mailbox-android/src/main/java/org/briarproject/mailbox/android/MailboxService.kt index be22c09ac7b0bd3c973b98601fcdc7c59e14edf7..6c9505fcebdbac9ccb6a1f6a868e2afb6288d95f 100644 --- a/mailbox/src/main/java/org/briarproject/mailbox/MailboxService.kt +++ b/mailbox-android/src/main/java/org/briarproject/mailbox/android/MailboxService.kt @@ -1,4 +1,4 @@ -package org.briarproject.mailbox +package org.briarproject.mailbox.android import android.app.Service import android.content.Context @@ -6,7 +6,7 @@ import android.content.Intent import android.os.IBinder import androidx.core.content.ContextCompat import dagger.hilt.android.AndroidEntryPoint -import org.briarproject.mailbox.MailboxNotificationManager.Companion.NOTIFICATION_MAIN_ID +import org.briarproject.mailbox.android.MailboxNotificationManager.Companion.NOTIFICATION_MAIN_ID import org.briarproject.mailbox.server.WebServerManager import javax.inject.Inject diff --git a/mailbox/src/main/java/org/briarproject/mailbox/MailboxViewModel.kt b/mailbox-android/src/main/java/org/briarproject/mailbox/android/MailboxViewModel.kt similarity index 93% rename from mailbox/src/main/java/org/briarproject/mailbox/MailboxViewModel.kt rename to mailbox-android/src/main/java/org/briarproject/mailbox/android/MailboxViewModel.kt index 2784d8038c3df078fdce47fad9663d70fbf3cf52..9ca00b30f7441bae9d11dc2df903950ff3e1f0e7 100644 --- a/mailbox/src/main/java/org/briarproject/mailbox/MailboxViewModel.kt +++ b/mailbox-android/src/main/java/org/briarproject/mailbox/android/MailboxViewModel.kt @@ -1,4 +1,4 @@ -package org.briarproject.mailbox +package org.briarproject.mailbox.android import android.app.Application import androidx.lifecycle.AndroidViewModel diff --git a/mailbox/src/main/java/org/briarproject/mailbox/MainActivity.kt b/mailbox-android/src/main/java/org/briarproject/mailbox/android/MainActivity.kt similarity index 91% rename from mailbox/src/main/java/org/briarproject/mailbox/MainActivity.kt rename to mailbox-android/src/main/java/org/briarproject/mailbox/android/MainActivity.kt index 78ec30908d8fa8e260b3db3736bcf876b5206bbc..6d338040768cf0d36560aeef7fd41ac63d427e86 100644 --- a/mailbox/src/main/java/org/briarproject/mailbox/MainActivity.kt +++ b/mailbox-android/src/main/java/org/briarproject/mailbox/android/MainActivity.kt @@ -1,4 +1,4 @@ -package org.briarproject.mailbox +package org.briarproject.mailbox.android import android.os.Bundle import android.widget.Button @@ -6,6 +6,7 @@ import android.widget.TextView import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import dagger.hilt.android.AndroidEntryPoint +import org.briarproject.mailbox.R @AndroidEntryPoint class MainActivity : AppCompatActivity() { diff --git a/mailbox/src/main/java/org/briarproject/mailbox/server/Routing.kt b/mailbox-android/src/main/java/org/briarproject/mailbox/android/server/Routing.kt similarity index 100% rename from mailbox/src/main/java/org/briarproject/mailbox/server/Routing.kt rename to mailbox-android/src/main/java/org/briarproject/mailbox/android/server/Routing.kt diff --git a/mailbox/src/main/java/org/briarproject/mailbox/server/WebServerManager.kt b/mailbox-android/src/main/java/org/briarproject/mailbox/android/server/WebServerManager.kt similarity index 100% rename from mailbox/src/main/java/org/briarproject/mailbox/server/WebServerManager.kt rename to mailbox-android/src/main/java/org/briarproject/mailbox/android/server/WebServerManager.kt diff --git a/mailbox/src/main/res/drawable/ic_launcher_foreground.xml b/mailbox-android/src/main/res/drawable/ic_launcher_foreground.xml similarity index 100% rename from mailbox/src/main/res/drawable/ic_launcher_foreground.xml rename to mailbox-android/src/main/res/drawable/ic_launcher_foreground.xml diff --git a/mailbox/src/main/res/layout/activity_main.xml b/mailbox-android/src/main/res/layout/activity_main.xml similarity index 96% rename from mailbox/src/main/res/layout/activity_main.xml rename to mailbox-android/src/main/res/layout/activity_main.xml index d9571a8f01db7004980983960455c29a45575d8e..62bd8a4a775e0859a8e5bab58d0384860b85a1fe 100644 --- a/mailbox/src/main/res/layout/activity_main.xml +++ b/mailbox-android/src/main/res/layout/activity_main.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".MainActivity"> + tools:context=".android.MainActivity"> <TextView android:id="@+id/text" diff --git a/mailbox/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/mailbox-android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from mailbox/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to mailbox-android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/mailbox/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/mailbox-android/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from mailbox/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to mailbox-android/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/mailbox/src/main/res/values-night/themes.xml b/mailbox-android/src/main/res/values-night/themes.xml similarity index 100% rename from mailbox/src/main/res/values-night/themes.xml rename to mailbox-android/src/main/res/values-night/themes.xml diff --git a/mailbox/src/main/res/values/colors.xml b/mailbox-android/src/main/res/values/colors.xml similarity index 100% rename from mailbox/src/main/res/values/colors.xml rename to mailbox-android/src/main/res/values/colors.xml diff --git a/mailbox/src/main/res/values/ic_launcher_background.xml b/mailbox-android/src/main/res/values/ic_launcher_background.xml similarity index 100% rename from mailbox/src/main/res/values/ic_launcher_background.xml rename to mailbox-android/src/main/res/values/ic_launcher_background.xml diff --git a/mailbox/src/main/res/values/strings.xml b/mailbox-android/src/main/res/values/strings.xml similarity index 100% rename from mailbox/src/main/res/values/strings.xml rename to mailbox-android/src/main/res/values/strings.xml diff --git a/mailbox/src/main/res/values/themes.xml b/mailbox-android/src/main/res/values/themes.xml similarity index 100% rename from mailbox/src/main/res/values/themes.xml rename to mailbox-android/src/main/res/values/themes.xml diff --git a/mailbox-cli/build.gradle b/mailbox-cli/build.gradle new file mode 100644 index 0000000000000000000000000000000000000000..fac4db807ab8ed944265f77dcd37998eb769c9d7 --- /dev/null +++ b/mailbox-cli/build.gradle @@ -0,0 +1,39 @@ +import java.util.jar.JarEntry +import java.util.jar.JarFile +import java.util.jar.JarOutputStream + +import static java.util.Collections.list + +plugins { + id 'application' + id 'idea' + id 'org.jetbrains.kotlin.jvm' + id 'org.jetbrains.kotlin.kapt' +} + +sourceCompatibility = 1.8 +targetCompatibility = 1.8 + +dependencies { + implementation project(path: ':mailbox-core', configuration: 'default') + + implementation 'org.slf4j:slf4j-simple:1.7.30' + implementation 'com.github.ajalt:clikt:2.2.0' + + def junitVersion = '5.5.2' + testImplementation "org.junit.jupiter:junit-jupiter-api:$junitVersion" + testImplementation "org.junit.jupiter:junit-jupiter-params:$junitVersion" + testRuntime "org.junit.jupiter:junit-jupiter-engine:$junitVersion" + testImplementation 'io.mockk:mockk:1.10.4' +} + +application { + mainClassName = 'org.briarproject.mailbox.cli.MainKt' +} + +test { + useJUnitPlatform() + testLogging { + events "passed", "skipped", "failed" + } +} diff --git a/mailbox-cli/src/main/java/org/briarproject/mailbox/cli/Main.kt b/mailbox-cli/src/main/java/org/briarproject/mailbox/cli/Main.kt new file mode 100644 index 0000000000000000000000000000000000000000..ab13693777396c584feda930da7f410bb4cda41e --- /dev/null +++ b/mailbox-cli/src/main/java/org/briarproject/mailbox/cli/Main.kt @@ -0,0 +1,54 @@ +package org.briarproject.mailbox.cli + +import com.github.ajalt.clikt.core.CliktCommand +import com.github.ajalt.clikt.parameters.options.counted +import com.github.ajalt.clikt.parameters.options.default +import com.github.ajalt.clikt.parameters.options.flag +import com.github.ajalt.clikt.parameters.options.option +import com.github.ajalt.clikt.parameters.types.int +import org.slf4j.impl.SimpleLogger.DEFAULT_LOG_LEVEL_KEY +import java.io.File +import java.io.File.separator +import java.io.IOException +import java.lang.System.getProperty +import java.lang.System.setProperty +import java.nio.file.Files.setPosixFilePermissions +import java.nio.file.attribute.PosixFilePermission +import java.nio.file.attribute.PosixFilePermission.* +import java.util.logging.Level.* +import java.util.logging.LogManager + +private class Main : CliktCommand( + name = "briar-mailbox", + help = "Command line interface for the Briar Mailbox" +) { + private val debug by option("--debug", "-d", help = "Enable printing of debug messages").flag( + default = false + ) + private val verbosity by option( + "--verbose", + "-v", + help = "Print verbose log messages" + ).counted() + + override fun run() { + // logging + val levelSlf4j = if (debug) "DEBUG" else when (verbosity) { + 0 -> "WARN" + 1 -> "INFO" + else -> "DEBUG" + } + val level = if (debug) ALL else when (verbosity) { + 0 -> WARNING + 1 -> INFO + else -> ALL + } + setProperty(DEFAULT_LOG_LEVEL_KEY, levelSlf4j) + LogManager.getLogManager().getLogger("").level = level + + println("Hello Mailbox") + } + +} + +fun main(args: Array<String>) = Main().main(args) diff --git a/mailbox-core/build.gradle b/mailbox-core/build.gradle new file mode 100644 index 0000000000000000000000000000000000000000..c9959b80e7a3e8ac41b9fbd4e8c20e6e7b33e1f8 --- /dev/null +++ b/mailbox-core/build.gradle @@ -0,0 +1,26 @@ +plugins { + id 'java-library' + id 'idea' + id 'org.jetbrains.kotlin.jvm' + id 'org.jetbrains.kotlin.kapt' +} + +sourceCompatibility = 1.8 +targetCompatibility = 1.8 + +dependencies { + api "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + + def junitVersion = '5.5.2' + testImplementation "org.junit.jupiter:junit-jupiter-api:$junitVersion" + testImplementation "org.junit.jupiter:junit-jupiter-params:$junitVersion" + testRuntime "org.junit.jupiter:junit-jupiter-engine:$junitVersion" + testImplementation 'io.mockk:mockk:1.10.4' +} + +test { + useJUnitPlatform() + testLogging { + events "passed", "skipped", "failed" + } +} diff --git a/mailbox-core/src/main/java/org/briarproject/mailbox/core/Service.kt b/mailbox-core/src/main/java/org/briarproject/mailbox/core/Service.kt new file mode 100644 index 0000000000000000000000000000000000000000..7edf91883510e5ee7f410e877a7fa658fcd0f9df --- /dev/null +++ b/mailbox-core/src/main/java/org/briarproject/mailbox/core/Service.kt @@ -0,0 +1,4 @@ +package org.briarproject.mailbox.core + +interface Service { +} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 962945ceccc8cfd1cb7f10c50d65608d77d3d7d4..8ef7b26e7968e306807f269b864b9a0fb096fee9 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1,3 @@ -include ':mailbox' +include ':mailbox-core' +include ':mailbox-android' +include ':mailbox-cli'