├── mimemagic
├── .gitignore
├── consumer-rules.pro
├── src
│ ├── main
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ │ └── de
│ │ │ └── datlag
│ │ │ └── mimemagic
│ │ │ ├── commons
│ │ │ ├── ExtendInputStream.kt
│ │ │ ├── ExtendByteArray.kt
│ │ │ ├── ExtendContext.kt
│ │ │ ├── ExtendContentResolver.kt
│ │ │ ├── ExtendFile.kt
│ │ │ └── ExtendUri.kt
│ │ │ ├── MimePrefix.kt
│ │ │ ├── Magic.kt
│ │ │ ├── MimeSuffix.kt
│ │ │ └── MimeData.kt
│ ├── test
│ │ └── java
│ │ │ └── de
│ │ │ └── datlag
│ │ │ └── mimemagic
│ │ │ └── ExampleUnitTest.kt
│ └── androidTest
│ │ └── java
│ │ └── de
│ │ └── datlag
│ │ └── mimemagic
│ │ └── ExampleInstrumentedTest.kt
├── proguard-rules.pro
└── build.gradle
├── settings.gradle
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── app
├── src
│ ├── main
│ │ ├── res
│ │ │ ├── mipmap-hdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-anydpi-v26
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── values
│ │ │ │ ├── colors.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── themes.xml
│ │ │ ├── values-night
│ │ │ │ └── themes.xml
│ │ │ ├── layout
│ │ │ │ ├── activity_main.xml
│ │ │ │ └── recycler_mime_item.xml
│ │ │ ├── drawable-v24
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ └── drawable
│ │ │ │ └── ic_launcher_background.xml
│ │ ├── java
│ │ │ └── de
│ │ │ │ └── datlag
│ │ │ │ └── mimemagicexample
│ │ │ │ ├── RecyclerData.kt
│ │ │ │ ├── RecyclerAdapter.kt
│ │ │ │ └── MainActivity.kt
│ │ └── AndroidManifest.xml
│ ├── test
│ │ └── java
│ │ │ └── de
│ │ │ └── datlag
│ │ │ └── mimemagicexample
│ │ │ └── ExampleUnitTest.kt
│ └── androidTest
│ │ └── java
│ │ └── de
│ │ └── datlag
│ │ └── mimemagicexample
│ │ └── ExampleInstrumentedTest.kt
├── proguard-rules.pro
├── build.gradle
└── .gitignore
├── .github
└── FUNDING.yml
├── gradle.properties
├── gradlew.bat
├── README.md
├── gradlew
├── LICENSE
└── .gitignore
/mimemagic/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/mimemagic/consumer-rules.pro:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':mimemagic'
2 | include ':app'
3 | rootProject.name = "MimeMagicExample"
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DatL4g/MimeMagic-Android/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DatL4g/MimeMagic-Android/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DatL4g/MimeMagic-Android/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 |
2 | # These are supported funding model platforms
3 |
4 | github: DatL4g
5 | patreon: datlag
6 | custom: ['paypal.me/datlag']
7 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DatL4g/MimeMagic-Android/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DatL4g/MimeMagic-Android/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DatL4g/MimeMagic-Android/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DatL4g/MimeMagic-Android/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DatL4g/MimeMagic-Android/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DatL4g/MimeMagic-Android/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DatL4g/MimeMagic-Android/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DatL4g/MimeMagic-Android/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/mimemagic/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/java/de/datlag/mimemagicexample/RecyclerData.kt:
--------------------------------------------------------------------------------
1 | package de.datlag.mimemagicexample
2 |
3 | import de.datlag.mimemagic.MimeData
4 |
5 | data class RecyclerData(
6 | val header: String,
7 | val mimeData: MimeData
8 | )
--------------------------------------------------------------------------------
/mimemagic/src/main/java/de/datlag/mimemagic/commons/ExtendInputStream.kt:
--------------------------------------------------------------------------------
1 | package de.datlag.mimemagic.commons
2 |
3 | import de.datlag.mimemagic.MimeData
4 | import java.io.InputStream
5 |
6 | fun InputStream.getMimeData() = MimeData.fromInputStream(this)
--------------------------------------------------------------------------------
/mimemagic/src/main/java/de/datlag/mimemagic/commons/ExtendByteArray.kt:
--------------------------------------------------------------------------------
1 | package de.datlag.mimemagic.commons
2 |
3 | import de.datlag.mimemagic.MimeData
4 |
5 | @JvmOverloads
6 | fun ByteArray.getMimeData(offset: Int = 0, length: Int = this.size) = MimeData.fromByteArray(this, offset, length)
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Nov 07 14:47:23 CET 2020
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
7 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFBB86FC
4 | #FF6200EE
5 | #FF3700B3
6 | #FF000000
7 | #FFFFFFFF
8 |
--------------------------------------------------------------------------------
/mimemagic/src/main/java/de/datlag/mimemagic/MimePrefix.kt:
--------------------------------------------------------------------------------
1 | package de.datlag.mimemagic
2 |
3 | object MimePrefix {
4 |
5 | const val AUDIO = "audio"
6 | const val APPLICATION = "application"
7 | const val FONT = "font"
8 | const val IMAGE = "image"
9 | const val TEXT = "text"
10 | const val VIDEO = "video"
11 |
12 | }
--------------------------------------------------------------------------------
/mimemagic/src/test/java/de/datlag/mimemagic/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package de.datlag.mimemagic
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/app/src/test/java/de/datlag/mimemagicexample/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package de.datlag.mimemagicexample
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | MimeMagicExample
3 | Choose File
4 | is Archive
5 | is Audio
6 | is Document
7 | is Font
8 | is Image
9 | is Text
10 | is Video
11 |
--------------------------------------------------------------------------------
/mimemagic/src/main/java/de/datlag/mimemagic/commons/ExtendContext.kt:
--------------------------------------------------------------------------------
1 | package de.datlag.mimemagic.commons
2 |
3 | import android.content.Context
4 | import android.net.Uri
5 | import android.webkit.MimeTypeMap
6 | import de.datlag.mimemagic.MimeData
7 | import java.io.File
8 |
9 | fun Context.getMimeData(file: File) = MimeData.fromFile(file, this)
10 |
11 | @JvmOverloads
12 | fun Context.getMimeData(uri: Uri, extension: String = MimeTypeMap.getFileExtensionFromUrl(uri.toString())) = MimeData.fromUri(uri, this, extension)
--------------------------------------------------------------------------------
/mimemagic/src/main/java/de/datlag/mimemagic/commons/ExtendContentResolver.kt:
--------------------------------------------------------------------------------
1 | package de.datlag.mimemagic.commons
2 |
3 | import android.content.ContentResolver
4 | import android.net.Uri
5 | import android.webkit.MimeTypeMap
6 | import de.datlag.mimemagic.MimeData
7 | import java.io.File
8 |
9 | fun ContentResolver.getMimeData(file: File) = MimeData.fromFile(file, this)
10 |
11 | fun ContentResolver.getMimeData(uri: Uri, extension: String = MimeTypeMap.getFileExtensionFromUrl(uri.toString())) = MimeData.fromUri(uri, this, extension)
--------------------------------------------------------------------------------
/mimemagic/src/main/java/de/datlag/mimemagic/commons/ExtendFile.kt:
--------------------------------------------------------------------------------
1 | package de.datlag.mimemagic.commons
2 |
3 | import android.content.ContentResolver
4 | import android.content.Context
5 | import de.datlag.mimemagic.MimeData
6 | import java.io.File
7 |
8 | @JvmOverloads
9 | fun File.getMimeData(context: Context? = null): MimeData {
10 | return if (context == null) {
11 | MimeData.fromFile(this)
12 | } else {
13 | MimeData.fromFile(this, context)
14 | }
15 | }
16 |
17 | fun File.getMimeData(contentResolver: ContentResolver): MimeData {
18 | return MimeData.fromFile(this, contentResolver)
19 | }
--------------------------------------------------------------------------------
/mimemagic/src/main/java/de/datlag/mimemagic/commons/ExtendUri.kt:
--------------------------------------------------------------------------------
1 | package de.datlag.mimemagic.commons
2 |
3 | import android.content.ContentResolver
4 | import android.content.Context
5 | import android.net.Uri
6 | import android.webkit.MimeTypeMap
7 | import de.datlag.mimemagic.MimeData
8 |
9 | @JvmOverloads
10 | fun Uri.getMimeData(context: Context, extension: String = MimeTypeMap.getFileExtensionFromUrl(this.toString())) = MimeData.fromUri(this, context, extension)
11 |
12 | @JvmOverloads
13 | fun Uri.getMimeData(contentResolver: ContentResolver, extension: String = MimeTypeMap.getFileExtensionFromUrl(this.toString())) = MimeData.fromUri(this, contentResolver, extension)
--------------------------------------------------------------------------------
/mimemagic/src/androidTest/java/de/datlag/mimemagic/ExampleInstrumentedTest.kt:
--------------------------------------------------------------------------------
1 | package de.datlag.mimemagic
2 |
3 | import androidx.test.platform.app.InstrumentationRegistry
4 | import androidx.test.ext.junit.runners.AndroidJUnit4
5 |
6 | import org.junit.Test
7 | import org.junit.runner.RunWith
8 |
9 | import org.junit.Assert.*
10 |
11 | /**
12 | * Instrumented test, which will execute on an Android device.
13 | *
14 | * See [testing documentation](http://d.android.com/tools/testing).
15 | */
16 | @RunWith(AndroidJUnit4::class)
17 | class ExampleInstrumentedTest {
18 | @Test
19 | fun useAppContext() {
20 | // Context of the app under test.
21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext
22 | assertEquals("de.datlag.mimemagic.test", appContext.packageName)
23 | }
24 | }
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/app/src/androidTest/java/de/datlag/mimemagicexample/ExampleInstrumentedTest.kt:
--------------------------------------------------------------------------------
1 | package de.datlag.mimemagicexample
2 |
3 | import androidx.test.platform.app.InstrumentationRegistry
4 | import androidx.test.ext.junit.runners.AndroidJUnit4
5 |
6 | import org.junit.Test
7 | import org.junit.runner.RunWith
8 |
9 | import org.junit.Assert.*
10 |
11 | /**
12 | * Instrumented test, which will execute on an Android device.
13 | *
14 | * See [testing documentation](http://d.android.com/tools/testing).
15 | */
16 | @RunWith(AndroidJUnit4::class)
17 | class ExampleInstrumentedTest {
18 | @Test
19 | fun useAppContext() {
20 | // Context of the app under test.
21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext
22 | assertEquals("de.datlag.mimemagicexample", appContext.packageName)
23 | }
24 | }
--------------------------------------------------------------------------------
/mimemagic/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/app/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/values-night/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 | # AndroidX package structure to make it clearer which packages are bundled with the
15 | # Android operating system, and which are packaged with your app"s APK
16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn
17 | android.useAndroidX=true
18 | # Automatically convert third-party libraries to use AndroidX
19 | android.enableJetifier=true
20 | # Kotlin code style for this project: "official" or "obsolete":
21 | kotlin.code.style=official
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
15 |
16 |
27 |
28 |
--------------------------------------------------------------------------------
/mimemagic/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'com.android.library'
3 | id 'kotlin-android'
4 | id 'kotlin-parcelize'
5 | }
6 |
7 | android {
8 | compileSdkVersion 30
9 | buildToolsVersion "30.0.3"
10 |
11 | defaultConfig {
12 | minSdkVersion 16
13 | targetSdkVersion 30
14 | versionCode 103
15 | versionName "1.0.3"
16 |
17 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
18 | consumerProguardFiles "consumer-rules.pro"
19 | }
20 |
21 | buildTypes {
22 | release {
23 | minifyEnabled false
24 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
25 | }
26 | }
27 | compileOptions {
28 | sourceCompatibility JavaVersion.VERSION_1_8
29 | targetCompatibility JavaVersion.VERSION_1_8
30 | }
31 | kotlinOptions {
32 | jvmTarget = '1.8'
33 | }
34 | }
35 |
36 | dependencies {
37 |
38 | implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
39 | implementation 'androidx.core:core-ktx:1.3.2'
40 | implementation 'androidx.appcompat:appcompat:1.2.0'
41 | testImplementation 'junit:junit:4.13.2'
42 | androidTestImplementation 'androidx.test.ext:junit:1.1.2'
43 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
44 | }
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'com.android.application'
3 | id 'kotlin-android'
4 | id 'kotlin-parcelize'
5 | }
6 |
7 | android {
8 | compileSdkVersion 30
9 | buildToolsVersion "30.0.3"
10 |
11 | defaultConfig {
12 | applicationId "de.datlag.mimemagicexample"
13 | minSdkVersion 16
14 | targetSdkVersion 30
15 | versionCode 1
16 | versionName "1.0"
17 |
18 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
19 | }
20 |
21 | buildTypes {
22 | release {
23 | minifyEnabled false
24 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
25 | }
26 | }
27 | compileOptions {
28 | sourceCompatibility JavaVersion.VERSION_1_8
29 | targetCompatibility JavaVersion.VERSION_1_8
30 | }
31 | kotlinOptions {
32 | jvmTarget = '1.8'
33 | }
34 | }
35 |
36 | dependencies {
37 |
38 | implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
39 | implementation 'androidx.core:core-ktx:1.3.2'
40 | implementation 'androidx.appcompat:appcompat:1.2.0'
41 | implementation 'com.google.android.material:material:1.3.0'
42 | implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
43 | implementation project(path: ':mimemagic')
44 | testImplementation 'junit:junit:4.13.2'
45 | androidTestImplementation 'androidx.test.ext:junit:1.1.2'
46 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
47 |
48 | implementation 'com.github.hedzr:android-file-chooser:v1.2.0'
49 | }
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
15 |
18 |
21 |
22 |
23 |
24 |
30 |
--------------------------------------------------------------------------------
/mimemagic/src/main/java/de/datlag/mimemagic/Magic.kt:
--------------------------------------------------------------------------------
1 | package de.datlag.mimemagic
2 |
3 | import android.content.ContentResolver
4 | import android.net.Uri
5 | import android.os.Build
6 | import android.webkit.MimeTypeMap
7 | import java.io.BufferedInputStream
8 | import java.io.InputStream
9 | import java.net.URLConnection
10 | import java.nio.file.Files
11 | import java.nio.file.Paths
12 | import java.util.*
13 |
14 | internal object Magic {
15 |
16 | fun guessContentType(inputStream: InputStream): String? {
17 | val bufferedStream = if (inputStream is BufferedInputStream) inputStream else BufferedInputStream(inputStream)
18 | return try {
19 | URLConnection.guessContentTypeFromStream(bufferedStream)
20 | } catch (ignored: Exception) {
21 | null
22 | } finally {
23 | try {
24 | bufferedStream.close()
25 | } catch (ignore: Exception) { }
26 | try {
27 | inputStream.close()
28 | } catch (ignore: Exception) { }
29 | }
30 | }
31 |
32 | fun getUriContentType(uri: Uri, contentResolver: ContentResolver, extension: String): String? {
33 | return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
34 | val path = Paths.get(uri.toString())
35 | try {
36 | Files.probeContentType(path) ?: fallbackUriContentType(uri, contentResolver, extension)
37 | } catch (ignored: Exception) {
38 | fallbackUriContentType(uri, contentResolver, extension)
39 | }
40 | } else {
41 | fallbackUriContentType(uri, contentResolver, extension)
42 | }
43 | }
44 |
45 | private fun fallbackUriContentType(uri: Uri, contentResolver: ContentResolver, extension: String): String? {
46 | return if (uri.scheme == ContentResolver.SCHEME_CONTENT) {
47 | contentResolver.getType(uri)
48 | } else {
49 | MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension.toLowerCase(Locale.getDefault()))
50 | }
51 | }
52 |
53 | }
--------------------------------------------------------------------------------
/app/src/main/java/de/datlag/mimemagicexample/RecyclerAdapter.kt:
--------------------------------------------------------------------------------
1 | package de.datlag.mimemagicexample
2 |
3 | import android.view.LayoutInflater
4 | import android.view.View
5 | import android.view.ViewGroup
6 | import android.widget.CheckBox
7 | import android.widget.TextView
8 | import androidx.recyclerview.widget.RecyclerView
9 |
10 | class RecyclerAdapter(private val items: List) : RecyclerView.Adapter() {
11 |
12 | inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
13 |
14 | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
15 | return ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.recycler_mime_item, parent, false))
16 | }
17 |
18 | override fun onBindViewHolder(holder: ViewHolder, position: Int) {
19 | val header = holder.itemView.findViewById(R.id.textHeader)
20 | val mime = holder.itemView.findViewById(R.id.textMime)
21 | val archive = holder.itemView.findViewById(R.id.textArchive)
22 | val audio = holder.itemView.findViewById(R.id.textAudio)
23 | val document = holder.itemView.findViewById(R.id.textDocument)
24 | val font = holder.itemView.findViewById(R.id.textFont)
25 | val image = holder.itemView.findViewById(R.id.textImage)
26 | val text = holder.itemView.findViewById(R.id.textText)
27 | val video = holder.itemView.findViewById(R.id.textVideo)
28 | val item = items[position]
29 |
30 | header.text = item.header
31 | mime.text = item.mimeData.mimeType ?: "not detected"
32 | archive.isChecked = item.mimeData.isArchive
33 | audio.isChecked = item.mimeData.isAudio
34 | document.isChecked = item.mimeData.isDocument
35 | font.isChecked = item.mimeData.isFont
36 | image.isChecked = item.mimeData.isImage
37 | text.isChecked = item.mimeData.isText
38 | video.isChecked = item.mimeData.isVideo
39 | }
40 |
41 | override fun getItemCount(): Int = items.size
42 |
43 | }
--------------------------------------------------------------------------------
/app/src/main/java/de/datlag/mimemagicexample/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package de.datlag.mimemagicexample
2 |
3 | import android.annotation.SuppressLint
4 | import android.net.Uri
5 | import androidx.appcompat.app.AppCompatActivity
6 | import android.os.Bundle
7 | import android.view.View
8 | import androidx.recyclerview.widget.LinearLayoutManager
9 | import androidx.recyclerview.widget.RecyclerView
10 | import com.obsez.android.lib.filechooser.ChooserDialog
11 | import de.datlag.mimemagic.MimeData
12 | import java.io.File
13 |
14 | class MainActivity : AppCompatActivity() {
15 | override fun onCreate(savedInstanceState: Bundle?) {
16 | super.onCreate(savedInstanceState)
17 | setContentView(R.layout.activity_main)
18 | }
19 |
20 | @SuppressLint("SetTextI18n")
21 | fun chooseFile(view: View?) {
22 | ChooserDialog(this)
23 | .withFilter(false, true)
24 | .withChosenListener { _, file ->
25 | supportActionBar?.title = file.name
26 | setRecyclerData(createItems(file))
27 | }
28 | .build()
29 | .show()
30 | }
31 |
32 | private fun createItems(file: File): List {
33 | if (file.isDirectory) {
34 | return listOf()
35 | }
36 |
37 | val items = mutableListOf()
38 | items.add(
39 | RecyclerData(
40 | "File - Extension Fallback",
41 | MimeData.fromFile(file)
42 | )
43 | )
44 | items.add(
45 | RecyclerData(
46 | "File - Uri Fallback",
47 | MimeData.fromFile(file, this)
48 | )
49 | )
50 | items.add(
51 | RecyclerData(
52 | "InputStream",
53 | MimeData.fromInputStream(file.inputStream())
54 | )
55 | )
56 | items.add(
57 | RecyclerData(
58 | "Uri",
59 | MimeData.fromUri(Uri.fromFile(file), this)
60 | )
61 | )
62 | items.add(
63 | RecyclerData(
64 | "Name",
65 | MimeData.fromName(file.name)
66 | )
67 | )
68 | return items
69 | }
70 |
71 | private fun setRecyclerData(items: List) {
72 | val recycler = findViewById(R.id.mimeRecycler)
73 | recycler.adapter = null
74 | recycler.adapter = RecyclerAdapter(items)
75 | recycler.layoutManager = LinearLayoutManager(this)
76 | }
77 | }
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | set DIRNAME=%~dp0
12 | if "%DIRNAME%" == "" set DIRNAME=.
13 | set APP_BASE_NAME=%~n0
14 | set APP_HOME=%DIRNAME%
15 |
16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17 | set DEFAULT_JVM_OPTS=
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windows variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 |
53 | :win9xME_args
54 | @rem Slurp the command line arguments.
55 | set CMD_LINE_ARGS=
56 | set _SKIP=2
57 |
58 | :win9xME_args_slurp
59 | if "x%~1" == "x" goto execute
60 |
61 | set CMD_LINE_ARGS=%*
62 |
63 | :execute
64 | @rem Setup the command line
65 |
66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
67 |
68 | @rem Execute Gradle
69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
70 |
71 | :end
72 | @rem End local scope for the variables with windows NT shell
73 | if "%ERRORLEVEL%"=="0" goto mainEnd
74 |
75 | :fail
76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
77 | rem the _cmd.exe /c_ return code!
78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
79 | exit /b 1
80 |
81 | :mainEnd
82 | if "%OS%"=="Windows_NT" endlocal
83 |
84 | :omega
85 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/recycler_mime_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
15 |
16 |
22 |
23 |
30 |
31 |
38 |
39 |
46 |
47 |
54 |
55 |
62 |
63 |
70 |
71 |
78 |
79 |
--------------------------------------------------------------------------------
/mimemagic/src/main/java/de/datlag/mimemagic/MimeSuffix.kt:
--------------------------------------------------------------------------------
1 | package de.datlag.mimemagic
2 |
3 | object MimeSuffix {
4 |
5 | // Archives
6 | const val UNIX_ARCHIVER = "x-archive"
7 | const val CPIO = "x-cpio"
8 | const val SHELL_ARCHIVE = "x-shar"
9 | const val ISO_9660_IMAGE = "x-iso9660-image"
10 | const val SEQBOX = "x-sbx"
11 | const val TAPE_ARCHIVE = "x-tar"
12 | const val BZIP2 = "x-bzip2"
13 | const val GZIP = "gzip"
14 | const val LZIP = "x-lzip"
15 | const val LZMA = "x-lzma"
16 | const val LZOP = "x-lzop"
17 | const val SNAPPY = "x-snappy-framed"
18 | const val XZ = "x-xz"
19 | const val DEFLATE = "x-compress"
20 | const val COMPRESS = DEFLATE
21 | const val Z_STANDARD = "zstd"
22 | const val Z7 = "x-7z-compressed" // 7z
23 | const val Z7X = Z7 // 7zX
24 | const val ACE = "x-ace-compressed"
25 | const val AFA = "x-astrotite-afa"
26 | const val ALZIP = "x-alz-compressed"
27 | const val APK = "vnd.android.package-archive"
28 | const val ARC = "octet-stream"
29 | const val FREE_ARC = "x-freearc"
30 | const val ARJ = "x-arj"
31 | const val B1 = "x-b1"
32 | const val CABINET = "vnd.ms-cab-compressed"
33 | const val COMPACT_FILE_SET = "x-cfs-compressed"
34 | const val DISK_ARCHIVER = "x-dar"
35 | const val DGCA = "x-dgc-compressed"
36 | const val APPLE_DISK_IMAGE = "x-apple-diskimage"
37 | const val GCA = "x-gca-compressed"
38 | const val JAR = "java-archive"
39 | const val LHA = "x-lzh"
40 | const val LZX = "x-lzx"
41 | const val RAR = "x-rar-compressed"
42 | const val STUFF_IT = "x-stuffit"
43 | const val STUFF_IT_X = "x-stuffitx"
44 | const val GZIP_TAR = "x-gtar"
45 | const val WINDOWS_IMAGE = "x-ms-wim"
46 | const val XAR = "x-xar"
47 | const val ZIP = "zip"
48 | const val ZOO = "x-zoo"
49 | const val PAR2 = "x-par2"
50 |
51 | // Documents
52 | const val DOC = "msword"
53 | const val DOT = DOC
54 | const val DOCX = "vnd.openxmlformats-officedocument.wordprocessingml.document"
55 | const val DOTX = "vnd.openxmlformats-officedocument.wordprocessingml.template"
56 | const val DOCM = "vnd.ms-word.document.macroEnabled.12"
57 | const val DOTM = "vnd.ms-word.template.macroEnabled.12"
58 | const val XLS = "vnd.ms-excel"
59 | const val XLT = XLS
60 | const val XLA = XLS
61 | const val XLSX = "vnd.openxmlformats-officedocument.spreadsheetml.sheet"
62 | const val XLTX = "vnd.openxmlformats-officedocument.spreadsheetml.template"
63 | const val XLSM = "vnd.ms-excel.sheet.macroEnabled.12"
64 | const val XLTM = "vnd.ms-excel.template.macroEnabled.12"
65 | const val XLAM = "vnd.ms-excel.addin.macroEnabled.12"
66 | const val XLSB = "vnd.ms-excel.sheet.binary.macroEnabled.12"
67 | const val PPT = "vnd.ms-powerpoint"
68 | const val POT = PPT
69 | const val PPS = PPT
70 | const val PPA = PPT
71 | const val PPTX = "vnd.openxmlformats-officedocument.presentationml.presentation"
72 | const val POTX = "vnd.openxmlformats-officedocument.presentationml.template"
73 | const val PPSX = "vnd.openxmlformats-officedocument.presentationml.slideshow"
74 | const val PPAM = "vnd.ms-powerpoint.addin.macroEnabled.12"
75 | const val PPTM = "vnd.ms-powerpoint.presentation.macroEnabled.12"
76 | const val POTM = "vnd.ms-powerpoint.template.macroEnabled.12"
77 | const val PPSM = "vnd.ms-powerpoint.slideshow.macroEnabled.12"
78 | const val MDB = "vnd.ms-access"
79 | const val ABI_WORD = "x-abiword"
80 | const val ODP = "vnd.oasis.opendocument.presentation"
81 | const val ODS = "vnd.oasis.opendocument.spreadsheet"
82 | const val ODT = "vnd.oasis.opendocument.text"
83 | const val VISIO = "vnd.visio"
84 | const val PDF = "pdf"
85 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # MimeMagic-Android
2 |
3 | [](https://github.com/DATL4G/MimeMagic-Android)
4 |
5 | [](https://github.com/DATL4G/MimeMagic-Android)
6 |
7 | [](https://github.com/DATL4G/MimeMagic-Android)
8 |
9 | MimeMagic-Android is an open source MimeType detector library for Android
10 | * fetch MimeType by File, ByteArray, InputStream, Uri and Name
11 | * uses fallback methods if fetching fails
12 | * get prefix and suffix easily
13 | * check if MimeType is Archive, Audio, Document, Font, Image, Text, Video
14 |
15 | ## Setup
16 | Add this line in your root build.gradle at the end of repositories:
17 |
18 | ```gradle
19 | allprojects {
20 | repositories {
21 | ...
22 | maven { url 'https://jitpack.io' }
23 | ...
24 | }
25 | }
26 | ```
27 | Add this line in your app build.gradle:
28 | ```gradle
29 | plugins {
30 | ...
31 | id 'kotlin-parcelize'
32 | ...
33 | }
34 |
35 | ...
36 |
37 | dependencies {
38 | ...
39 | implementation("com.github.DatL4g:MimeMagic-Android:1.0.3")
40 | ...
41 | }
42 | ```
43 |
44 | ## Usage
45 | Create MimeData Object using this static functions:
46 | * `fun fromFile(file: File)`
47 | * `fun fromFile(file: File, context: Context)`
48 | * `fun fromFile(file: File, contentResolver: ContentResolver)`
49 | * `fun fromByteArray(byteArray: ByteArray)`
50 | * `fun fromByteArray(byteArray: ByteArray, offset: Int)`
51 | * `fun fromByteArray(byteArray: ByteArray, offset: Int, length: Int)`
52 | * `fun fromInputStream(inputStream: InputStream)`
53 | * `fun fromUri(uri: Uri, context: Context)`
54 | * `fun fromUri(uri: Uri, context: Context, extension: String)`
55 | * `fun fromUri(uri: Uri, contentResolver: ContentResolver)`
56 | * `fun fromUri(uri: Uri, contentResolver: ContentResolver, extension: String)`
57 | * `fun fromExtension(extension: String)`
58 | * `fun fromName(name: String)`
59 |
60 | #### Precision with fallback
61 | You get the most exact MimeType when reading bytes.
62 | So you should best use the functions: `fromFile`, `fromByteArray` and `fromInputStream`.
63 | Reading the bytes does not always work and the MimeType is `null` then, to prevent this you can use a fallback method.
64 | `fromFile` uses a fallback method under the hood, there are different types of method used depending on which parameters were passed.
65 | To get the most precise MimeType with a good fallback method, I recommend `fromFile(file: File, context: Context)` or `fromFile(file: File, contentResolver: ContentResolver)`.
66 | Less precise is `fromFile(file: File)` because it uses the MimeType that matches the extension as fallback.
67 |
68 | #### Recommended method
69 | ```kotlin
70 | val file = File("path/to/file.extension")
71 | val mimeData = MimeData.fromFile(file, context)
72 | // or
73 | val mimeData = MimeData.fromFile(file, context.contentResolver)
74 | ```
75 |
76 | #### Using extension functions
77 | Available for:
78 | * ByteArray
79 | * ContentResolver
80 | * Context
81 | * File
82 | * InputStream
83 | * Uri
84 |
85 | Example:
86 | ```kotlin
87 | val file = File("path/to/file.extension")
88 | val mimeData = file.getMimeData(context)
89 | // or
90 | val mimeData = file.getMimeData(context.contentResolver)
91 | ```
92 |
93 | #### InputStream
94 | As stated before this method may be more precise and is more likely to fail.
95 | Another hint is that the InputStream will be closed afterwards.
96 | You won't experience anything when using `fromFile` or `fromByteArray` but make sure you don't use the InputStream after calling `fromInputStream`.
97 |
98 | #### Handling MimeData Information
99 | Available info:
100 | * mimeType: String?
101 | * delimiter: Char = '/'
102 | * prefix: String?
103 | * suffix: String?
104 | * isApplication: Boolean
105 | * isArchive: Boolean
106 | * isAudio: Boolean
107 | * isDocument: Boolean
108 | * isFont: Boolean
109 | * isImage: Boolean
110 | * isText: Boolean
111 | * isVideo: Boolean
112 |
113 | #### Full Example
114 | ```kotlin
115 | val file = File("path/to/file.extension")
116 | val mimeData = MimeData.fromFile(file, context)
117 |
118 | Log.e("TAG-MimeType", mimeData.mimeType)
119 | Log.e("TAG-Mime is Image", mimeData.isImage.toString())
120 | ```
121 |
122 | ## Maintainers
123 | This project is mantained by:
124 | | Avatar | Contributor |
125 | |---|:---:|
126 | | [](http://github.com/DatL4g) | [DatLag](http://github.com/DatL4g) |
127 |
128 | ## Contributing
129 |
130 | 1. Fork it
131 | 2. Create your feature branch (git checkout -b my-new-feature)
132 | 3. Commit your changes (git commit -m 'Add some feature')
133 | 5. Push your branch (git push origin my-new-feature)
134 | 6. Create a new Pull Request
135 |
136 | ## License
137 |
138 | View full license [here](LICENSE). In short:
139 |
140 | > A permissive license whose main conditions require preservation of copyright and license notices. Contributors provide an express grant of patent rights. Licensed works, modifications, and larger works may be distributed under different terms and without source code.
141 |
142 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
15 |
20 |
25 |
30 |
35 |
40 |
45 |
50 |
55 |
60 |
65 |
70 |
75 |
80 |
85 |
90 |
95 |
100 |
105 |
110 |
115 |
120 |
125 |
130 |
135 |
140 |
145 |
150 |
155 |
160 |
165 |
170 |
171 |
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | ##############################################################################
4 | ##
5 | ## Gradle start up script for UN*X
6 | ##
7 | ##############################################################################
8 |
9 | # Attempt to set APP_HOME
10 | # Resolve links: $0 may be a link
11 | PRG="$0"
12 | # Need this for relative symlinks.
13 | while [ -h "$PRG" ] ; do
14 | ls=`ls -ld "$PRG"`
15 | link=`expr "$ls" : '.*-> \(.*\)$'`
16 | if expr "$link" : '/.*' > /dev/null; then
17 | PRG="$link"
18 | else
19 | PRG=`dirname "$PRG"`"/$link"
20 | fi
21 | done
22 | SAVED="`pwd`"
23 | cd "`dirname \"$PRG\"`/" >/dev/null
24 | APP_HOME="`pwd -P`"
25 | cd "$SAVED" >/dev/null
26 |
27 | APP_NAME="Gradle"
28 | APP_BASE_NAME=`basename "$0"`
29 |
30 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
31 | DEFAULT_JVM_OPTS=""
32 |
33 | # Use the maximum available, or set MAX_FD != -1 to use that value.
34 | MAX_FD="maximum"
35 |
36 | warn () {
37 | echo "$*"
38 | }
39 |
40 | die () {
41 | echo
42 | echo "$*"
43 | echo
44 | exit 1
45 | }
46 |
47 | # OS specific support (must be 'true' or 'false').
48 | cygwin=false
49 | msys=false
50 | darwin=false
51 | nonstop=false
52 | case "`uname`" in
53 | CYGWIN* )
54 | cygwin=true
55 | ;;
56 | Darwin* )
57 | darwin=true
58 | ;;
59 | MINGW* )
60 | msys=true
61 | ;;
62 | NONSTOP* )
63 | nonstop=true
64 | ;;
65 | esac
66 |
67 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
68 |
69 | # Determine the Java command to use to start the JVM.
70 | if [ -n "$JAVA_HOME" ] ; then
71 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
72 | # IBM's JDK on AIX uses strange locations for the executables
73 | JAVACMD="$JAVA_HOME/jre/sh/java"
74 | else
75 | JAVACMD="$JAVA_HOME/bin/java"
76 | fi
77 | if [ ! -x "$JAVACMD" ] ; then
78 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
79 |
80 | Please set the JAVA_HOME variable in your environment to match the
81 | location of your Java installation."
82 | fi
83 | else
84 | JAVACMD="java"
85 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
86 |
87 | Please set the JAVA_HOME variable in your environment to match the
88 | location of your Java installation."
89 | fi
90 |
91 | # Increase the maximum file descriptors if we can.
92 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
93 | MAX_FD_LIMIT=`ulimit -H -n`
94 | if [ $? -eq 0 ] ; then
95 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
96 | MAX_FD="$MAX_FD_LIMIT"
97 | fi
98 | ulimit -n $MAX_FD
99 | if [ $? -ne 0 ] ; then
100 | warn "Could not set maximum file descriptor limit: $MAX_FD"
101 | fi
102 | else
103 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
104 | fi
105 | fi
106 |
107 | # For Darwin, add options to specify how the application appears in the dock
108 | if $darwin; then
109 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
110 | fi
111 |
112 | # For Cygwin, switch paths to Windows format before running java
113 | if $cygwin ; then
114 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
115 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
116 | JAVACMD=`cygpath --unix "$JAVACMD"`
117 |
118 | # We build the pattern for arguments to be converted via cygpath
119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
120 | SEP=""
121 | for dir in $ROOTDIRSRAW ; do
122 | ROOTDIRS="$ROOTDIRS$SEP$dir"
123 | SEP="|"
124 | done
125 | OURCYGPATTERN="(^($ROOTDIRS))"
126 | # Add a user-defined pattern to the cygpath arguments
127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
129 | fi
130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
131 | i=0
132 | for arg in "$@" ; do
133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
135 |
136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
138 | else
139 | eval `echo args$i`="\"$arg\""
140 | fi
141 | i=$((i+1))
142 | done
143 | case $i in
144 | (0) set -- ;;
145 | (1) set -- "$args0" ;;
146 | (2) set -- "$args0" "$args1" ;;
147 | (3) set -- "$args0" "$args1" "$args2" ;;
148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
154 | esac
155 | fi
156 |
157 | # Escape application args
158 | save () {
159 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
160 | echo " "
161 | }
162 | APP_ARGS=$(save "$@")
163 |
164 | # Collect all arguments for the java command, following the shell quoting and substitution rules
165 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
166 |
167 | # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
168 | if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
169 | cd "$(dirname "$0")"
170 | fi
171 |
172 | exec "$JAVACMD" "$@"
173 |
--------------------------------------------------------------------------------
/mimemagic/src/main/java/de/datlag/mimemagic/MimeData.kt:
--------------------------------------------------------------------------------
1 | package de.datlag.mimemagic
2 |
3 | import android.content.ContentResolver
4 | import android.content.Context
5 | import android.net.Uri
6 | import android.os.Parcelable
7 | import android.webkit.MimeTypeMap
8 | import kotlinx.parcelize.Parcelize
9 | import java.io.ByteArrayInputStream
10 | import java.io.File
11 | import java.io.InputStream
12 | import kotlin.jvm.Throws
13 |
14 | @Parcelize
15 | data class MimeData internal constructor(
16 | val mimeType: String?,
17 | val delimiter: Char = '/',
18 | val prefix: String? = mimeType?.split(delimiter)?.get(0),
19 | val suffix: String? = mimeType?.split(delimiter)?.get(1),
20 | val isApplication: Boolean = prefix.equals(MimePrefix.APPLICATION, true),
21 | val isArchive: Boolean = isArchive(isApplication, suffix),
22 | val isAudio: Boolean = prefix.equals(MimePrefix.AUDIO, true),
23 | val isDocument: Boolean = isDocument(isApplication, suffix),
24 | val isFont: Boolean = prefix.equals(MimePrefix.FONT, true),
25 | val isImage: Boolean = prefix.equals(MimePrefix.IMAGE, true),
26 | val isText: Boolean = prefix.equals(MimePrefix.TEXT, true),
27 | val isVideo: Boolean = prefix.equals(MimePrefix.VIDEO, true)
28 | ) : Parcelable {
29 |
30 | companion object {
31 | @Throws(IllegalArgumentException::class)
32 | fun fromFile(file: File): MimeData {
33 | if (file.isDirectory) {
34 | throw IllegalArgumentException("directories not allowed")
35 | }
36 |
37 | val guessType = Magic.guessContentType(file.inputStream())
38 | return if (guessType == null) {
39 | fromExtension(file.extension)
40 | } else {
41 | MimeData(guessType)
42 | }
43 | }
44 |
45 | @Throws(IllegalArgumentException::class)
46 | fun fromFile(file: File, context: Context): MimeData {
47 | if (file.isDirectory) {
48 | throw IllegalArgumentException("directories not allowed")
49 | }
50 |
51 | val guessType = Magic.guessContentType(file.inputStream())
52 | return if (guessType == null) {
53 | fromUri(Uri.fromFile(file), context)
54 | } else {
55 | MimeData(guessType)
56 | }
57 | }
58 |
59 | @Throws(IllegalArgumentException::class)
60 | fun fromFile(file: File, contentResolver: ContentResolver): MimeData {
61 | if (file.isDirectory) {
62 | throw IllegalArgumentException("directories not allowed")
63 | }
64 |
65 | val guessType = Magic.guessContentType(file.inputStream())
66 | return if (guessType == null) {
67 | fromUri(Uri.fromFile(file), contentResolver)
68 | } else {
69 | MimeData(guessType)
70 | }
71 | }
72 |
73 | @JvmOverloads
74 | fun fromByteArray(byteArray: ByteArray, offset: Int = 0, length: Int = byteArray.size): MimeData {
75 | return fromInputStream(ByteArrayInputStream(byteArray, offset, length))
76 | }
77 |
78 | fun fromInputStream(inputStream: InputStream) = MimeData(Magic.guessContentType(inputStream))
79 |
80 | @JvmOverloads
81 | fun fromUri(uri: Uri, contentResolver: ContentResolver, extension: String = MimeTypeMap.getFileExtensionFromUrl(uri.toString())): MimeData {
82 | return MimeData(Magic.getUriContentType(uri, contentResolver, extension))
83 | }
84 |
85 | @JvmOverloads
86 | fun fromUri(uri: Uri, context: Context, extension: String = MimeTypeMap.getFileExtensionFromUrl(uri.toString())) = fromUri(uri, context.contentResolver, extension)
87 |
88 | fun fromExtension(extension: String): MimeData {
89 | return MimeData(MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension))
90 | }
91 |
92 | fun fromName(name: String): MimeData {
93 | return fromExtension(name.substringAfterLast('.', ""))
94 | }
95 |
96 | private fun isArchive(isApplication: Boolean, suffix: String?): Boolean = isApplication && when (suffix) {
97 | null -> false
98 | MimeSuffix.UNIX_ARCHIVER -> true
99 | MimeSuffix.CPIO -> true
100 | MimeSuffix.SHELL_ARCHIVE -> true
101 | MimeSuffix.ISO_9660_IMAGE -> true
102 | MimeSuffix.SEQBOX -> true
103 | MimeSuffix.TAPE_ARCHIVE -> true
104 | MimeSuffix.BZIP2 -> true
105 | MimeSuffix.GZIP -> true
106 | MimeSuffix.LZIP -> true
107 | MimeSuffix.LZMA -> true
108 | MimeSuffix.LZOP -> true
109 | MimeSuffix.SNAPPY -> true
110 | MimeSuffix.XZ -> true
111 | MimeSuffix.DEFLATE -> true
112 | MimeSuffix.COMPRESS -> true
113 | MimeSuffix.Z_STANDARD -> true
114 | MimeSuffix.Z7 -> true
115 | MimeSuffix.Z7X -> true
116 | MimeSuffix.ACE -> true
117 | MimeSuffix.AFA -> true
118 | MimeSuffix.ALZIP -> true
119 | MimeSuffix.APK -> true
120 | MimeSuffix.ARC -> true
121 | MimeSuffix.FREE_ARC -> true
122 | MimeSuffix.ARJ -> true
123 | MimeSuffix.B1 -> true
124 | MimeSuffix.CABINET -> true
125 | MimeSuffix.COMPACT_FILE_SET -> true
126 | MimeSuffix.DISK_ARCHIVER -> true
127 | MimeSuffix.DGCA -> true
128 | MimeSuffix.APPLE_DISK_IMAGE -> true
129 | MimeSuffix.GCA -> true
130 | MimeSuffix.JAR -> true
131 | MimeSuffix.LHA -> true
132 | MimeSuffix.LZX -> true
133 | MimeSuffix.RAR -> true
134 | MimeSuffix.STUFF_IT -> true
135 | MimeSuffix.STUFF_IT_X -> true
136 | MimeSuffix.GZIP_TAR -> true
137 | MimeSuffix.WINDOWS_IMAGE -> true
138 | MimeSuffix.XAR -> true
139 | MimeSuffix.ZIP -> true
140 | MimeSuffix.ZOO -> true
141 | MimeSuffix.PAR2 -> true
142 | else -> false
143 | }
144 |
145 | private fun isDocument(isApplication: Boolean, suffix: String?): Boolean = isApplication && when (suffix) {
146 | null -> false
147 | MimeSuffix.DOC -> true
148 | MimeSuffix.DOT -> true
149 | MimeSuffix.DOCX -> true
150 | MimeSuffix.DOTX -> true
151 | MimeSuffix.DOCM -> true
152 | MimeSuffix.DOTM -> true
153 | MimeSuffix.XLS -> true
154 | MimeSuffix.XLT -> true
155 | MimeSuffix.XLA -> true
156 | MimeSuffix.XLSX -> true
157 | MimeSuffix.XLTX -> true
158 | MimeSuffix.XLSM -> true
159 | MimeSuffix.XLTM -> true
160 | MimeSuffix.XLAM -> true
161 | MimeSuffix.XLSB -> true
162 | MimeSuffix.PPT -> true
163 | MimeSuffix.POT -> true
164 | MimeSuffix.PPS -> true
165 | MimeSuffix.PPA -> true
166 | MimeSuffix.PPTX -> true
167 | MimeSuffix.POTX -> true
168 | MimeSuffix.PPSX -> true
169 | MimeSuffix.PPAM -> true
170 | MimeSuffix.PPTM -> true
171 | MimeSuffix.POTM -> true
172 | MimeSuffix.PPSM -> true
173 | MimeSuffix.MDB -> true
174 | MimeSuffix.ABI_WORD -> true
175 | MimeSuffix.ODP -> true
176 | MimeSuffix.ODS -> true
177 | MimeSuffix.ODT -> true
178 | MimeSuffix.VISIO -> true
179 | MimeSuffix.PDF -> true
180 | else -> false
181 | }
182 | }
183 |
184 | }
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | !setup.sh
2 |
3 | # Created by https://www.toptal.com/developers/gitignore/api/android,androidstudio,kotlin,java,c,c++,visualstudio,visualstudiocode,maven,git,intellij,intellij+iml,intellij+all,netbeans,eclipse,appcode,appcode+iml,appcode+all,windows,macos,linux,gradle,vim
4 | # Edit at https://www.toptal.com/developers/gitignore?templates=android,androidstudio,kotlin,java,c,c++,visualstudio,visualstudiocode,maven,git,intellij,intellij+iml,intellij+all,netbeans,eclipse,appcode,appcode+iml,appcode+all,windows,macos,linux,gradle,vim
5 |
6 | ### Android ###
7 | # Built application files
8 | *.apk
9 | *.aar
10 | *.ap_
11 | *.aab
12 |
13 | # Files for the ART/Dalvik VM
14 | *.dex
15 |
16 | # Java class files
17 | *.class
18 |
19 | # Generated files
20 | bin/
21 | gen/
22 | out/
23 | # Uncomment the following line in case you need and you don't have the release build type files in your app
24 | # release/
25 |
26 | # Gradle files
27 | .gradle/
28 | build/
29 |
30 | # Local configuration file (sdk path, etc)
31 | local.properties
32 |
33 | # Proguard folder generated by Eclipse
34 | proguard/
35 |
36 | # Log Files
37 | *.log
38 |
39 | # Android Studio Navigation editor temp files
40 | .navigation/
41 |
42 | # Android Studio captures folder
43 | captures/
44 |
45 | # IntelliJ
46 | *.iml
47 | .idea/workspace.xml
48 | .idea/tasks.xml
49 | .idea/gradle.xml
50 | .idea/assetWizardSettings.xml
51 | .idea/dictionaries
52 | .idea/libraries
53 | # Android Studio 3 in .gitignore file.
54 | .idea/caches
55 | .idea/modules.xml
56 | # Comment next line if keeping position of elements in Navigation Editor is relevant for you
57 | .idea/navEditor.xml
58 |
59 | # Keystore files
60 | # Uncomment the following lines if you do not want to check your keystore files in.
61 | #*.jks
62 | #*.keystore
63 |
64 | # External native build folder generated in Android Studio 2.2 and later
65 | .externalNativeBuild
66 | .cxx/
67 |
68 | # Google Services (e.g. APIs or Firebase)
69 | # google-services.json
70 |
71 | # Freeline
72 | freeline.py
73 | freeline/
74 | freeline_project_description.json
75 |
76 | # fastlane
77 | fastlane/report.xml
78 | fastlane/Preview.html
79 | fastlane/screenshots
80 | fastlane/test_output
81 | fastlane/readme.md
82 |
83 | # Version control
84 | vcs.xml
85 |
86 | # lint
87 | lint/intermediates/
88 | lint/generated/
89 | lint/outputs/
90 | lint/tmp/
91 | # lint/reports/
92 |
93 | ### Android Patch ###
94 | gen-external-apklibs
95 | output.json
96 |
97 | # Replacement of .externalNativeBuild directories introduced
98 | # with Android Studio 3.5.
99 |
100 | ### Intellij+all ###
101 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
102 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
103 |
104 | # User-specific stuff
105 | .idea/**/workspace.xml
106 | .idea/**/tasks.xml
107 | .idea/**/usage.statistics.xml
108 | .idea/**/dictionaries
109 | .idea/**/shelf
110 |
111 | # Generated files
112 | .idea/**/contentModel.xml
113 |
114 | # Sensitive or high-churn files
115 | .idea/**/dataSources/
116 | .idea/**/dataSources.ids
117 | .idea/**/dataSources.local.xml
118 | .idea/**/sqlDataSources.xml
119 | .idea/**/dynamic.xml
120 | .idea/**/uiDesigner.xml
121 | .idea/**/dbnavigator.xml
122 |
123 | # Gradle
124 | .idea/**/gradle.xml
125 | .idea/**/libraries
126 |
127 | # Gradle and Maven with auto-import
128 | # When using Gradle or Maven with auto-import, you should exclude module files,
129 | # since they will be recreated, and may cause churn. Uncomment if using
130 | # auto-import.
131 | # .idea/artifacts
132 | # .idea/compiler.xml
133 | # .idea/jarRepositories.xml
134 | # .idea/modules.xml
135 | # .idea/*.iml
136 | # .idea/modules
137 | # *.iml
138 | # *.ipr
139 |
140 | # CMake
141 | cmake-build-*/
142 |
143 | # Mongo Explorer plugin
144 | .idea/**/mongoSettings.xml
145 |
146 | # File-based project format
147 | *.iws
148 |
149 | # IntelliJ
150 |
151 | # mpeltonen/sbt-idea plugin
152 | .idea_modules/
153 |
154 | # JIRA plugin
155 | atlassian-ide-plugin.xml
156 |
157 | # Cursive Clojure plugin
158 | .idea/replstate.xml
159 |
160 | # Crashlytics plugin (for Android Studio and IntelliJ)
161 | com_crashlytics_export_strings.xml
162 | crashlytics.properties
163 | crashlytics-build.properties
164 | fabric.properties
165 |
166 | # Editor-based Rest Client
167 | .idea/httpRequests
168 |
169 | # Android studio 3.1+ serialized cache file
170 | .idea/caches/build_file_checksums.ser
171 |
172 | ### Intellij+all Patch ###
173 | # Ignores the whole .idea folder and all .iml files
174 | # See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360
175 |
176 | .idea/
177 |
178 | # Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
179 |
180 | modules.xml
181 | .idea/misc.xml
182 | *.ipr
183 |
184 | # Sonarlint plugin
185 | .idea/sonarlint
186 |
187 | ### AppCode ###
188 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
189 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
190 |
191 | # User-specific stuff
192 |
193 | # Generated files
194 |
195 | # Sensitive or high-churn files
196 |
197 | # Gradle
198 |
199 | # Gradle and Maven with auto-import
200 | # When using Gradle or Maven with auto-import, you should exclude module files,
201 | # since they will be recreated, and may cause churn. Uncomment if using
202 | # auto-import.
203 | # .idea/artifacts
204 | # .idea/compiler.xml
205 | # .idea/jarRepositories.xml
206 | # .idea/modules.xml
207 | # .idea/*.iml
208 | # .idea/modules
209 | # *.iml
210 | # *.ipr
211 |
212 | # CMake
213 |
214 | # Mongo Explorer plugin
215 |
216 | # File-based project format
217 |
218 | # IntelliJ
219 |
220 | # mpeltonen/sbt-idea plugin
221 |
222 | # JIRA plugin
223 |
224 | # Cursive Clojure plugin
225 |
226 | # Crashlytics plugin (for Android Studio and IntelliJ)
227 |
228 | # Editor-based Rest Client
229 |
230 | # Android studio 3.1+ serialized cache file
231 |
232 | ### AppCode Patch ###
233 | # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
234 |
235 | # *.iml
236 | # modules.xml
237 | # .idea/misc.xml
238 | # *.ipr
239 |
240 | # Sonarlint plugin
241 | # https://plugins.jetbrains.com/plugin/7973-sonarlint
242 | .idea/**/sonarlint/
243 |
244 | # SonarQube Plugin
245 | # https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
246 | .idea/**/sonarIssues.xml
247 |
248 | # Markdown Navigator plugin
249 | # https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
250 | .idea/**/markdown-navigator.xml
251 | .idea/**/markdown-navigator-enh.xml
252 | .idea/**/markdown-navigator/
253 |
254 | # Cache file creation bug
255 | # See https://youtrack.jetbrains.com/issue/JBR-2257
256 | .idea/$CACHE_FILE$
257 |
258 | # CodeStream plugin
259 | # https://plugins.jetbrains.com/plugin/12206-codestream
260 | .idea/codestream.xml
261 |
262 | ### AppCode+all ###
263 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
264 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
265 |
266 | # User-specific stuff
267 |
268 | # Generated files
269 |
270 | # Sensitive or high-churn files
271 |
272 | # Gradle
273 |
274 | # Gradle and Maven with auto-import
275 | # When using Gradle or Maven with auto-import, you should exclude module files,
276 | # since they will be recreated, and may cause churn. Uncomment if using
277 | # auto-import.
278 | # .idea/artifacts
279 | # .idea/compiler.xml
280 | # .idea/jarRepositories.xml
281 | # .idea/modules.xml
282 | # .idea/*.iml
283 | # .idea/modules
284 | # *.iml
285 | # *.ipr
286 |
287 | # CMake
288 |
289 | # Mongo Explorer plugin
290 |
291 | # File-based project format
292 |
293 | # IntelliJ
294 |
295 | # mpeltonen/sbt-idea plugin
296 |
297 | # JIRA plugin
298 |
299 | # Cursive Clojure plugin
300 |
301 | # Crashlytics plugin (for Android Studio and IntelliJ)
302 |
303 | # Editor-based Rest Client
304 |
305 | # Android studio 3.1+ serialized cache file
306 |
307 | ### AppCode+all Patch ###
308 | # Ignores the whole .idea folder and all .iml files
309 | # See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360
310 |
311 |
312 | # Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
313 |
314 |
315 | # Sonarlint plugin
316 |
317 | ### AppCode+iml ###
318 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
319 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
320 |
321 | # User-specific stuff
322 |
323 | # Generated files
324 |
325 | # Sensitive or high-churn files
326 |
327 | # Gradle
328 |
329 | # Gradle and Maven with auto-import
330 | # When using Gradle or Maven with auto-import, you should exclude module files,
331 | # since they will be recreated, and may cause churn. Uncomment if using
332 | # auto-import.
333 | # .idea/artifacts
334 | # .idea/compiler.xml
335 | # .idea/jarRepositories.xml
336 | # .idea/modules.xml
337 | # .idea/*.iml
338 | # .idea/modules
339 | # *.iml
340 | # *.ipr
341 |
342 | # CMake
343 |
344 | # Mongo Explorer plugin
345 |
346 | # File-based project format
347 |
348 | # IntelliJ
349 |
350 | # mpeltonen/sbt-idea plugin
351 |
352 | # JIRA plugin
353 |
354 | # Cursive Clojure plugin
355 |
356 | # Crashlytics plugin (for Android Studio and IntelliJ)
357 |
358 | # Editor-based Rest Client
359 |
360 | # Android studio 3.1+ serialized cache file
361 |
362 | ### AppCode+iml Patch ###
363 | # Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
364 |
365 |
366 | ### C ###
367 | # Prerequisites
368 | *.d
369 |
370 | # Object files
371 | *.o
372 | *.ko
373 | *.obj
374 | *.elf
375 |
376 | # Linker output
377 | *.ilk
378 | *.map
379 | *.exp
380 |
381 | # Precompiled Headers
382 | *.gch
383 | *.pch
384 |
385 | # Libraries
386 | *.lib
387 | *.a
388 | *.la
389 | *.lo
390 |
391 | # Shared objects (inc. Windows DLLs)
392 | *.dll
393 | *.so
394 | *.so.*
395 | *.dylib
396 |
397 | # Executables
398 | *.exe
399 | *.out
400 | *.app
401 | *.i*86
402 | *.x86_64
403 | *.hex
404 |
405 | # Debug files
406 | *.dSYM/
407 | *.su
408 | *.idb
409 | *.pdb
410 |
411 | # Kernel Module Compile Results
412 | *.mod*
413 | *.cmd
414 | .tmp_versions/
415 | modules.order
416 | Module.symvers
417 | Mkfile.old
418 | dkms.conf
419 |
420 | ### C++ ###
421 | # Prerequisites
422 |
423 | # Compiled Object files
424 | *.slo
425 |
426 | # Precompiled Headers
427 |
428 | # Compiled Dynamic libraries
429 |
430 | # Fortran module files
431 | *.mod
432 | *.smod
433 |
434 | # Compiled Static libraries
435 | *.lai
436 |
437 | # Executables
438 |
439 | ### Eclipse ###
440 | .metadata
441 | tmp/
442 | *.tmp
443 | *.bak
444 | *.swp
445 | *~.nib
446 | .settings/
447 | .loadpath
448 | .recommenders
449 |
450 | # External tool builders
451 | .externalToolBuilders/
452 |
453 | # Locally stored "Eclipse launch configurations"
454 | *.launch
455 |
456 | # PyDev specific (Python IDE for Eclipse)
457 | *.pydevproject
458 |
459 | # CDT-specific (C/C++ Development Tooling)
460 | .cproject
461 |
462 | # CDT- autotools
463 | .autotools
464 |
465 | # Java annotation processor (APT)
466 | .factorypath
467 |
468 | # PDT-specific (PHP Development Tools)
469 | .buildpath
470 |
471 | # sbteclipse plugin
472 | .target
473 |
474 | # Tern plugin
475 | .tern-project
476 |
477 | # TeXlipse plugin
478 | .texlipse
479 |
480 | # STS (Spring Tool Suite)
481 | .springBeans
482 |
483 | # Code Recommenders
484 | .recommenders/
485 |
486 | # Annotation Processing
487 | .apt_generated/
488 | .apt_generated_test/
489 |
490 | # Scala IDE specific (Scala & Java development for Eclipse)
491 | .cache-main
492 | .scala_dependencies
493 | .worksheet
494 |
495 | # Uncomment this line if you wish to ignore the project description file.
496 | # Typically, this file would be tracked if it contains build/dependency configurations:
497 | #.project
498 |
499 | ### Eclipse Patch ###
500 | # Spring Boot Tooling
501 | .sts4-cache/
502 |
503 | ### Git ###
504 | # Created by git for backups. To disable backups in Git:
505 | # $ git config --global mergetool.keepBackup false
506 | *.orig
507 |
508 | # Created by git when using merge tools for conflicts
509 | *.BACKUP.*
510 | *.BASE.*
511 | *.LOCAL.*
512 | *.REMOTE.*
513 | *_BACKUP_*.txt
514 | *_BASE_*.txt
515 | *_LOCAL_*.txt
516 | *_REMOTE_*.txt
517 |
518 | ### Intellij ###
519 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
520 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
521 |
522 | # User-specific stuff
523 |
524 | # Generated files
525 |
526 | # Sensitive or high-churn files
527 |
528 | # Gradle
529 |
530 | # Gradle and Maven with auto-import
531 | # When using Gradle or Maven with auto-import, you should exclude module files,
532 | # since they will be recreated, and may cause churn. Uncomment if using
533 | # auto-import.
534 | # .idea/artifacts
535 | # .idea/compiler.xml
536 | # .idea/jarRepositories.xml
537 | # .idea/modules.xml
538 | # .idea/*.iml
539 | # .idea/modules
540 | # *.iml
541 | # *.ipr
542 |
543 | # CMake
544 |
545 | # Mongo Explorer plugin
546 |
547 | # File-based project format
548 |
549 | # IntelliJ
550 |
551 | # mpeltonen/sbt-idea plugin
552 |
553 | # JIRA plugin
554 |
555 | # Cursive Clojure plugin
556 |
557 | # Crashlytics plugin (for Android Studio and IntelliJ)
558 |
559 | # Editor-based Rest Client
560 |
561 | # Android studio 3.1+ serialized cache file
562 |
563 | ### Intellij Patch ###
564 | # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
565 |
566 | # *.iml
567 | # modules.xml
568 | # .idea/misc.xml
569 | # *.ipr
570 |
571 | # Sonarlint plugin
572 | # https://plugins.jetbrains.com/plugin/7973-sonarlint
573 |
574 | # SonarQube Plugin
575 | # https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
576 |
577 | # Markdown Navigator plugin
578 | # https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
579 |
580 | # Cache file creation bug
581 | # See https://youtrack.jetbrains.com/issue/JBR-2257
582 |
583 | # CodeStream plugin
584 | # https://plugins.jetbrains.com/plugin/12206-codestream
585 |
586 | ### Windows ###
587 | # Windows thumbnail cache files
588 | Thumbs.db
589 | Thumbs.db:encryptable
590 | ehthumbs.db
591 | ehthumbs_vista.db
592 |
593 | # Dump file
594 | *.stackdump
595 |
596 | # Folder config file
597 | [Dd]esktop.ini
598 |
599 | # Recycle Bin used on file shares
600 | $RECYCLE.BIN/
601 |
602 | # Windows Installer files
603 | *.cab
604 | *.msi
605 | *.msix
606 | *.msm
607 | *.msp
608 |
609 | # Windows shortcuts
610 | *.lnk
611 |
612 | ### Intellij+iml ###
613 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
614 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
615 |
616 | # User-specific stuff
617 |
618 | # Generated files
619 |
620 | # Sensitive or high-churn files
621 |
622 | # Gradle
623 |
624 | # Gradle and Maven with auto-import
625 | # When using Gradle or Maven with auto-import, you should exclude module files,
626 | # since they will be recreated, and may cause churn. Uncomment if using
627 | # auto-import.
628 | # .idea/artifacts
629 | # .idea/compiler.xml
630 | # .idea/jarRepositories.xml
631 | # .idea/modules.xml
632 | # .idea/*.iml
633 | # .idea/modules
634 | # *.iml
635 | # *.ipr
636 |
637 | # CMake
638 |
639 | # Mongo Explorer plugin
640 |
641 | # File-based project format
642 |
643 | # IntelliJ
644 |
645 | # mpeltonen/sbt-idea plugin
646 |
647 | # JIRA plugin
648 |
649 | # Cursive Clojure plugin
650 |
651 | # Crashlytics plugin (for Android Studio and IntelliJ)
652 |
653 | # Editor-based Rest Client
654 |
655 | # Android studio 3.1+ serialized cache file
656 |
657 | ### Intellij+iml Patch ###
658 | # Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
659 |
660 |
661 | ### Java ###
662 | # Compiled class file
663 |
664 | # Log file
665 |
666 | # BlueJ files
667 | *.ctxt
668 |
669 | # Mobile Tools for Java (J2ME)
670 | .mtj.tmp/
671 |
672 | # Package Files #
673 | *.jar
674 | *.war
675 | *.nar
676 | *.ear
677 | *.zip
678 | *.tar.gz
679 | *.rar
680 |
681 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
682 | hs_err_pid*
683 |
684 | ### Kotlin ###
685 | # Compiled class file
686 |
687 | # Log file
688 |
689 | # BlueJ files
690 |
691 | # Mobile Tools for Java (J2ME)
692 |
693 | # Package Files #
694 |
695 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
696 |
697 | ### Linux ###
698 | *~
699 |
700 | # temporary files which can be created if a process still has a handle open of a deleted file
701 | .fuse_hidden*
702 |
703 | # KDE directory preferences
704 | .directory
705 |
706 | # Linux trash folder which might appear on any partition or disk
707 | .Trash-*
708 |
709 | # .nfs files are created when an open file is removed but is still being accessed
710 | .nfs*
711 |
712 | ### macOS ###
713 | # General
714 | .DS_Store
715 | .AppleDouble
716 | .LSOverride
717 |
718 | # Icon must end with two \r
719 | Icon
720 |
721 | # Thumbnails
722 | ._*
723 |
724 | # Files that might appear in the root of a volume
725 | .DocumentRevisions-V100
726 | .fseventsd
727 | .Spotlight-V100
728 | .TemporaryItems
729 | .Trashes
730 | .VolumeIcon.icns
731 | .com.apple.timemachine.donotpresent
732 |
733 | # Directories potentially created on remote AFP share
734 | .AppleDB
735 | .AppleDesktop
736 | Network Trash Folder
737 | Temporary Items
738 | .apdisk
739 |
740 | ### Maven ###
741 | target/
742 | pom.xml.tag
743 | pom.xml.releaseBackup
744 | pom.xml.versionsBackup
745 | pom.xml.next
746 | release.properties
747 | dependency-reduced-pom.xml
748 | buildNumber.properties
749 | .mvn/timing.properties
750 | # https://github.com/takari/maven-wrapper#usage-without-binary-jar
751 | .mvn/wrapper/maven-wrapper.jar
752 |
753 | ### NetBeans ###
754 | **/nbproject/private/
755 | **/nbproject/Makefile-*.mk
756 | **/nbproject/Package-*.bash
757 | nbbuild/
758 | dist/
759 | nbdist/
760 | .nb-gradle/
761 |
762 | ### Vim ###
763 | # Swap
764 | [._]*.s[a-v][a-z]
765 | !*.svg # comment out if you don't need vector files
766 | [._]*.sw[a-p]
767 | [._]s[a-rt-v][a-z]
768 | [._]ss[a-gi-z]
769 | [._]sw[a-p]
770 |
771 | # Session
772 | Session.vim
773 | Sessionx.vim
774 |
775 | # Temporary
776 | .netrwhist
777 | # Auto-generated tag files
778 | tags
779 | # Persistent undo
780 | [._]*.un~
781 |
782 | ### VisualStudioCode ###
783 | .vscode/*
784 | !.vscode/settings.json
785 | !.vscode/tasks.json
786 | !.vscode/launch.json
787 | !.vscode/extensions.json
788 | *.code-workspace
789 |
790 | ### VisualStudioCode Patch ###
791 | # Ignore all local history of files
792 | .history
793 | .ionide
794 |
795 | ### Gradle ###
796 | .gradle
797 |
798 | # Ignore Gradle GUI config
799 | gradle-app.setting
800 |
801 | # Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
802 | !gradle-wrapper.jar
803 |
804 | # Cache of project
805 | .gradletasknamecache
806 |
807 | # # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
808 | # gradle/wrapper/gradle-wrapper.properties
809 |
810 | ### Gradle Patch ###
811 | **/build/
812 |
813 | ### AndroidStudio ###
814 | # Covers files to be ignored for android development using Android Studio.
815 |
816 | # Built application files
817 |
818 | # Files for the ART/Dalvik VM
819 |
820 | # Java class files
821 |
822 | # Generated files
823 |
824 | # Gradle files
825 |
826 | # Signing files
827 | .signing/
828 |
829 | # Local configuration file (sdk path, etc)
830 |
831 | # Proguard folder generated by Eclipse
832 |
833 | # Log Files
834 |
835 | # Android Studio
836 | /*/build/
837 | /*/local.properties
838 | /*/out
839 | /*/*/build
840 | /*/*/production
841 |
842 | # Keystore files
843 | *.jks
844 | *.keystore
845 |
846 | # Google Services (e.g. APIs or Firebase)
847 | # google-services.json
848 |
849 | # Android Patch
850 |
851 | # External native build folder generated in Android Studio 2.2 and later
852 |
853 | # NDK
854 | obj/
855 |
856 | # IntelliJ IDEA
857 | /out/
858 |
859 | # User-specific configurations
860 | .idea/caches/
861 | .idea/libraries/
862 | .idea/shelf/
863 | .idea/.name
864 | .idea/compiler.xml
865 | .idea/copyright/profiles_settings.xml
866 | .idea/encodings.xml
867 | .idea/scopes/scope_settings.xml
868 | .idea/vcs.xml
869 | .idea/jsLibraryMappings.xml
870 | .idea/datasources.xml
871 | .idea/dataSources.ids
872 | .idea/sqlDataSources.xml
873 | .idea/dynamic.xml
874 | .idea/uiDesigner.xml
875 | .idea/jarRepositories.xml
876 |
877 | # OS-specific files
878 | .DS_Store?
879 |
880 | # Legacy Eclipse project files
881 | .classpath
882 | .project
883 |
884 | # Mobile Tools for Java (J2ME)
885 |
886 | # Package Files #
887 |
888 | # virtual machine crash logs (Reference: http://www.java.com/en/download/help/error_hotspot.xml)
889 |
890 | ## Plugin-specific files:
891 |
892 | # mpeltonen/sbt-idea plugin
893 |
894 | # JIRA plugin
895 |
896 | # Mongo Explorer plugin
897 | .idea/mongoSettings.xml
898 |
899 | # Crashlytics plugin (for Android Studio and IntelliJ)
900 |
901 | ### AndroidStudio Patch ###
902 |
903 | !/gradle/wrapper/gradle-wrapper.jar
904 |
905 | ### VisualStudio ###
906 | ## Ignore Visual Studio temporary files, build results, and
907 | ## files generated by popular Visual Studio add-ons.
908 | ##
909 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
910 |
911 | # User-specific files
912 | *.rsuser
913 | *.suo
914 | *.user
915 | *.userosscache
916 | *.sln.docstates
917 |
918 | # User-specific files (MonoDevelop/Xamarin Studio)
919 | *.userprefs
920 |
921 | # Mono auto generated files
922 | mono_crash.*
923 |
924 | # Build results
925 | [Dd]ebug/
926 | [Dd]ebugPublic/
927 | [Rr]elease/
928 | [Rr]eleases/
929 | x64/
930 | x86/
931 | [Aa][Rr][Mm]/
932 | [Aa][Rr][Mm]64/
933 | bld/
934 | [Bb]in/
935 | [Oo]bj/
936 | [Ll]og/
937 | [Ll]ogs/
938 |
939 | # Visual Studio 2015/2017 cache/options directory
940 | .vs/
941 | # Uncomment if you have tasks that create the project's static files in wwwroot
942 | #wwwroot/
943 |
944 | # Visual Studio 2017 auto generated files
945 | Generated\ Files/
946 |
947 | # MSTest test Results
948 | [Tt]est[Rr]esult*/
949 | [Bb]uild[Ll]og.*
950 |
951 | # NUnit
952 | *.VisualState.xml
953 | TestResult.xml
954 | nunit-*.xml
955 |
956 | # Build Results of an ATL Project
957 | [Dd]ebugPS/
958 | [Rr]eleasePS/
959 | dlldata.c
960 |
961 | # Benchmark Results
962 | BenchmarkDotNet.Artifacts/
963 |
964 | # .NET Core
965 | project.lock.json
966 | project.fragment.lock.json
967 | artifacts/
968 |
969 | # StyleCop
970 | StyleCopReport.xml
971 |
972 | # Files built by Visual Studio
973 | *_i.c
974 | *_p.c
975 | *_h.h
976 | *.meta
977 | *.iobj
978 | *.ipdb
979 | *.pgc
980 | *.pgd
981 | *.rsp
982 | *.sbr
983 | *.tlb
984 | *.tli
985 | *.tlh
986 | *.tmp_proj
987 | *_wpftmp.csproj
988 | *.vspscc
989 | *.vssscc
990 | .builds
991 | *.pidb
992 | *.svclog
993 | *.scc
994 |
995 | # Chutzpah Test files
996 | _Chutzpah*
997 |
998 | # Visual C++ cache files
999 | ipch/
1000 | *.aps
1001 | *.ncb
1002 | *.opendb
1003 | *.opensdf
1004 | *.sdf
1005 | *.cachefile
1006 | *.VC.db
1007 | *.VC.VC.opendb
1008 |
1009 | # Visual Studio profiler
1010 | *.psess
1011 | *.vsp
1012 | *.vspx
1013 | *.sap
1014 |
1015 | # Visual Studio Trace Files
1016 | *.e2e
1017 |
1018 | # TFS 2012 Local Workspace
1019 | $tf/
1020 |
1021 | # Guidance Automation Toolkit
1022 | *.gpState
1023 |
1024 | # ReSharper is a .NET coding add-in
1025 | _ReSharper*/
1026 | *.[Rr]e[Ss]harper
1027 | *.DotSettings.user
1028 |
1029 | # TeamCity is a build add-in
1030 | _TeamCity*
1031 |
1032 | # DotCover is a Code Coverage Tool
1033 | *.dotCover
1034 |
1035 | # AxoCover is a Code Coverage Tool
1036 | .axoCover/*
1037 | !.axoCover/settings.json
1038 |
1039 | # Coverlet is a free, cross platform Code Coverage Tool
1040 | coverage*[.json, .xml, .info]
1041 |
1042 | # Visual Studio code coverage results
1043 | *.coverage
1044 | *.coveragexml
1045 |
1046 | # NCrunch
1047 | _NCrunch_*
1048 | .*crunch*.local.xml
1049 | nCrunchTemp_*
1050 |
1051 | # MightyMoose
1052 | *.mm.*
1053 | AutoTest.Net/
1054 |
1055 | # Web workbench (sass)
1056 | .sass-cache/
1057 |
1058 | # Installshield output folder
1059 | [Ee]xpress/
1060 |
1061 | # DocProject is a documentation generator add-in
1062 | DocProject/buildhelp/
1063 | DocProject/Help/*.HxT
1064 | DocProject/Help/*.HxC
1065 | DocProject/Help/*.hhc
1066 | DocProject/Help/*.hhk
1067 | DocProject/Help/*.hhp
1068 | DocProject/Help/Html2
1069 | DocProject/Help/html
1070 |
1071 | # Click-Once directory
1072 | publish/
1073 |
1074 | # Publish Web Output
1075 | *.[Pp]ublish.xml
1076 | *.azurePubxml
1077 | # Note: Comment the next line if you want to checkin your web deploy settings,
1078 | # but database connection strings (with potential passwords) will be unencrypted
1079 | *.pubxml
1080 | *.publishproj
1081 |
1082 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
1083 | # checkin your Azure Web App publish settings, but sensitive information contained
1084 | # in these scripts will be unencrypted
1085 | PublishScripts/
1086 |
1087 | # NuGet Packages
1088 | *.nupkg
1089 | # NuGet Symbol Packages
1090 | *.snupkg
1091 | # The packages folder can be ignored because of Package Restore
1092 | **/[Pp]ackages/*
1093 | # except build/, which is used as an MSBuild target.
1094 | !**/[Pp]ackages/build/
1095 | # Uncomment if necessary however generally it will be regenerated when needed
1096 | #!**/[Pp]ackages/repositories.config
1097 | # NuGet v3's project.json files produces more ignorable files
1098 | *.nuget.props
1099 | *.nuget.targets
1100 |
1101 | # Microsoft Azure Build Output
1102 | csx/
1103 | *.build.csdef
1104 |
1105 | # Microsoft Azure Emulator
1106 | ecf/
1107 | rcf/
1108 |
1109 | # Windows Store app package directories and files
1110 | AppPackages/
1111 | BundleArtifacts/
1112 | Package.StoreAssociation.xml
1113 | _pkginfo.txt
1114 | *.appx
1115 | *.appxbundle
1116 | *.appxupload
1117 |
1118 | # Visual Studio cache files
1119 | # files ending in .cache can be ignored
1120 | *.[Cc]ache
1121 | # but keep track of directories ending in .cache
1122 | !?*.[Cc]ache/
1123 |
1124 | # Others
1125 | ClientBin/
1126 | ~$*
1127 | *.dbmdl
1128 | *.dbproj.schemaview
1129 | *.jfm
1130 | *.pfx
1131 | *.publishsettings
1132 | orleans.codegen.cs
1133 |
1134 | # Including strong name files can present a security risk
1135 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
1136 | #*.snk
1137 |
1138 | # Since there are multiple workflows, uncomment next line to ignore bower_components
1139 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
1140 | #bower_components/
1141 |
1142 | # RIA/Silverlight projects
1143 | Generated_Code/
1144 |
1145 | # Backup & report files from converting an old project file
1146 | # to a newer Visual Studio version. Backup files are not needed,
1147 | # because we have git ;-)
1148 | _UpgradeReport_Files/
1149 | Backup*/
1150 | UpgradeLog*.XML
1151 | UpgradeLog*.htm
1152 | ServiceFabricBackup/
1153 | *.rptproj.bak
1154 |
1155 | # SQL Server files
1156 | *.mdf
1157 | *.ldf
1158 | *.ndf
1159 |
1160 | # Business Intelligence projects
1161 | *.rdl.data
1162 | *.bim.layout
1163 | *.bim_*.settings
1164 | *.rptproj.rsuser
1165 | *- [Bb]ackup.rdl
1166 | *- [Bb]ackup ([0-9]).rdl
1167 | *- [Bb]ackup ([0-9][0-9]).rdl
1168 |
1169 | # Microsoft Fakes
1170 | FakesAssemblies/
1171 |
1172 | # GhostDoc plugin setting file
1173 | *.GhostDoc.xml
1174 |
1175 | # Node.js Tools for Visual Studio
1176 | .ntvs_analysis.dat
1177 | node_modules/
1178 |
1179 | # Visual Studio 6 build log
1180 | *.plg
1181 |
1182 | # Visual Studio 6 workspace options file
1183 | *.opt
1184 |
1185 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
1186 | *.vbw
1187 |
1188 | # Visual Studio LightSwitch build output
1189 | **/*.HTMLClient/GeneratedArtifacts
1190 | **/*.DesktopClient/GeneratedArtifacts
1191 | **/*.DesktopClient/ModelManifest.xml
1192 | **/*.Server/GeneratedArtifacts
1193 | **/*.Server/ModelManifest.xml
1194 | _Pvt_Extensions
1195 |
1196 | # Paket dependency manager
1197 | .paket/paket.exe
1198 | paket-files/
1199 |
1200 | # FAKE - F# Make
1201 | .fake/
1202 |
1203 | # CodeRush personal settings
1204 | .cr/personal
1205 |
1206 | # Python Tools for Visual Studio (PTVS)
1207 | __pycache__/
1208 | *.pyc
1209 |
1210 | # Cake - Uncomment if you are using it
1211 | # tools/**
1212 | # !tools/packages.config
1213 |
1214 | # Tabs Studio
1215 | *.tss
1216 |
1217 | # Telerik's JustMock configuration file
1218 | *.jmconfig
1219 |
1220 | # BizTalk build output
1221 | *.btp.cs
1222 | *.btm.cs
1223 | *.odx.cs
1224 | *.xsd.cs
1225 |
1226 | # OpenCover UI analysis results
1227 | OpenCover/
1228 |
1229 | # Azure Stream Analytics local run output
1230 | ASALocalRun/
1231 |
1232 | # MSBuild Binary and Structured Log
1233 | *.binlog
1234 |
1235 | # NVidia Nsight GPU debugger configuration file
1236 | *.nvuser
1237 |
1238 | # MFractors (Xamarin productivity tool) working folder
1239 | .mfractor/
1240 |
1241 | # Local History for Visual Studio
1242 | .localhistory/
1243 |
1244 | # BeatPulse healthcheck temp database
1245 | healthchecksdb
1246 |
1247 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
1248 | MigrationBackup/
1249 |
1250 | # Ionide (cross platform F# VS Code tools) working folder
1251 | .ionide/
1252 |
1253 | # End of https://www.toptal.com/developers/gitignore/api/android,androidstudio,kotlin,java,c,c++,visualstudio,visualstudiocode,maven,git,intellij,intellij+iml,intellij+all,netbeans,eclipse,appcode,appcode+iml,appcode+all,windows,macos,linux,gradle,vim
1254 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | !setup.sh
2 |
3 | # Created by https://www.toptal.com/developers/gitignore/api/android,androidstudio,kotlin,java,c,c++,visualstudio,visualstudiocode,maven,git,intellij,intellij+iml,intellij+all,netbeans,eclipse,appcode,appcode+iml,appcode+all,windows,macos,linux,gradle,vim
4 | # Edit at https://www.toptal.com/developers/gitignore?templates=android,androidstudio,kotlin,java,c,c++,visualstudio,visualstudiocode,maven,git,intellij,intellij+iml,intellij+all,netbeans,eclipse,appcode,appcode+iml,appcode+all,windows,macos,linux,gradle,vim
5 |
6 | ### Android ###
7 | # Built application files
8 | *.apk
9 | *.aar
10 | *.ap_
11 | *.aab
12 |
13 | # Files for the ART/Dalvik VM
14 | *.dex
15 |
16 | # Java class files
17 | *.class
18 |
19 | # Generated files
20 | bin/
21 | gen/
22 | out/
23 | # Uncomment the following line in case you need and you don't have the release build type files in your app
24 | # release/
25 |
26 | # Gradle files
27 | .gradle/
28 | build/
29 |
30 | # Local configuration file (sdk path, etc)
31 | local.properties
32 |
33 | # Proguard folder generated by Eclipse
34 | proguard/
35 |
36 | # Log Files
37 | *.log
38 |
39 | # Android Studio Navigation editor temp files
40 | .navigation/
41 |
42 | # Android Studio captures folder
43 | captures/
44 |
45 | # IntelliJ
46 | *.iml
47 | .idea/workspace.xml
48 | .idea/tasks.xml
49 | .idea/gradle.xml
50 | .idea/assetWizardSettings.xml
51 | .idea/dictionaries
52 | .idea/libraries
53 | # Android Studio 3 in .gitignore file.
54 | .idea/caches
55 | .idea/modules.xml
56 | # Comment next line if keeping position of elements in Navigation Editor is relevant for you
57 | .idea/navEditor.xml
58 |
59 | # Keystore files
60 | # Uncomment the following lines if you do not want to check your keystore files in.
61 | #*.jks
62 | #*.keystore
63 |
64 | # External native build folder generated in Android Studio 2.2 and later
65 | .externalNativeBuild
66 | .cxx/
67 |
68 | # Google Services (e.g. APIs or Firebase)
69 | # google-services.json
70 |
71 | # Freeline
72 | freeline.py
73 | freeline/
74 | freeline_project_description.json
75 |
76 | # fastlane
77 | fastlane/report.xml
78 | fastlane/Preview.html
79 | fastlane/screenshots
80 | fastlane/test_output
81 | fastlane/readme.md
82 |
83 | # Version control
84 | vcs.xml
85 |
86 | # lint
87 | lint/intermediates/
88 | lint/generated/
89 | lint/outputs/
90 | lint/tmp/
91 | # lint/reports/
92 |
93 | ### Android Patch ###
94 | gen-external-apklibs
95 | output.json
96 |
97 | # Replacement of .externalNativeBuild directories introduced
98 | # with Android Studio 3.5.
99 |
100 | ### Intellij+all ###
101 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
102 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
103 |
104 | # User-specific stuff
105 | .idea/**/workspace.xml
106 | .idea/**/tasks.xml
107 | .idea/**/usage.statistics.xml
108 | .idea/**/dictionaries
109 | .idea/**/shelf
110 |
111 | # Generated files
112 | .idea/**/contentModel.xml
113 |
114 | # Sensitive or high-churn files
115 | .idea/**/dataSources/
116 | .idea/**/dataSources.ids
117 | .idea/**/dataSources.local.xml
118 | .idea/**/sqlDataSources.xml
119 | .idea/**/dynamic.xml
120 | .idea/**/uiDesigner.xml
121 | .idea/**/dbnavigator.xml
122 |
123 | # Gradle
124 | .idea/**/gradle.xml
125 | .idea/**/libraries
126 |
127 | # Gradle and Maven with auto-import
128 | # When using Gradle or Maven with auto-import, you should exclude module files,
129 | # since they will be recreated, and may cause churn. Uncomment if using
130 | # auto-import.
131 | # .idea/artifacts
132 | # .idea/compiler.xml
133 | # .idea/jarRepositories.xml
134 | # .idea/modules.xml
135 | # .idea/*.iml
136 | # .idea/modules
137 | # *.iml
138 | # *.ipr
139 |
140 | # CMake
141 | cmake-build-*/
142 |
143 | # Mongo Explorer plugin
144 | .idea/**/mongoSettings.xml
145 |
146 | # File-based project format
147 | *.iws
148 |
149 | # IntelliJ
150 |
151 | # mpeltonen/sbt-idea plugin
152 | .idea_modules/
153 |
154 | # JIRA plugin
155 | atlassian-ide-plugin.xml
156 |
157 | # Cursive Clojure plugin
158 | .idea/replstate.xml
159 |
160 | # Crashlytics plugin (for Android Studio and IntelliJ)
161 | com_crashlytics_export_strings.xml
162 | crashlytics.properties
163 | crashlytics-build.properties
164 | fabric.properties
165 |
166 | # Editor-based Rest Client
167 | .idea/httpRequests
168 |
169 | # Android studio 3.1+ serialized cache file
170 | .idea/caches/build_file_checksums.ser
171 |
172 | ### Intellij+all Patch ###
173 | # Ignores the whole .idea folder and all .iml files
174 | # See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360
175 |
176 | .idea/
177 |
178 | # Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
179 |
180 | modules.xml
181 | .idea/misc.xml
182 | *.ipr
183 |
184 | # Sonarlint plugin
185 | .idea/sonarlint
186 |
187 | ### AppCode ###
188 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
189 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
190 |
191 | # User-specific stuff
192 |
193 | # Generated files
194 |
195 | # Sensitive or high-churn files
196 |
197 | # Gradle
198 |
199 | # Gradle and Maven with auto-import
200 | # When using Gradle or Maven with auto-import, you should exclude module files,
201 | # since they will be recreated, and may cause churn. Uncomment if using
202 | # auto-import.
203 | # .idea/artifacts
204 | # .idea/compiler.xml
205 | # .idea/jarRepositories.xml
206 | # .idea/modules.xml
207 | # .idea/*.iml
208 | # .idea/modules
209 | # *.iml
210 | # *.ipr
211 |
212 | # CMake
213 |
214 | # Mongo Explorer plugin
215 |
216 | # File-based project format
217 |
218 | # IntelliJ
219 |
220 | # mpeltonen/sbt-idea plugin
221 |
222 | # JIRA plugin
223 |
224 | # Cursive Clojure plugin
225 |
226 | # Crashlytics plugin (for Android Studio and IntelliJ)
227 |
228 | # Editor-based Rest Client
229 |
230 | # Android studio 3.1+ serialized cache file
231 |
232 | ### AppCode Patch ###
233 | # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
234 |
235 | # *.iml
236 | # modules.xml
237 | # .idea/misc.xml
238 | # *.ipr
239 |
240 | # Sonarlint plugin
241 | # https://plugins.jetbrains.com/plugin/7973-sonarlint
242 | .idea/**/sonarlint/
243 |
244 | # SonarQube Plugin
245 | # https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
246 | .idea/**/sonarIssues.xml
247 |
248 | # Markdown Navigator plugin
249 | # https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
250 | .idea/**/markdown-navigator.xml
251 | .idea/**/markdown-navigator-enh.xml
252 | .idea/**/markdown-navigator/
253 |
254 | # Cache file creation bug
255 | # See https://youtrack.jetbrains.com/issue/JBR-2257
256 | .idea/$CACHE_FILE$
257 |
258 | # CodeStream plugin
259 | # https://plugins.jetbrains.com/plugin/12206-codestream
260 | .idea/codestream.xml
261 |
262 | ### AppCode+all ###
263 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
264 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
265 |
266 | # User-specific stuff
267 |
268 | # Generated files
269 |
270 | # Sensitive or high-churn files
271 |
272 | # Gradle
273 |
274 | # Gradle and Maven with auto-import
275 | # When using Gradle or Maven with auto-import, you should exclude module files,
276 | # since they will be recreated, and may cause churn. Uncomment if using
277 | # auto-import.
278 | # .idea/artifacts
279 | # .idea/compiler.xml
280 | # .idea/jarRepositories.xml
281 | # .idea/modules.xml
282 | # .idea/*.iml
283 | # .idea/modules
284 | # *.iml
285 | # *.ipr
286 |
287 | # CMake
288 |
289 | # Mongo Explorer plugin
290 |
291 | # File-based project format
292 |
293 | # IntelliJ
294 |
295 | # mpeltonen/sbt-idea plugin
296 |
297 | # JIRA plugin
298 |
299 | # Cursive Clojure plugin
300 |
301 | # Crashlytics plugin (for Android Studio and IntelliJ)
302 |
303 | # Editor-based Rest Client
304 |
305 | # Android studio 3.1+ serialized cache file
306 |
307 | ### AppCode+all Patch ###
308 | # Ignores the whole .idea folder and all .iml files
309 | # See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360
310 |
311 |
312 | # Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
313 |
314 |
315 | # Sonarlint plugin
316 |
317 | ### AppCode+iml ###
318 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
319 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
320 |
321 | # User-specific stuff
322 |
323 | # Generated files
324 |
325 | # Sensitive or high-churn files
326 |
327 | # Gradle
328 |
329 | # Gradle and Maven with auto-import
330 | # When using Gradle or Maven with auto-import, you should exclude module files,
331 | # since they will be recreated, and may cause churn. Uncomment if using
332 | # auto-import.
333 | # .idea/artifacts
334 | # .idea/compiler.xml
335 | # .idea/jarRepositories.xml
336 | # .idea/modules.xml
337 | # .idea/*.iml
338 | # .idea/modules
339 | # *.iml
340 | # *.ipr
341 |
342 | # CMake
343 |
344 | # Mongo Explorer plugin
345 |
346 | # File-based project format
347 |
348 | # IntelliJ
349 |
350 | # mpeltonen/sbt-idea plugin
351 |
352 | # JIRA plugin
353 |
354 | # Cursive Clojure plugin
355 |
356 | # Crashlytics plugin (for Android Studio and IntelliJ)
357 |
358 | # Editor-based Rest Client
359 |
360 | # Android studio 3.1+ serialized cache file
361 |
362 | ### AppCode+iml Patch ###
363 | # Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
364 |
365 |
366 | ### C ###
367 | # Prerequisites
368 | *.d
369 |
370 | # Object files
371 | *.o
372 | *.ko
373 | *.obj
374 | *.elf
375 |
376 | # Linker output
377 | *.ilk
378 | *.map
379 | *.exp
380 |
381 | # Precompiled Headers
382 | *.gch
383 | *.pch
384 |
385 | # Libraries
386 | *.lib
387 | *.a
388 | *.la
389 | *.lo
390 |
391 | # Shared objects (inc. Windows DLLs)
392 | *.dll
393 | *.so
394 | *.so.*
395 | *.dylib
396 |
397 | # Executables
398 | *.exe
399 | *.out
400 | *.app
401 | *.i*86
402 | *.x86_64
403 | *.hex
404 |
405 | # Debug files
406 | *.dSYM/
407 | *.su
408 | *.idb
409 | *.pdb
410 |
411 | # Kernel Module Compile Results
412 | *.mod*
413 | *.cmd
414 | .tmp_versions/
415 | modules.order
416 | Module.symvers
417 | Mkfile.old
418 | dkms.conf
419 |
420 | ### C++ ###
421 | # Prerequisites
422 |
423 | # Compiled Object files
424 | *.slo
425 |
426 | # Precompiled Headers
427 |
428 | # Compiled Dynamic libraries
429 |
430 | # Fortran module files
431 | *.mod
432 | *.smod
433 |
434 | # Compiled Static libraries
435 | *.lai
436 |
437 | # Executables
438 |
439 | ### Eclipse ###
440 | .metadata
441 | tmp/
442 | *.tmp
443 | *.bak
444 | *.swp
445 | *~.nib
446 | .settings/
447 | .loadpath
448 | .recommenders
449 |
450 | # External tool builders
451 | .externalToolBuilders/
452 |
453 | # Locally stored "Eclipse launch configurations"
454 | *.launch
455 |
456 | # PyDev specific (Python IDE for Eclipse)
457 | *.pydevproject
458 |
459 | # CDT-specific (C/C++ Development Tooling)
460 | .cproject
461 |
462 | # CDT- autotools
463 | .autotools
464 |
465 | # Java annotation processor (APT)
466 | .factorypath
467 |
468 | # PDT-specific (PHP Development Tools)
469 | .buildpath
470 |
471 | # sbteclipse plugin
472 | .target
473 |
474 | # Tern plugin
475 | .tern-project
476 |
477 | # TeXlipse plugin
478 | .texlipse
479 |
480 | # STS (Spring Tool Suite)
481 | .springBeans
482 |
483 | # Code Recommenders
484 | .recommenders/
485 |
486 | # Annotation Processing
487 | .apt_generated/
488 | .apt_generated_test/
489 |
490 | # Scala IDE specific (Scala & Java development for Eclipse)
491 | .cache-main
492 | .scala_dependencies
493 | .worksheet
494 |
495 | # Uncomment this line if you wish to ignore the project description file.
496 | # Typically, this file would be tracked if it contains build/dependency configurations:
497 | #.project
498 |
499 | ### Eclipse Patch ###
500 | # Spring Boot Tooling
501 | .sts4-cache/
502 |
503 | ### Git ###
504 | # Created by git for backups. To disable backups in Git:
505 | # $ git config --global mergetool.keepBackup false
506 | *.orig
507 |
508 | # Created by git when using merge tools for conflicts
509 | *.BACKUP.*
510 | *.BASE.*
511 | *.LOCAL.*
512 | *.REMOTE.*
513 | *_BACKUP_*.txt
514 | *_BASE_*.txt
515 | *_LOCAL_*.txt
516 | *_REMOTE_*.txt
517 |
518 | ### Intellij ###
519 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
520 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
521 |
522 | # User-specific stuff
523 |
524 | # Generated files
525 |
526 | # Sensitive or high-churn files
527 |
528 | # Gradle
529 |
530 | # Gradle and Maven with auto-import
531 | # When using Gradle or Maven with auto-import, you should exclude module files,
532 | # since they will be recreated, and may cause churn. Uncomment if using
533 | # auto-import.
534 | # .idea/artifacts
535 | # .idea/compiler.xml
536 | # .idea/jarRepositories.xml
537 | # .idea/modules.xml
538 | # .idea/*.iml
539 | # .idea/modules
540 | # *.iml
541 | # *.ipr
542 |
543 | # CMake
544 |
545 | # Mongo Explorer plugin
546 |
547 | # File-based project format
548 |
549 | # IntelliJ
550 |
551 | # mpeltonen/sbt-idea plugin
552 |
553 | # JIRA plugin
554 |
555 | # Cursive Clojure plugin
556 |
557 | # Crashlytics plugin (for Android Studio and IntelliJ)
558 |
559 | # Editor-based Rest Client
560 |
561 | # Android studio 3.1+ serialized cache file
562 |
563 | ### Intellij Patch ###
564 | # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
565 |
566 | # *.iml
567 | # modules.xml
568 | # .idea/misc.xml
569 | # *.ipr
570 |
571 | # Sonarlint plugin
572 | # https://plugins.jetbrains.com/plugin/7973-sonarlint
573 |
574 | # SonarQube Plugin
575 | # https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
576 |
577 | # Markdown Navigator plugin
578 | # https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
579 |
580 | # Cache file creation bug
581 | # See https://youtrack.jetbrains.com/issue/JBR-2257
582 |
583 | # CodeStream plugin
584 | # https://plugins.jetbrains.com/plugin/12206-codestream
585 |
586 | ### Windows ###
587 | # Windows thumbnail cache files
588 | Thumbs.db
589 | Thumbs.db:encryptable
590 | ehthumbs.db
591 | ehthumbs_vista.db
592 |
593 | # Dump file
594 | *.stackdump
595 |
596 | # Folder config file
597 | [Dd]esktop.ini
598 |
599 | # Recycle Bin used on file shares
600 | $RECYCLE.BIN/
601 |
602 | # Windows Installer files
603 | *.cab
604 | *.msi
605 | *.msix
606 | *.msm
607 | *.msp
608 |
609 | # Windows shortcuts
610 | *.lnk
611 |
612 | ### Intellij+iml ###
613 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
614 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
615 |
616 | # User-specific stuff
617 |
618 | # Generated files
619 |
620 | # Sensitive or high-churn files
621 |
622 | # Gradle
623 |
624 | # Gradle and Maven with auto-import
625 | # When using Gradle or Maven with auto-import, you should exclude module files,
626 | # since they will be recreated, and may cause churn. Uncomment if using
627 | # auto-import.
628 | # .idea/artifacts
629 | # .idea/compiler.xml
630 | # .idea/jarRepositories.xml
631 | # .idea/modules.xml
632 | # .idea/*.iml
633 | # .idea/modules
634 | # *.iml
635 | # *.ipr
636 |
637 | # CMake
638 |
639 | # Mongo Explorer plugin
640 |
641 | # File-based project format
642 |
643 | # IntelliJ
644 |
645 | # mpeltonen/sbt-idea plugin
646 |
647 | # JIRA plugin
648 |
649 | # Cursive Clojure plugin
650 |
651 | # Crashlytics plugin (for Android Studio and IntelliJ)
652 |
653 | # Editor-based Rest Client
654 |
655 | # Android studio 3.1+ serialized cache file
656 |
657 | ### Intellij+iml Patch ###
658 | # Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
659 |
660 |
661 | ### Java ###
662 | # Compiled class file
663 |
664 | # Log file
665 |
666 | # BlueJ files
667 | *.ctxt
668 |
669 | # Mobile Tools for Java (J2ME)
670 | .mtj.tmp/
671 |
672 | # Package Files #
673 | *.jar
674 | *.war
675 | *.nar
676 | *.ear
677 | *.zip
678 | *.tar.gz
679 | *.rar
680 |
681 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
682 | hs_err_pid*
683 |
684 | ### Kotlin ###
685 | # Compiled class file
686 |
687 | # Log file
688 |
689 | # BlueJ files
690 |
691 | # Mobile Tools for Java (J2ME)
692 |
693 | # Package Files #
694 |
695 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
696 |
697 | ### Linux ###
698 | *~
699 |
700 | # temporary files which can be created if a process still has a handle open of a deleted file
701 | .fuse_hidden*
702 |
703 | # KDE directory preferences
704 | .directory
705 |
706 | # Linux trash folder which might appear on any partition or disk
707 | .Trash-*
708 |
709 | # .nfs files are created when an open file is removed but is still being accessed
710 | .nfs*
711 |
712 | ### macOS ###
713 | # General
714 | .DS_Store
715 | .AppleDouble
716 | .LSOverride
717 |
718 | # Icon must end with two \r
719 | Icon
720 |
721 | # Thumbnails
722 | ._*
723 |
724 | # Files that might appear in the root of a volume
725 | .DocumentRevisions-V100
726 | .fseventsd
727 | .Spotlight-V100
728 | .TemporaryItems
729 | .Trashes
730 | .VolumeIcon.icns
731 | .com.apple.timemachine.donotpresent
732 |
733 | # Directories potentially created on remote AFP share
734 | .AppleDB
735 | .AppleDesktop
736 | Network Trash Folder
737 | Temporary Items
738 | .apdisk
739 |
740 | ### Maven ###
741 | target/
742 | pom.xml.tag
743 | pom.xml.releaseBackup
744 | pom.xml.versionsBackup
745 | pom.xml.next
746 | release.properties
747 | dependency-reduced-pom.xml
748 | buildNumber.properties
749 | .mvn/timing.properties
750 | # https://github.com/takari/maven-wrapper#usage-without-binary-jar
751 | .mvn/wrapper/maven-wrapper.jar
752 |
753 | ### NetBeans ###
754 | **/nbproject/private/
755 | **/nbproject/Makefile-*.mk
756 | **/nbproject/Package-*.bash
757 | nbbuild/
758 | dist/
759 | nbdist/
760 | .nb-gradle/
761 |
762 | ### Vim ###
763 | # Swap
764 | [._]*.s[a-v][a-z]
765 | !*.svg # comment out if you don't need vector files
766 | [._]*.sw[a-p]
767 | [._]s[a-rt-v][a-z]
768 | [._]ss[a-gi-z]
769 | [._]sw[a-p]
770 |
771 | # Session
772 | Session.vim
773 | Sessionx.vim
774 |
775 | # Temporary
776 | .netrwhist
777 | # Auto-generated tag files
778 | tags
779 | # Persistent undo
780 | [._]*.un~
781 |
782 | ### VisualStudioCode ###
783 | .vscode/*
784 | !.vscode/settings.json
785 | !.vscode/tasks.json
786 | !.vscode/launch.json
787 | !.vscode/extensions.json
788 | *.code-workspace
789 |
790 | ### VisualStudioCode Patch ###
791 | # Ignore all local history of files
792 | .history
793 | .ionide
794 |
795 | ### Gradle ###
796 | .gradle
797 |
798 | # Ignore Gradle GUI config
799 | gradle-app.setting
800 |
801 | # Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
802 | !gradle-wrapper.jar
803 |
804 | # Cache of project
805 | .gradletasknamecache
806 |
807 | # # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
808 | # gradle/wrapper/gradle-wrapper.properties
809 |
810 | ### Gradle Patch ###
811 | **/build/
812 |
813 | ### AndroidStudio ###
814 | # Covers files to be ignored for android development using Android Studio.
815 |
816 | # Built application files
817 |
818 | # Files for the ART/Dalvik VM
819 |
820 | # Java class files
821 |
822 | # Generated files
823 |
824 | # Gradle files
825 |
826 | # Signing files
827 | .signing/
828 |
829 | # Local configuration file (sdk path, etc)
830 |
831 | # Proguard folder generated by Eclipse
832 |
833 | # Log Files
834 |
835 | # Android Studio
836 | /*/build/
837 | /*/local.properties
838 | /*/out
839 | /*/*/build
840 | /*/*/production
841 |
842 | # Keystore files
843 | *.jks
844 | *.keystore
845 |
846 | # Google Services (e.g. APIs or Firebase)
847 | # google-services.json
848 |
849 | # Android Patch
850 |
851 | # External native build folder generated in Android Studio 2.2 and later
852 |
853 | # NDK
854 | obj/
855 |
856 | # IntelliJ IDEA
857 | /out/
858 |
859 | # User-specific configurations
860 | .idea/caches/
861 | .idea/libraries/
862 | .idea/shelf/
863 | .idea/.name
864 | .idea/compiler.xml
865 | .idea/copyright/profiles_settings.xml
866 | .idea/encodings.xml
867 | .idea/scopes/scope_settings.xml
868 | .idea/vcs.xml
869 | .idea/jsLibraryMappings.xml
870 | .idea/datasources.xml
871 | .idea/dataSources.ids
872 | .idea/sqlDataSources.xml
873 | .idea/dynamic.xml
874 | .idea/uiDesigner.xml
875 | .idea/jarRepositories.xml
876 |
877 | # OS-specific files
878 | .DS_Store?
879 |
880 | # Legacy Eclipse project files
881 | .classpath
882 | .project
883 |
884 | # Mobile Tools for Java (J2ME)
885 |
886 | # Package Files #
887 |
888 | # virtual machine crash logs (Reference: http://www.java.com/en/download/help/error_hotspot.xml)
889 |
890 | ## Plugin-specific files:
891 |
892 | # mpeltonen/sbt-idea plugin
893 |
894 | # JIRA plugin
895 |
896 | # Mongo Explorer plugin
897 | .idea/mongoSettings.xml
898 |
899 | # Crashlytics plugin (for Android Studio and IntelliJ)
900 |
901 | ### AndroidStudio Patch ###
902 |
903 | !/gradle/wrapper/gradle-wrapper.jar
904 |
905 | ### VisualStudio ###
906 | ## Ignore Visual Studio temporary files, build results, and
907 | ## files generated by popular Visual Studio add-ons.
908 | ##
909 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
910 |
911 | # User-specific files
912 | *.rsuser
913 | *.suo
914 | *.user
915 | *.userosscache
916 | *.sln.docstates
917 |
918 | # User-specific files (MonoDevelop/Xamarin Studio)
919 | *.userprefs
920 |
921 | # Mono auto generated files
922 | mono_crash.*
923 |
924 | # Build results
925 | [Dd]ebug/
926 | [Dd]ebugPublic/
927 | [Rr]elease/
928 | [Rr]eleases/
929 | x64/
930 | x86/
931 | [Aa][Rr][Mm]/
932 | [Aa][Rr][Mm]64/
933 | bld/
934 | [Bb]in/
935 | [Oo]bj/
936 | [Ll]og/
937 | [Ll]ogs/
938 |
939 | # Visual Studio 2015/2017 cache/options directory
940 | .vs/
941 | # Uncomment if you have tasks that create the project's static files in wwwroot
942 | #wwwroot/
943 |
944 | # Visual Studio 2017 auto generated files
945 | Generated\ Files/
946 |
947 | # MSTest test Results
948 | [Tt]est[Rr]esult*/
949 | [Bb]uild[Ll]og.*
950 |
951 | # NUnit
952 | *.VisualState.xml
953 | TestResult.xml
954 | nunit-*.xml
955 |
956 | # Build Results of an ATL Project
957 | [Dd]ebugPS/
958 | [Rr]eleasePS/
959 | dlldata.c
960 |
961 | # Benchmark Results
962 | BenchmarkDotNet.Artifacts/
963 |
964 | # .NET Core
965 | project.lock.json
966 | project.fragment.lock.json
967 | artifacts/
968 |
969 | # StyleCop
970 | StyleCopReport.xml
971 |
972 | # Files built by Visual Studio
973 | *_i.c
974 | *_p.c
975 | *_h.h
976 | *.meta
977 | *.iobj
978 | *.ipdb
979 | *.pgc
980 | *.pgd
981 | *.rsp
982 | *.sbr
983 | *.tlb
984 | *.tli
985 | *.tlh
986 | *.tmp_proj
987 | *_wpftmp.csproj
988 | *.vspscc
989 | *.vssscc
990 | .builds
991 | *.pidb
992 | *.svclog
993 | *.scc
994 |
995 | # Chutzpah Test files
996 | _Chutzpah*
997 |
998 | # Visual C++ cache files
999 | ipch/
1000 | *.aps
1001 | *.ncb
1002 | *.opendb
1003 | *.opensdf
1004 | *.sdf
1005 | *.cachefile
1006 | *.VC.db
1007 | *.VC.VC.opendb
1008 |
1009 | # Visual Studio profiler
1010 | *.psess
1011 | *.vsp
1012 | *.vspx
1013 | *.sap
1014 |
1015 | # Visual Studio Trace Files
1016 | *.e2e
1017 |
1018 | # TFS 2012 Local Workspace
1019 | $tf/
1020 |
1021 | # Guidance Automation Toolkit
1022 | *.gpState
1023 |
1024 | # ReSharper is a .NET coding add-in
1025 | _ReSharper*/
1026 | *.[Rr]e[Ss]harper
1027 | *.DotSettings.user
1028 |
1029 | # TeamCity is a build add-in
1030 | _TeamCity*
1031 |
1032 | # DotCover is a Code Coverage Tool
1033 | *.dotCover
1034 |
1035 | # AxoCover is a Code Coverage Tool
1036 | .axoCover/*
1037 | !.axoCover/settings.json
1038 |
1039 | # Coverlet is a free, cross platform Code Coverage Tool
1040 | coverage*[.json, .xml, .info]
1041 |
1042 | # Visual Studio code coverage results
1043 | *.coverage
1044 | *.coveragexml
1045 |
1046 | # NCrunch
1047 | _NCrunch_*
1048 | .*crunch*.local.xml
1049 | nCrunchTemp_*
1050 |
1051 | # MightyMoose
1052 | *.mm.*
1053 | AutoTest.Net/
1054 |
1055 | # Web workbench (sass)
1056 | .sass-cache/
1057 |
1058 | # Installshield output folder
1059 | [Ee]xpress/
1060 |
1061 | # DocProject is a documentation generator add-in
1062 | DocProject/buildhelp/
1063 | DocProject/Help/*.HxT
1064 | DocProject/Help/*.HxC
1065 | DocProject/Help/*.hhc
1066 | DocProject/Help/*.hhk
1067 | DocProject/Help/*.hhp
1068 | DocProject/Help/Html2
1069 | DocProject/Help/html
1070 |
1071 | # Click-Once directory
1072 | publish/
1073 |
1074 | # Publish Web Output
1075 | *.[Pp]ublish.xml
1076 | *.azurePubxml
1077 | # Note: Comment the next line if you want to checkin your web deploy settings,
1078 | # but database connection strings (with potential passwords) will be unencrypted
1079 | *.pubxml
1080 | *.publishproj
1081 |
1082 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
1083 | # checkin your Azure Web App publish settings, but sensitive information contained
1084 | # in these scripts will be unencrypted
1085 | PublishScripts/
1086 |
1087 | # NuGet Packages
1088 | *.nupkg
1089 | # NuGet Symbol Packages
1090 | *.snupkg
1091 | # The packages folder can be ignored because of Package Restore
1092 | **/[Pp]ackages/*
1093 | # except build/, which is used as an MSBuild target.
1094 | !**/[Pp]ackages/build/
1095 | # Uncomment if necessary however generally it will be regenerated when needed
1096 | #!**/[Pp]ackages/repositories.config
1097 | # NuGet v3's project.json files produces more ignorable files
1098 | *.nuget.props
1099 | *.nuget.targets
1100 |
1101 | # Microsoft Azure Build Output
1102 | csx/
1103 | *.build.csdef
1104 |
1105 | # Microsoft Azure Emulator
1106 | ecf/
1107 | rcf/
1108 |
1109 | # Windows Store app package directories and files
1110 | AppPackages/
1111 | BundleArtifacts/
1112 | Package.StoreAssociation.xml
1113 | _pkginfo.txt
1114 | *.appx
1115 | *.appxbundle
1116 | *.appxupload
1117 |
1118 | # Visual Studio cache files
1119 | # files ending in .cache can be ignored
1120 | *.[Cc]ache
1121 | # but keep track of directories ending in .cache
1122 | !?*.[Cc]ache/
1123 |
1124 | # Others
1125 | ClientBin/
1126 | ~$*
1127 | *.dbmdl
1128 | *.dbproj.schemaview
1129 | *.jfm
1130 | *.pfx
1131 | *.publishsettings
1132 | orleans.codegen.cs
1133 |
1134 | # Including strong name files can present a security risk
1135 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
1136 | #*.snk
1137 |
1138 | # Since there are multiple workflows, uncomment next line to ignore bower_components
1139 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
1140 | #bower_components/
1141 |
1142 | # RIA/Silverlight projects
1143 | Generated_Code/
1144 |
1145 | # Backup & report files from converting an old project file
1146 | # to a newer Visual Studio version. Backup files are not needed,
1147 | # because we have git ;-)
1148 | _UpgradeReport_Files/
1149 | Backup*/
1150 | UpgradeLog*.XML
1151 | UpgradeLog*.htm
1152 | ServiceFabricBackup/
1153 | *.rptproj.bak
1154 |
1155 | # SQL Server files
1156 | *.mdf
1157 | *.ldf
1158 | *.ndf
1159 |
1160 | # Business Intelligence projects
1161 | *.rdl.data
1162 | *.bim.layout
1163 | *.bim_*.settings
1164 | *.rptproj.rsuser
1165 | *- [Bb]ackup.rdl
1166 | *- [Bb]ackup ([0-9]).rdl
1167 | *- [Bb]ackup ([0-9][0-9]).rdl
1168 |
1169 | # Microsoft Fakes
1170 | FakesAssemblies/
1171 |
1172 | # GhostDoc plugin setting file
1173 | *.GhostDoc.xml
1174 |
1175 | # Node.js Tools for Visual Studio
1176 | .ntvs_analysis.dat
1177 | node_modules/
1178 |
1179 | # Visual Studio 6 build log
1180 | *.plg
1181 |
1182 | # Visual Studio 6 workspace options file
1183 | *.opt
1184 |
1185 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
1186 | *.vbw
1187 |
1188 | # Visual Studio LightSwitch build output
1189 | **/*.HTMLClient/GeneratedArtifacts
1190 | **/*.DesktopClient/GeneratedArtifacts
1191 | **/*.DesktopClient/ModelManifest.xml
1192 | **/*.Server/GeneratedArtifacts
1193 | **/*.Server/ModelManifest.xml
1194 | _Pvt_Extensions
1195 |
1196 | # Paket dependency manager
1197 | .paket/paket.exe
1198 | paket-files/
1199 |
1200 | # FAKE - F# Make
1201 | .fake/
1202 |
1203 | # CodeRush personal settings
1204 | .cr/personal
1205 |
1206 | # Python Tools for Visual Studio (PTVS)
1207 | __pycache__/
1208 | *.pyc
1209 |
1210 | # Cake - Uncomment if you are using it
1211 | # tools/**
1212 | # !tools/packages.config
1213 |
1214 | # Tabs Studio
1215 | *.tss
1216 |
1217 | # Telerik's JustMock configuration file
1218 | *.jmconfig
1219 |
1220 | # BizTalk build output
1221 | *.btp.cs
1222 | *.btm.cs
1223 | *.odx.cs
1224 | *.xsd.cs
1225 |
1226 | # OpenCover UI analysis results
1227 | OpenCover/
1228 |
1229 | # Azure Stream Analytics local run output
1230 | ASALocalRun/
1231 |
1232 | # MSBuild Binary and Structured Log
1233 | *.binlog
1234 |
1235 | # NVidia Nsight GPU debugger configuration file
1236 | *.nvuser
1237 |
1238 | # MFractors (Xamarin productivity tool) working folder
1239 | .mfractor/
1240 |
1241 | # Local History for Visual Studio
1242 | .localhistory/
1243 |
1244 | # BeatPulse healthcheck temp database
1245 | healthchecksdb
1246 |
1247 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
1248 | MigrationBackup/
1249 |
1250 | # Ionide (cross platform F# VS Code tools) working folder
1251 | .ionide/
1252 |
1253 | # End of https://www.toptal.com/developers/gitignore/api/android,androidstudio,kotlin,java,c,c++,visualstudio,visualstudiocode,maven,git,intellij,intellij+iml,intellij+all,netbeans,eclipse,appcode,appcode+iml,appcode+all,windows,macos,linux,gradle,vim
1254 |
--------------------------------------------------------------------------------