posix4e commited on
Commit
3090bb5
·
1 Parent(s): 9855c74

Checkin android studio generated skeleton

Browse files

Add basic test framework
Add a basic accesibility filters

Files changed (45) hide show
  1. puppet/.gitignore +14 -0
  2. puppet/.idea/.gitignore +3 -0
  3. puppet/.idea/androidTestResultsUserPreferences.xml +35 -0
  4. puppet/.idea/compiler.xml +6 -0
  5. puppet/.idea/gradle.xml +19 -0
  6. puppet/.idea/kotlinc.xml +6 -0
  7. puppet/.idea/misc.xml +9 -0
  8. puppet/.idea/vcs.xml +6 -0
  9. puppet/app/.gitignore +1 -0
  10. puppet/app/build.gradle +52 -0
  11. puppet/app/proguard-rules.pro +21 -0
  12. puppet/app/src/androidTest/java/com/ttt246/puppet/IntegrationTest.kt +17 -0
  13. puppet/app/src/androidTest/java/com/ttt246/puppet/MyAccessibilityServiceTest.kt +31 -0
  14. puppet/app/src/main/AndroidManifest.xml +41 -0
  15. puppet/app/src/main/java/com/ttt246/puppet/ChatterAct.kt +54 -0
  16. puppet/app/src/main/java/com/ttt246/puppet/PuppetAS.kt +48 -0
  17. puppet/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +30 -0
  18. puppet/app/src/main/res/drawable/ic_launcher_background.xml +170 -0
  19. puppet/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +6 -0
  20. puppet/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +6 -0
  21. puppet/app/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
  22. puppet/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
  23. puppet/app/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
  24. puppet/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
  25. puppet/app/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
  26. puppet/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
  27. puppet/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
  28. puppet/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
  29. puppet/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
  30. puppet/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
  31. puppet/app/src/main/res/values-night/themes.xml +16 -0
  32. puppet/app/src/main/res/values/colors.xml +10 -0
  33. puppet/app/src/main/res/values/strings.xml +3 -0
  34. puppet/app/src/main/res/values/themes.xml +16 -0
  35. puppet/app/src/main/res/xml/accessibility_service_config.xml +7 -0
  36. puppet/app/src/main/res/xml/backup_rules.xml +13 -0
  37. puppet/app/src/main/res/xml/data_extraction_rules.xml +19 -0
  38. puppet/app/src/test/java/com/ttt246/puppet/SumTest.kt +17 -0
  39. puppet/build.gradle +7 -0
  40. puppet/gradle.properties +24 -0
  41. puppet/gradle/wrapper/gradle-wrapper.jar +0 -0
  42. puppet/gradle/wrapper/gradle-wrapper.properties +6 -0
  43. puppet/gradlew +185 -0
  44. puppet/gradlew.bat +89 -0
  45. puppet/settings.gradle +16 -0
