From 5e2e8e773ca4aba8d1a78dce706bb81956071fc6 Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Tue, 30 Jul 2024 11:21:44 +0200 Subject: [PATCH 1/6] add MAESTRO_CLI_NO_ANALYTICS flag --- .../java/maestro/cli/analytics/Analytics.kt | 17 ++++++++++++++++- .../src/main/java/maestro/cli/util/CiUtils.kt | 10 ++++++---- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/maestro-cli/src/main/java/maestro/cli/analytics/Analytics.kt b/maestro-cli/src/main/java/maestro/cli/analytics/Analytics.kt index 38ec58ebd9..19b281f3ac 100644 --- a/maestro-cli/src/main/java/maestro/cli/analytics/Analytics.kt +++ b/maestro-cli/src/main/java/maestro/cli/analytics/Analytics.kt @@ -34,6 +34,10 @@ object Analytics { private val analyticsStatePath: Path = EnvUtils.xdgStateHome().resolve("analytics.json") private val legacyUuidPath: Path = EnvUtils.legacyMaestroHome().resolve("uuid") + private const val DISABLE_ANALYTICS_ENV_VAR = "MAESTRO_CLI_NO_ANALYTICS" + private val analyticsDisabledWithEnvVar: Boolean + get() = System.getenv(DISABLE_ANALYTICS_ENV_VAR) != null + private val JSON = jacksonObjectMapper().apply { registerModule(JavaTimeModule()) enable(SerializationFeature.INDENT_OUTPUT) @@ -73,6 +77,13 @@ object Analytics { fun maybeAskToEnableAnalytics() { if (hasRunBefore) return + // Fix for https://github.com/mobile-dev-inc/maestro/issues/1846 + if (CiUtils.getCiProvider() != null) { + println("CI detected, analytics was automatically enabled.") + println("To opt out, set $DISABLE_ANALYTICS_ENV_VAR environment variable to any value before running Maestro.") + return + } + while (!Thread.interrupted()) { println("Maestro CLI would like to collect anonymous usage data to improve the product.") print("Enable analytics? [Y/n] ") @@ -99,8 +110,12 @@ object Analytics { return } + if (analyticsDisabledWithEnvVar) { + logger.trace("Analytics disabled with env var, not uploading") + } + if (!analyticsState.enabled) { - logger.trace("Analytics disabled, not uploading") + logger.trace("Analytics disabled with config file, not uploading") return } diff --git a/maestro-cli/src/main/java/maestro/cli/util/CiUtils.kt b/maestro-cli/src/main/java/maestro/cli/util/CiUtils.kt index ae40ba5970..788a8833ff 100644 --- a/maestro-cli/src/main/java/maestro/cli/util/CiUtils.kt +++ b/maestro-cli/src/main/java/maestro/cli/util/CiUtils.kt @@ -22,12 +22,14 @@ object CiUtils { return mdevCiEnvVar } - for (ciVar in ciEnvVarMap.entries) { + for (ciEnvVar in ciEnvVarMap.entries) { try { - if (isTruthy(System.getenv(ciVar.key).lowercase())) return ciVar.value - } catch (e: Exception) {} + if (isTruthy(System.getenv(ciEnvVar.key).lowercase())) return ciEnvVar.value + } catch (e: Exception) { + // We don't care + } } return null } -} \ No newline at end of file +} From 2509b74bec5750b72a2a4484d039a33d5891473f Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Tue, 30 Jul 2024 11:24:17 +0200 Subject: [PATCH 2/6] add cirrus_ci to known CIs --- maestro-cli/src/main/java/maestro/cli/util/CiUtils.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/maestro-cli/src/main/java/maestro/cli/util/CiUtils.kt b/maestro-cli/src/main/java/maestro/cli/util/CiUtils.kt index 788a8833ff..bd55ba11fe 100644 --- a/maestro-cli/src/main/java/maestro/cli/util/CiUtils.kt +++ b/maestro-cli/src/main/java/maestro/cli/util/CiUtils.kt @@ -5,6 +5,7 @@ object CiUtils { "JENKINS_HOME" to "jenkins", "BITRISE_IO" to "bitrise", "CIRCLECI" to "circleci", + "CIRRUS_CI" to "cirrusci", "GITLAB_CI" to "gitlab", "GITHUB_ACTIONS" to "github", "BITBUCKET_BUILD_NUMBER" to "bitbucket", From c1abc5395b1008e4dc7833037102a27cdf44ae30 Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Tue, 30 Jul 2024 11:27:00 +0200 Subject: [PATCH 3/6] add more CI providers --- maestro-cli/src/main/java/maestro/cli/util/CiUtils.kt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/maestro-cli/src/main/java/maestro/cli/util/CiUtils.kt b/maestro-cli/src/main/java/maestro/cli/util/CiUtils.kt index bd55ba11fe..269f03c16d 100644 --- a/maestro-cli/src/main/java/maestro/cli/util/CiUtils.kt +++ b/maestro-cli/src/main/java/maestro/cli/util/CiUtils.kt @@ -2,13 +2,17 @@ package maestro.cli.util object CiUtils { private val ciEnvVarMap = mapOf( - "JENKINS_HOME" to "jenkins", + "APPVEYOR" to "appveyor", + "BITBUCKET_BUILD_NUMBER" to "bitbucket", "BITRISE_IO" to "bitrise", + "BUILDKITE" to "buildkite", "CIRCLECI" to "circleci", "CIRRUS_CI" to "cirrusci", - "GITLAB_CI" to "gitlab", + "DRONE" to "drone", "GITHUB_ACTIONS" to "github", - "BITBUCKET_BUILD_NUMBER" to "bitbucket", + "GITLAB_CI" to "gitlab", + "JENKINS_HOME" to "jenkins", + "TEAMCITY_VERSION" to "teamcity", "CI" to "ci" ) From 21ae6eb6eae669a397174dc69bedef203384413e Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Tue, 30 Jul 2024 11:31:06 +0200 Subject: [PATCH 4/6] bugfix --- .../src/main/java/maestro/cli/analytics/Analytics.kt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/maestro-cli/src/main/java/maestro/cli/analytics/Analytics.kt b/maestro-cli/src/main/java/maestro/cli/analytics/Analytics.kt index 19b281f3ac..9a1a177d3f 100644 --- a/maestro-cli/src/main/java/maestro/cli/analytics/Analytics.kt +++ b/maestro-cli/src/main/java/maestro/cli/analytics/Analytics.kt @@ -79,8 +79,16 @@ object Analytics { // Fix for https://github.com/mobile-dev-inc/maestro/issues/1846 if (CiUtils.getCiProvider() != null) { - println("CI detected, analytics was automatically enabled.") - println("To opt out, set $DISABLE_ANALYTICS_ENV_VAR environment variable to any value before running Maestro.") + if (!analyticsDisabledWithEnvVar) { + println("CI detected, analytics was automatically enabled.") + println("To opt out, set $DISABLE_ANALYTICS_ENV_VAR environment variable to any value before running Maestro.") + } else { + println("CI detected and $DISABLE_ANALYTICS_ENV_VAR environment variable set, analytics disabled.") + } + return + } + + if (analyticsDisabledWithEnvVar) { return } From 70759551d3bd505480cb1fe1d14190eff4157bb7 Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Tue, 30 Jul 2024 11:54:29 +0200 Subject: [PATCH 5/6] update changelog and version --- CHANGELOG.md | 6 +++++- gradle.properties | 2 +- maestro-cli/gradle.properties | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 96e19370bd..484be797f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,14 @@ # Changelog +## 1.37.4 - 2024-07-30 + +- Don't ask for analytics permission on CI + add `MAESTRO_CLI_NO_ANALYTICS` env var ([#1848](https://github.com/mobile-dev-inc/maestro/pull/1848)) + ## 1.37.3 - 2024-07-29 ### Bug fixes -Fix `FileNotFoundException: ~.maestro/sessions` ([#1843](https://github.com/mobile-dev-inc/maestro/pull/1843)) +- Fix `FileNotFoundException: ~.maestro/sessions` ([#1843](https://github.com/mobile-dev-inc/maestro/pull/1843)) ## 1.37.2 - 2024-07-29 diff --git a/gradle.properties b/gradle.properties index 5fa21f52f1..c618bc5222 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ android.useAndroidX=true android.enableJetifier=true kotlin.code.style=official GROUP=dev.mobile -VERSION_NAME=1.37.3 +VERSION_NAME=1.37.4 POM_DESCRIPTION=Maestro is a server-driven platform-agnostic library that allows to drive tests for both iOS and Android using the same implementation through an intuitive API. POM_URL=https://github.com/mobile-dev-inc/maestro POM_SCM_URL=https://github.com/mobile-dev-inc/maestro diff --git a/maestro-cli/gradle.properties b/maestro-cli/gradle.properties index cddd320c25..dcfd8cbec2 100644 --- a/maestro-cli/gradle.properties +++ b/maestro-cli/gradle.properties @@ -1 +1 @@ -CLI_VERSION=1.37.3 +CLI_VERSION=1.37.4 From 36b9e785df7639e3c88e236c6071e5139394ff26 Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Tue, 30 Jul 2024 12:01:41 +0200 Subject: [PATCH 6/6] CiUtils: add comments when particular CI service envvar was added --- .../src/main/java/maestro/cli/util/CiUtils.kt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/maestro-cli/src/main/java/maestro/cli/util/CiUtils.kt b/maestro-cli/src/main/java/maestro/cli/util/CiUtils.kt index 269f03c16d..0fa53c8801 100644 --- a/maestro-cli/src/main/java/maestro/cli/util/CiUtils.kt +++ b/maestro-cli/src/main/java/maestro/cli/util/CiUtils.kt @@ -1,18 +1,20 @@ package maestro.cli.util object CiUtils { + + // When adding a new CI, also add the first version of Maestro that supports it. private val ciEnvVarMap = mapOf( - "APPVEYOR" to "appveyor", + "APPVEYOR" to "appveyor", // since v1.37.4 "BITBUCKET_BUILD_NUMBER" to "bitbucket", "BITRISE_IO" to "bitrise", - "BUILDKITE" to "buildkite", + "BUILDKITE" to "buildkite", // since v1.37.4 "CIRCLECI" to "circleci", - "CIRRUS_CI" to "cirrusci", - "DRONE" to "drone", + "CIRRUS_CI" to "cirrusci", // since v1.37.4 + "DRONE" to "drone", // since v1.37.4 "GITHUB_ACTIONS" to "github", "GITLAB_CI" to "gitlab", "JENKINS_HOME" to "jenkins", - "TEAMCITY_VERSION" to "teamcity", + "TEAMCITY_VERSION" to "teamcity", // since v1.37.4 "CI" to "ci" )