From 0e0fcf993ad4a1143a2f129060e184aee941c970 Mon Sep 17 00:00:00 2001 From: Mike Landi Date: Tue, 26 Nov 2024 09:43:43 -0500 Subject: [PATCH] feat(amazonq): support Dockerfile files in /dev --- .../feature-06ad3a97-c95c-40f5-8c7b-bc2e262f6e06.json | 4 ++++ .../services/amazonq/FeatureDevSessionContext.kt | 11 ++++++++++- .../jetbrains/services/telemetry/TelemetryUtils.kt | 1 + 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 .changes/next-release/feature-06ad3a97-c95c-40f5-8c7b-bc2e262f6e06.json diff --git a/.changes/next-release/feature-06ad3a97-c95c-40f5-8c7b-bc2e262f6e06.json b/.changes/next-release/feature-06ad3a97-c95c-40f5-8c7b-bc2e262f6e06.json new file mode 100644 index 00000000000..9c64ab4c64e --- /dev/null +++ b/.changes/next-release/feature-06ad3a97-c95c-40f5-8c7b-bc2e262f6e06.json @@ -0,0 +1,4 @@ +{ + "type" : "feature", + "description" : "Amazon Q /dev: support `Dockerfile` files" +} \ No newline at end of file diff --git a/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/FeatureDevSessionContext.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/FeatureDevSessionContext.kt index 4527e819f5d..da6411a0128 100644 --- a/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/FeatureDevSessionContext.kt +++ b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/FeatureDevSessionContext.kt @@ -68,6 +68,12 @@ class FeatureDevSessionContext(val project: Project, val maxProjectSizeBytes: Lo "dist/?" ).map { Regex(it) } + // well known source files that do not have extensions + private val wellKnownSourceFiles = setOf( + "Dockerfile", + "Dockerfile.build" + ) + // projectRoot: is the directory where the project is located when selected to open a project. val projectRoot = project.guessProjectDir() ?: error("Cannot guess base directory for project ${project.name}") @@ -117,6 +123,8 @@ class FeatureDevSessionContext(val project: Project, val maxProjectSizeBytes: Lo return deferredResults.any { it.await() } } + private fun wellKnown(file: VirtualFile): Boolean = wellKnownSourceFiles.contains(file.name) + suspend fun zipFiles(projectRoot: VirtualFile): File = withContext(getCoroutineBgContext()) { val files = mutableListOf() val ignoredExtensionMap = mutableMapOf().withDefault { 0L } @@ -126,8 +134,9 @@ class FeatureDevSessionContext(val project: Project, val maxProjectSizeBytes: Lo projectRoot, object : VirtualFileVisitor() { override fun visitFile(file: VirtualFile): Boolean { + val isWellKnown = runBlocking { wellKnown(file) } val isFileIgnoredByExtension = runBlocking { ignoreFileByExtension(file) } - if (isFileIgnoredByExtension) { + if (!isWellKnown && isFileIgnoredByExtension) { val extension = file.extension.orEmpty() ignoredExtensionMap[extension] = (ignoredExtensionMap[extension] ?: 0) + 1 return false diff --git a/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/services/telemetry/TelemetryUtils.kt b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/services/telemetry/TelemetryUtils.kt index 5a4ade2d3dd..429bd770350 100644 --- a/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/services/telemetry/TelemetryUtils.kt +++ b/plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/services/telemetry/TelemetryUtils.kt @@ -40,6 +40,7 @@ val ALLOWED_CODE_EXTENSIONS = setOf( "d", "dart", "dfm", + "dockerfile", "dpr", "e", "el",