puppet/.gitignore ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ app/google-services.json
3
+ *.iml
4
+ .gradle
5
+ local.properties
6
+ .idea/caches
7
+ .idea/libraries
8
+ .idea/modules.xml
9
+ .idea/workspace.xml
10
+ .idea/navEditor.xml
11
+ .idea/assetWizardSettings.xml
12
+ .DS_Store
13
+ build
14
+ local.properties
puppet/.idea/.gitignore ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ # Default ignored files
2
+ /shelf/
3
+ /workspace.xml
puppet/.idea/androidTestResultsUserPreferences.xml ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="AndroidTestResultsUserPreferences">
4
+ <option name="androidTestResultsTableState">
5
+ <map>
6
+ <entry key="-311158389">
7
+ <value>
8
+ <AndroidTestResultsTableState>
9
+ <option name="preferredColumnWidths">
10
+ <map>
11
+ <entry key="Duration" value="90" />
12
+ <entry key="Pixel_3a_API_32" value="120" />
13
+ <entry key="Tests" value="360" />
14
+ </map>
15
+ </option>
16
+ </AndroidTestResultsTableState>
17
+ </value>
18
+ </entry>
19
+ <entry key="616020959">
20
+ <value>
21
+ <AndroidTestResultsTableState>
22
+ <option name="preferredColumnWidths">
23
+ <map>
24
+ <entry key="Duration" value="90" />
25
+ <entry key="Pixel_3a_API_32" value="120" />
26
+ <entry key="Tests" value="360" />
27
+ </map>
28
+ </option>
29
+ </AndroidTestResultsTableState>
30
+ </value>
31
+ </entry>
32
+ </map>
33
+ </option>
34
+ </component>
35
+ </project>
puppet/.idea/compiler.xml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="CompilerConfiguration">
4
+ <bytecodeTargetLevel target="17" />
5
+ </component>
6
+ </project>
puppet/.idea/gradle.xml ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="GradleMigrationSettings" migrationVersion="1" />
4
+ <component name="GradleSettings">
5
+ <option name="linkedExternalProjectsSettings">
6
+ <GradleProjectSettings>
7
+ <option name="testRunner" value="GRADLE" />
8
+ <option name="distributionType" value="DEFAULT_WRAPPED" />
9
+ <option name="externalProjectPath" value="$PROJECT_DIR$" />
10
+ <option name="modules">
11
+ <set>
12
+ <option value="$PROJECT_DIR$" />
13
+ <option value="$PROJECT_DIR$/app" />
14
+ </set>
15
+ </option>
16
+ </GradleProjectSettings>
17
+ </option>
18
+ </component>
19
+ </project>
puppet/.idea/kotlinc.xml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="KotlinJpsPluginSettings">
4
+ <option name="version" value="1.9.0" />
5
+ </component>
6
+ </project>
puppet/.idea/misc.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ <project version="4">
2
+ <component name="ExternalStorageConfigurationManager" enabled="true" />
3
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
4
+ <output url="file://$PROJECT_DIR$/build/classes" />
5
+ </component>
6
+ <component name="ProjectType">
7
+ <option name="id" value="Android" />
8
+ </component>
9
+ </project>
puppet/.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
5
+ </component>
6
+ </project>
puppet/app/.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ /build
puppet/app/build.gradle ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ plugins {
3
+ id 'com.android.application'
4
+ id 'org.jetbrains.kotlin.android'
5
+ id 'com.google.gms.google-services'
6
+ }
7
+
8
+ android {
9
+ namespace 'com.ttt246.puppet'
10
+ compileSdkVersion 33
11
+ kotlinOptions {
12
+ jvmTarget = "1.8"
13
+ }
14
+ compileOptions {
15
+ sourceCompatibility = JavaVersion.VERSION_1_8
16
+ targetCompatibility = JavaVersion.VERSION_1_8
17
+ }
18
+ defaultConfig {
19
+ applicationId "com.ttt246.puppet"
20
+ minSdkVersion 32
21
+ versionCode 1
22
+ versionName "1.0"
23
+
24
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
25
+ }
26
+
27
+ buildTypes {
28
+ release {
29
+ minifyEnabled false
30
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
31
+ }
32
+ }
33
+
34
+ dependenciesInfo {
35
+ includeInApk true
36
+ includeInBundle true
37
+ }
38
+ }
39
+
40
+
41
+ dependencies {
42
+ implementation(platform("com.google.firebase:firebase-bom:32.2.0"))
43
+ implementation 'com.google.firebase:firebase-analytics-ktx'
44
+ implementation 'com.google.firebase:firebase-auth-ktx'
45
+ implementation 'com.google.firebase:firebase-firestore-ktx'
46
+ implementation 'androidx.appcompat:appcompat:1.6.1'
47
+ implementation 'com.google.android.material:material:1.9.0'
48
+ implementation 'com.google.firebase:firebase-messaging-ktx:23.2.0'
49
+ testImplementation 'junit:junit:4.13.2'
50
+ androidTestImplementation 'androidx.test.ext:junit:1.1.5'
51
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
52
+ }
puppet/app/proguard-rules.pro ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
puppet/app/src/androidTest/java/com/ttt246/puppet/IntegrationTest.kt ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package com.ttt246.puppet
2
+
3
+ import androidx.test.ext.junit.runners.AndroidJUnit4
4
+ import androidx.test.platform.app.InstrumentationRegistry
5
+ import org.junit.Assert.*
6
+ import org.junit.Test
7
+ import org.junit.runner.RunWith
8
+
9
+ @RunWith(AndroidJUnit4::class)
10
+ class IntegrationTest {
11
+ @Test
12
+ fun useAppContext() {
13
+ // Context of the app under test.
14
+ val appContext = InstrumentationRegistry.getInstrumentation().targetContext
15
+ assertEquals("com.ttt246.puppet", appContext.packageName)
16
+ }
17
+ }
puppet/app/src/androidTest/java/com/ttt246/puppet/MyAccessibilityServiceTest.kt ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package com.ttt246.puppet
2
+
3
+ import android.content.pm.PackageManager
4
+ import android.util.Log
5
+ import androidx.test.ext.junit.rules.ActivityScenarioRule
6
+ import androidx.test.ext.junit.runners.AndroidJUnit4
7
+ import androidx.test.platform.app.InstrumentationRegistry
8
+ import org.junit.Rule
9
+ import org.junit.Test
10
+ import org.junit.runner.RunWith
11
+
12
+ @RunWith(AndroidJUnit4::class)
13
+ class MyAccessibilityServiceTest {
14
+ @get:Rule
15
+ var rule: ActivityScenarioRule<ChatterAct> = ActivityScenarioRule(ChatterAct::class.java)
16
+
17
+ private val context = InstrumentationRegistry.getInstrumentation().targetContext
18
+
19
+ @Test
20
+ fun testHandleEvent() {
21
+ val myService = PuppetAS()
22
+ val packageManager = context.packageManager
23
+
24
+ val applications = packageManager.getInstalledApplications(PackageManager.GET_META_DATA)
25
+ for (applicationInfo in applications) {
26
+ val packageName = applicationInfo.packageName
27
+ val appName = packageManager.getApplicationLabel(applicationInfo).toString()
28
+ Log.d("AppList", "App: $appName, Package: $packageName")
29
+ }
30
+ }
31
+ }
puppet/app/src/main/AndroidManifest.xml ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
+ xmlns:tools="http://schemas.android.com/tools">
3
+ <uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE"
4
+ tools:ignore="ProtectedPermissions" />
5
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
6
+
7
+ <application
8
+ android:allowBackup="true"
9
+ android:dataExtractionRules="@xml/data_extraction_rules"
10
+ android:fullBackupContent="@xml/backup_rules"
11
+ android:icon="@mipmap/ic_launcher"
12
+ android:label="@string/app_name"
13
+ android:roundIcon="@mipmap/ic_launcher_round"
14
+ android:supportsRtl="true"
15
+ android:theme="@style/Theme.Puppet">
16
+
17
+ <activity
18
+ android:name=".ChatterAct"
19
+ android:exported="true">
20
+ <intent-filter>
21
+ <action android:name="android.intent.action.MAIN" />
22
+ <category android:name="android.intent.category.LAUNCHER" />
23
+ </intent-filter>
24
+ </activity>
25
+
26
+ <service
27
+ android:name=".PuppetAS"
28
+ android:enabled="true"
29
+ android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
30
+ android:foregroundServiceType="dataSync"
31
+ android:exported="false">
32
+ <intent-filter>
33
+ <action android:name="android.accessibilityservice.AccessibilityService" />
34
+ </intent-filter>
35
+ <meta-data
36
+ android:name="android.accessibilityservice"
37
+ android:resource="@xml/accessibility_service_config"/>
38
+ </service>
39
+ </application>
40
+
41
+ </manifest>
puppet/app/src/main/java/com/ttt246/puppet/ChatterAct.kt ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package com.ttt246.puppet
2
+ import android.annotation.SuppressLint
3
+ import android.content.Intent
4
+ import android.os.Bundle
5
+ import android.os.Handler
6
+ import android.os.Looper
7
+ import android.provider.Settings
8
+ import android.view.View
9
+ import android.widget.TextView
10
+ import androidx.appcompat.app.AppCompatActivity
11
+ import com.google.android.gms.tasks.OnCompleteListener
12
+ import com.google.firebase.messaging.FirebaseMessaging
13
+ import java.io.File
14
+ import java.io.IOException
15
+
16
+
17
+ @Suppress("DEPRECATION")
18
+ class ChatterAct : AppCompatActivity() {
19
+ private var fcmToken: String = String()
20
+ private var uuid: String = String()
21
+
22
+ @SuppressLint("HardwareIds")
23
+ override fun onCreate(savedInstanceState: Bundle?) {
24
+ super.onCreate(savedInstanceState)
25
+ // Hide the status bar (system toolbar)
26
+ window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN
27
+ supportActionBar?.hide()
28
+
29
+ initToken()
30
+ // on below line we are getting device id.
31
+ uuid = Settings.Secure.getString(contentResolver, Settings.Secure.ANDROID_ID)
32
+ val intent = Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS)
33
+ startActivity(intent)
34
+
35
+ }
36
+
37
+ private fun initToken() {
38
+ FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
39
+ if (!task.isSuccessful) {
40
+ return@OnCompleteListener
41
+ }
42
+
43
+ fcmToken = task.result
44
+ })
45
+ }
46
+
47
+ fun getFCMToken(): String {
48
+ return this.fcmToken
49
+ }
50
+
51
+ fun getUUID(): String {
52
+ return this.uuid
53
+ }
54
+ }
puppet/app/src/main/java/com/ttt246/puppet/PuppetAS.kt ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package com.ttt246.puppet
2
+ import android.accessibilityservice.AccessibilityService
3
+ import android.app.NotificationChannel
4
+ import android.app.NotificationManager
5
+ import android.util.Log
6
+ import android.view.accessibility.AccessibilityEvent
7
+ import androidx.core.app.NotificationCompat
8
+ import java.io.File
9
+
10
+ class PuppetAS : AccessibilityService() {
11
+
12
+ override fun onAccessibilityEvent(event: AccessibilityEvent?) {
13
+ Log.d("MyAccessibilityService", "onAccessibilityEvent: $event")
14
+ writeLogToFile("$event")
15
+ }
16
+
17
+ override fun onInterrupt() {
18
+ Log.d("MyAccessibilityService", "onInterrupt")
19
+ }
20
+ override fun onServiceConnected() {
21
+ super.onServiceConnected()
22
+ createNotificationChannel()
23
+
24
+ val notification = NotificationCompat.Builder(this, "MyAccessibilityServiceChannel")
25
+ .setContentTitle("My Accessibility Service")
26
+ .setContentText("Running...")
27
+ .setSmallIcon(R.drawable.ic_launcher_foreground) // replace with your own small icon
28
+ .build()
29
+
30
+ startForeground(1, notification)
31
+ }
32
+
33
+ private fun createNotificationChannel() {
34
+ val serviceChannel = NotificationChannel(
35
+ "MyAccessibilityServiceChannel",
36
+ "My Accessibility Service Channel",
37
+ NotificationManager.IMPORTANCE_DEFAULT
38
+ )
39
+
40
+ val manager: NotificationManager = getSystemService(NotificationManager::class.java)
41
+ manager.createNotificationChannel(serviceChannel)
42
+ }
43
+ private fun writeLogToFile(logMessage: String) {
44
+ val logFile = File(filesDir, "accessibility.log")
45
+ logFile.appendText("$logMessage\n")
46
+ }
47
+
48
+ }
puppet/app/src/main/res/drawable-v24/ic_launcher_foreground.xml ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <vector xmlns:android="http://schemas.android.com/apk/res/android"
2
+ xmlns:aapt="http://schemas.android.com/aapt"
3
+ android:width="108dp"
4
+ android:height="108dp"
5
+ android:viewportWidth="108"
6
+ android:viewportHeight="108">
7
+ <path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
8
+ <aapt:attr name="android:fillColor">
9
+ <gradient
10
+ android:endX="85.84757"
11
+ android:endY="92.4963"
12
+ android:startX="42.9492"
13
+ android:startY="49.59793"
14
+ android:type="linear">
15
+ <item
16
+ android:color="#44000000"
17
+ android:offset="0.0" />
18
+ <item
19
+ android:color="#00000000"
20
+ android:offset="1.0" />
21
+ </gradient>
22
+ </aapt:attr>
23
+ </path>
24
+ <path
25
+ android:fillColor="#FFFFFF"
26
+ android:fillType="nonZero"
27
+ android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
28
+ android:strokeWidth="1"
29
+ android:strokeColor="#00000000" />
30
+ </vector>
puppet/app/src/main/res/drawable/ic_launcher_background.xml ADDED
@@ -0,0 +1,170 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <vector xmlns:android="http://schemas.android.com/apk/res/android"
3
+ android:width="108dp"
4
+ android:height="108dp"
5
+ android:viewportWidth="108"
6
+ android:viewportHeight="108">
7
+ <path
8
+ android:fillColor="#3DDC84"
9
+ android:pathData="M0,0h108v108h-108z" />
10
+ <path
11
+ android:fillColor="#00000000"
12
+ android:pathData="M9,0L9,108"
13
+ android:strokeWidth="0.8"
14
+ android:strokeColor="#33FFFFFF" />
15
+ <path
16
+ android:fillColor="#00000000"
17
+ android:pathData="M19,0L19,108"
18
+ android:strokeWidth="0.8"
19
+ android:strokeColor="#33FFFFFF" />
20
+ <path
21
+ android:fillColor="#00000000"
22
+ android:pathData="M29,0L29,108"
23
+ android:strokeWidth="0.8"
24
+ android:strokeColor="#33FFFFFF" />
25
+ <path
26
+ android:fillColor="#00000000"
27
+ android:pathData="M39,0L39,108"
28
+ android:strokeWidth="0.8"
29
+ android:strokeColor="#33FFFFFF" />
30
+ <path
31
+ android:fillColor="#00000000"
32
+ android:pathData="M49,0L49,108"
33
+ android:strokeWidth="0.8"
34
+ android:strokeColor="#33FFFFFF" />
35
+ <path
36
+ android:fillColor="#00000000"
37
+ android:pathData="M59,0L59,108"
38
+ android:strokeWidth="0.8"
39
+ android:strokeColor="#33FFFFFF" />
40
+ <path
41
+ android:fillColor="#00000000"
42
+ android:pathData="M69,0L69,108"
43
+ android:strokeWidth="0.8"
44
+ android:strokeColor="#33FFFFFF" />
45
+ <path
46
+ android:fillColor="#00000000"
47
+ android:pathData="M79,0L79,108"
48
+ android:strokeWidth="0.8"
49
+ android:strokeColor="#33FFFFFF" />
50
+ <path
51
+ android:fillColor="#00000000"
52
+ android:pathData="M89,0L89,108"
53
+ android:strokeWidth="0.8"
54
+ android:strokeColor="#33FFFFFF" />
55
+ <path
56
+ android:fillColor="#00000000"
57
+ android:pathData="M99,0L99,108"
58
+ android:strokeWidth="0.8"
59
+ android:strokeColor="#33FFFFFF" />
60
+ <path
61
+ android:fillColor="#00000000"
62
+ android:pathData="M0,9L108,9"
63
+ android:strokeWidth="0.8"
64
+ android:strokeColor="#33FFFFFF" />
65
+ <path
66
+ android:fillColor="#00000000"
67
+ android:pathData="M0,19L108,19"
68
+ android:strokeWidth="0.8"
69
+ android:strokeColor="#33FFFFFF" />
70
+ <path
71
+ android:fillColor="#00000000"
72
+ android:pathData="M0,29L108,29"
73
+ android:strokeWidth="0.8"
74
+ android:strokeColor="#33FFFFFF" />
75
+ <path
76
+ android:fillColor="#00000000"
77
+ android:pathData="M0,39L108,39"
78
+ android:strokeWidth="0.8"
79
+ android:strokeColor="#33FFFFFF" />
80
+ <path
81
+ android:fillColor="#00000000"
82
+ android:pathData="M0,49L108,49"
83
+ android:strokeWidth="0.8"
84
+ android:strokeColor="#33FFFFFF" />
85
+ <path
86
+ android:fillColor="#00000000"
87
+ android:pathData="M0,59L108,59"
88
+ android:strokeWidth="0.8"
89
+ android:strokeColor="#33FFFFFF" />
90
+ <path
91
+ android:fillColor="#00000000"
92
+ android:pathData="M0,69L108,69"
93
+ android:strokeWidth="0.8"
94
+ android:strokeColor="#33FFFFFF" />
95
+ <path
96
+ android:fillColor="#00000000"
97
+ android:pathData="M0,79L108,79"
98
+ android:strokeWidth="0.8"
99
+ android:strokeColor="#33FFFFFF" />
100
+ <path
101
+ android:fillColor="#00000000"
102
+ android:pathData="M0,89L108,89"
103
+ android:strokeWidth="0.8"
104
+ android:strokeColor="#33FFFFFF" />
105
+ <path
106
+ android:fillColor="#00000000"
107
+ android:pathData="M0,99L108,99"
108
+ android:strokeWidth="0.8"
109
+ android:strokeColor="#33FFFFFF" />
110
+ <path
111
+ android:fillColor="#00000000"
112
+ android:pathData="M19,29L89,29"
113
+ android:strokeWidth="0.8"
114
+ android:strokeColor="#33FFFFFF" />
115
+ <path
116
+ android:fillColor="#00000000"
117
+ android:pathData="M19,39L89,39"
118
+ android:strokeWidth="0.8"
119
+ android:strokeColor="#33FFFFFF" />
120
+ <path
121
+ android:fillColor="#00000000"
122
+ android:pathData="M19,49L89,49"
123
+ android:strokeWidth="0.8"
124
+ android:strokeColor="#33FFFFFF" />
125
+ <path
126
+ android:fillColor="#00000000"
127
+ android:pathData="M19,59L89,59"
128
+ android:strokeWidth="0.8"
129
+ android:strokeColor="#33FFFFFF" />
130
+ <path
131
+ android:fillColor="#00000000"
132
+ android:pathData="M19,69L89,69"
133
+ android:strokeWidth="0.8"
134
+ android:strokeColor="#33FFFFFF" />
135
+ <path
136
+ android:fillColor="#00000000"
137
+ android:pathData="M19,79L89,79"
138
+ android:strokeWidth="0.8"
139
+ android:strokeColor="#33FFFFFF" />
140
+ <path
141
+ android:fillColor="#00000000"
142
+ android:pathData="M29,19L29,89"
143
+ android:strokeWidth="0.8"
144
+ android:strokeColor="#33FFFFFF" />
145
+ <path
146
+ android:fillColor="#00000000"
147
+ android:pathData="M39,19L39,89"
148
+ android:strokeWidth="0.8"
149
+ android:strokeColor="#33FFFFFF" />
150
+ <path
151
+ android:fillColor="#00000000"
152
+ android:pathData="M49,19L49,89"
153
+ android:strokeWidth="0.8"
154
+ android:strokeColor="#33FFFFFF" />
155
+ <path
156
+ android:fillColor="#00000000"
157
+ android:pathData="M59,19L59,89"
158
+ android:strokeWidth="0.8"
159
+ android:strokeColor="#33FFFFFF" />
160
+ <path
161
+ android:fillColor="#00000000"
162
+ android:pathData="M69,19L69,89"
163
+ android:strokeWidth="0.8"
164
+ android:strokeColor="#33FFFFFF" />
165
+ <path
166
+ android:fillColor="#00000000"
167
+ android:pathData="M79,19L79,89"
168
+ android:strokeWidth="0.8"
169
+ android:strokeColor="#33FFFFFF" />
170
+ </vector>
puppet/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
3
+ <background android:drawable="@drawable/ic_launcher_background" />
4
+ <foreground android:drawable="@drawable/ic_launcher_foreground" />
5
+ <monochrome android:drawable="@drawable/ic_launcher_foreground" />
6
+ </adaptive-icon>
puppet/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
3
+ <background android:drawable="@drawable/ic_launcher_background" />
4
+ <foreground android:drawable="@drawable/ic_launcher_foreground" />
5
+ <monochrome android:drawable="@drawable/ic_launcher_foreground" />
6
+ </adaptive-icon>
puppet/app/src/main/res/mipmap-hdpi/ic_launcher.webp ADDED
puppet/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp ADDED
puppet/app/src/main/res/mipmap-mdpi/ic_launcher.webp ADDED
puppet/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp ADDED
puppet/app/src/main/res/mipmap-xhdpi/ic_launcher.webp ADDED
puppet/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp ADDED
puppet/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp ADDED
puppet/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp ADDED
puppet/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp ADDED
puppet/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp ADDED
puppet/app/src/main/res/values-night/themes.xml ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <resources>
2
+ <!-- Base application theme. -->
3
+ <style name="Theme.Puppet" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
4
+ <!-- Primary brand color. -->
5
+ <item name="colorPrimary">@color/purple_200</item>
6
+ <item name="colorPrimaryVariant">@color/purple_700</item>
7
+ <item name="colorOnPrimary">@color/black</item>
8
+ <!-- Secondary brand color. -->
9
+ <item name="colorSecondary">@color/teal_200</item>
10
+ <item name="colorSecondaryVariant">@color/teal_200</item>
11
+ <item name="colorOnSecondary">@color/black</item>
12
+ <!-- Status bar color. -->
13
+ <item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
14
+ <!-- Customize your theme here. -->
15
+ </style>
16
+ </resources>
puppet/app/src/main/res/values/colors.xml ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <resources>
3
+ <color name="purple_200">#FFBB86FC</color>
4
+ <color name="purple_500">#FF6200EE</color>
5
+ <color name="purple_700">#FF3700B3</color>
6
+ <color name="teal_200">#FF03DAC5</color>
7
+ <color name="teal_700">#FF018786</color>
8
+ <color name="black">#FF000000</color>
9
+ <color name="white">#FFFFFFFF</color>
10
+ </resources>
puppet/app/src/main/res/values/strings.xml ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ <resources>
2
+ <string name="app_name">puppet</string>
3
+ </resources>
puppet/app/src/main/res/values/themes.xml ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <resources>
2
+ <!-- Base application theme. -->
3
+ <style name="Theme.Puppet" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
4
+ <!-- Primary brand color. -->
5
+ <item name="colorPrimary">@color/purple_500</item>
6
+ <item name="colorPrimaryVariant">@color/purple_700</item>
7
+ <item name="colorOnPrimary">@color/white</item>
8
+ <!-- Secondary brand color. -->
9
+ <item name="colorSecondary">@color/teal_200</item>
10
+ <item name="colorSecondaryVariant">@color/teal_700</item>
11
+ <item name="colorOnSecondary">@color/black</item>
12
+ <!-- Status bar color. -->
13
+ <item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
14
+ <!-- Customize your theme here. -->
15
+ </style>
16
+ </resources>
puppet/app/src/main/res/xml/accessibility_service_config.xml ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ <accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
2
+ android:accessibilityEventTypes="typeAllMask"
3
+ android:accessibilityFeedbackType="feedbackSpoken"
4
+ android:canRetrieveWindowContent="true"
5
+ android:accessibilityFlags="flagIncludeNotImportantViews"
6
+ android:notificationTimeout="10000"
7
+ android:settingsActivity="com.ttt246.puppet.PuppetAS" />
puppet/app/src/main/res/xml/backup_rules.xml ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?><!--
2
+ Sample backup rules file; uncomment and customize as necessary.
3
+ See https://developer.android.com/guide/topics/data/autobackup
4
+ for details.
5
+ Note: This file is ignored for devices older that API 31
6
+ See https://developer.android.com/about/versions/12/backup-restore
7
+ -->
8
+ <full-backup-content>
9
+ <!--
10
+ <include domain="sharedpref" path="."/>
11
+ <exclude domain="sharedpref" path="device.xml"/>
12
+ -->
13
+ </full-backup-content>
puppet/app/src/main/res/xml/data_extraction_rules.xml ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?><!--
2
+ Sample data extraction rules file; uncomment and customize as necessary.
3
+ See https://developer.android.com/about/versions/12/backup-restore#xml-changes
4
+ for details.
5
+ -->
6
+ <data-extraction-rules>
7
+ <cloud-backup>
8
+ <!-- TODO: Use <include> and <exclude> to control what is backed up.
9
+ <include .../>
10
+ <exclude .../>
11
+ -->
12
+ </cloud-backup>
13
+ <!--
14
+ <device-transfer>
15
+ <include .../>
16
+ <exclude .../>
17
+ </device-transfer>
18
+ -->
19
+ </data-extraction-rules>
puppet/app/src/test/java/com/ttt246/puppet/SumTest.kt ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package com.ttt246.puppet
2
+
3
+
4
+ import org.junit.Assert.assertEquals
5
+ import org.junit.Test
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 SumTest {
13
+ @Test
14
+ fun addition_isCorrect() {
15
+ assertEquals(4, 2 + 2)
16
+ }
17
+ }
puppet/build.gradle ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ // Top-level build file where you can add configuration options common to all sub-projects/modules.
2
+ plugins {
3
+ id 'com.google.gms.google-services' version "4.3.15" apply false
4
+ id 'com.android.application' version '8.0.2' apply false
5
+ id 'com.android.library' version '8.0.2' apply false
6
+ id 'org.jetbrains.kotlin.android' version '1.9.0' apply false
7
+ }
puppet/gradle.properties ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ # Kotlin code style for this project: "official" or "obsolete":
19
+ kotlin.code.style=official
20
+ # Enables namespacing of each library's R class so that its R class includes only the
21
+ # resources declared in the library itself and none from the library's dependencies,
22
+ # thereby reducing the size of the R class for that library
23
+ android.nonTransitiveRClass=true
24
+ org.gradle.unsafe.configuration-cache=true
puppet/gradle/wrapper/gradle-wrapper.jar ADDED
Binary file (59.2 kB). View file
 
puppet/gradle/wrapper/gradle-wrapper.properties ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ #Sat Jul 15 07:10:35 AST 2023
2
+ distributionBase=GRADLE_USER_HOME
3
+ distributionPath=wrapper/dists
4
+ distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
5
+ zipStoreBase=GRADLE_USER_HOME
6
+ zipStorePath=wrapper/dists
puppet/gradlew ADDED
@@ -0,0 +1,185 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env sh
2
+
3
+ #
4
+ # Copyright 2015 the original author or authors.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # https://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ ##############################################################################
20
+ ##
21
+ ## Gradle start up script for UN*X
22
+ ##
23
+ ##############################################################################
24
+
25
+ # Attempt to set APP_HOME
26
+ # Resolve links: $0 may be a link
27
+ PRG="$0"
28
+ # Need this for relative symlinks.
29
+ while [ -h "$PRG" ] ; do
30
+ ls=`ls -ld "$PRG"`
31
+ link=`expr "$ls" : '.*-> \(.*\)$'`
32
+ if expr "$link" : '/.*' > /dev/null; then
33
+ PRG="$link"
34
+ else
35
+ PRG=`dirname "$PRG"`"/$link"
36
+ fi
37
+ done
38
+ SAVED="`pwd`"
39
+ cd "`dirname \"$PRG\"`/" >/dev/null
40
+ APP_HOME="`pwd -P`"
41
+ cd "$SAVED" >/dev/null
42
+
43
+ APP_NAME="Gradle"
44
+ APP_BASE_NAME=`basename "$0"`
45
+
46
+ # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
47
+ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
48
+
49
+ # Use the maximum available, or set MAX_FD != -1 to use that value.
50
+ MAX_FD="maximum"
51
+
52
+ warn () {
53
+ echo "$*"
54
+ }
55
+
56
+ die () {
57
+ echo
58
+ echo "$*"
59
+ echo
60
+ exit 1
61
+ }
62
+
63
+ # OS specific support (must be 'true' or 'false').
64
+ cygwin=false
65
+ msys=false
66
+ darwin=false
67
+ nonstop=false
68
+ case "`uname`" in
69
+ CYGWIN* )
70
+ cygwin=true
71
+ ;;
72
+ Darwin* )
73
+ darwin=true
74
+ ;;
75
+ MINGW* )
76
+ msys=true
77
+ ;;
78
+ NONSTOP* )
79
+ nonstop=true
80
+ ;;
81
+ esac
82
+
83
+ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
84
+
85
+
86
+ # Determine the Java command to use to start the JVM.
87
+ if [ -n "$JAVA_HOME" ] ; then
88
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
89
+ # IBM's JDK on AIX uses strange locations for the executables
90
+ JAVACMD="$JAVA_HOME/jre/sh/java"
91
+ else
92
+ JAVACMD="$JAVA_HOME/bin/java"
93
+ fi
94
+ if [ ! -x "$JAVACMD" ] ; then
95
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
96
+
97
+ Please set the JAVA_HOME variable in your environment to match the
98
+ location of your Java installation."
99
+ fi
100
+ else
101
+ JAVACMD="java"
102
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
103
+
104
+ Please set the JAVA_HOME variable in your environment to match the
105
+ location of your Java installation."
106
+ fi
107
+
108
+ # Increase the maximum file descriptors if we can.
109
+ if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
110
+ MAX_FD_LIMIT=`ulimit -H -n`
111
+ if [ $? -eq 0 ] ; then
112
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
113
+ MAX_FD="$MAX_FD_LIMIT"
114
+ fi
115
+ ulimit -n $MAX_FD
116
+ if [ $? -ne 0 ] ; then
117
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
118
+ fi
119
+ else
120
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
121
+ fi
122
+ fi
123
+
124
+ # For Darwin, add options to specify how the application appears in the dock
125
+ if $darwin; then
126
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
127
+ fi
128
+
129
+ # For Cygwin or MSYS, switch paths to Windows format before running java
130
+ if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
131
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
132
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
133
+
134
+ JAVACMD=`cygpath --unix "$JAVACMD"`
135
+
136
+ # We build the pattern for arguments to be converted via cygpath
137
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
138
+ SEP=""
139
+ for dir in $ROOTDIRSRAW ; do
140
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
141
+ SEP="|"
142
+ done
143
+ OURCYGPATTERN="(^($ROOTDIRS))"
144
+ # Add a user-defined pattern to the cygpath arguments
145
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
146
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
147
+ fi
148
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
149
+ i=0
150
+ for arg in "$@" ; do
151
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
152
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
153
+
154
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
155
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
156
+ else
157
+ eval `echo args$i`="\"$arg\""
158
+ fi
159
+ i=`expr $i + 1`
160
+ done
161
+ case $i in
162
+ 0) set -- ;;
163
+ 1) set -- "$args0" ;;
164
+ 2) set -- "$args0" "$args1" ;;
165
+ 3) set -- "$args0" "$args1" "$args2" ;;
166
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
167
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
168
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
169
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
170
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
171
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
172
+ esac
173
+ fi
174
+
175
+ # Escape application args
176
+ save () {
177
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
178
+ echo " "
179
+ }
180
+ APP_ARGS=`save "$@"`
181
+
182
+ # Collect all arguments for the java command, following the shell quoting and substitution rules
183
+ eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
184
+
185
+ exec "$JAVACMD" "$@"
puppet/gradlew.bat ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @rem
2
+ @rem Copyright 2015 the original author or authors.
3
+ @rem
4
+ @rem Licensed under the Apache License, Version 2.0 (the "License");
5
+ @rem you may not use this file except in compliance with the License.
6
+ @rem You may obtain a copy of the License at
7
+ @rem
8
+ @rem https://www.apache.org/licenses/LICENSE-2.0
9
+ @rem
10
+ @rem Unless required by applicable law or agreed to in writing, software
11
+ @rem distributed under the License is distributed on an "AS IS" BASIS,
12
+ @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ @rem See the License for the specific language governing permissions and
14
+ @rem limitations under the License.
15
+ @rem
16
+
17
+ @if "%DEBUG%" == "" @echo off
18
+ @rem ##########################################################################
19
+ @rem
20
+ @rem Gradle startup script for Windows
21
+ @rem
22
+ @rem ##########################################################################
23
+
24
+ @rem Set local scope for the variables with windows NT shell
25
+ if "%OS%"=="Windows_NT" setlocal
26
+
27
+ set DIRNAME=%~dp0
28
+ if "%DIRNAME%" == "" set DIRNAME=.
29
+ set APP_BASE_NAME=%~n0
30
+ set APP_HOME=%DIRNAME%
31
+
32
+ @rem Resolve any "." and ".." in APP_HOME to make it shorter.
33
+ for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
34
+
35
+ @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
36
+ set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
37
+
38
+ @rem Find java.exe
39
+ if defined JAVA_HOME goto findJavaFromJavaHome
40
+
41
+ set JAVA_EXE=java.exe
42
+ %JAVA_EXE% -version >NUL 2>&1
43
+ if "%ERRORLEVEL%" == "0" goto execute
44
+
45
+ echo.
46
+ echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
47
+ echo.
48
+ echo Please set the JAVA_HOME variable in your environment to match the
49
+ echo location of your Java installation.
50
+
51
+ goto fail
52
+
53
+ :findJavaFromJavaHome
54
+ set JAVA_HOME=%JAVA_HOME:"=%
55
+ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
56
+
57
+ if exist "%JAVA_EXE%" goto execute
58
+
59
+ echo.
60
+ echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
61
+ echo.
62
+ echo Please set the JAVA_HOME variable in your environment to match the
63
+ echo location of your Java installation.
64
+
65
+ goto fail
66
+
67
+ :execute
68
+ @rem Setup the command line
69
+
70
+ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
71
+
72
+
73
+ @rem Execute Gradle
74
+ "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
75
+
76
+ :end
77
+ @rem End local scope for the variables with windows NT shell
78
+ if "%ERRORLEVEL%"=="0" goto mainEnd
79
+
80
+ :fail
81
+ rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
82
+ rem the _cmd.exe /c_ return code!
83
+ if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
84
+ exit /b 1
85
+
86
+ :mainEnd
87
+ if "%OS%"=="Windows_NT" endlocal
88
+
89
+ :omega
puppet/settings.gradle ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ pluginManagement {
2
+ repositories {
3
+ google()
4
+ mavenCentral()
5
+ gradlePluginPortal()
6
+ }
7
+ }
8
+ dependencyResolutionManagement {
9
+ repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
10
+ repositories {
11
+ google()
12
+ mavenCentral()
13
+ }
14
+ }
15
+ rootProject.name = "puppet"
16
+ include ':app'