From 6862c4dc47a531abe2baa2a7e34976b2f6de898f Mon Sep 17 00:00:00 2001 From: Peter Nied Date: Wed, 13 Aug 2025 15:33:26 +0000 Subject: [PATCH 1/3] Add a check to make sure that generated files are tracked or fails the build Signed-off-by: Peter Nied --- frontend/build.gradle | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/frontend/build.gradle b/frontend/build.gradle index 13fb3f4605..e76529fdfb 100644 --- a/frontend/build.gradle +++ b/frontend/build.gradle @@ -73,6 +73,19 @@ tasks.register('lintFrontend', NpmTask) { inputs.files fileTree(dir: '.', include: buildInputs, exclude: buildExclusions) } +tasks.register('checkGeneratedFilesTracked', Exec) { + dependsOn 'buildFrontend' + group = 'check' + description = 'Verifies there are no untracked files in src/generated directory' + workingDir = project.projectDir + + // Using System.out and System.err is compatible with configuration cache + standardOutput = System.out + errorOutput = System.err + + commandLine 'bash', '-c', 'untrackedFiles=$(git ls-files --others --exclude-standard src/generated); if [ -n "$untrackedFiles" ]; then echo "Error: Untracked files found in src/generated:"; echo "$untrackedFiles"; exit 1; else echo "All generated files are tracked by git"; fi' +} + tasks.register('cleanFrontend', Delete) { delete buildOutputs } @@ -104,4 +117,5 @@ The following is a list of npm commands to execute: assemble.dependsOn 'buildFrontend' check.dependsOn 'lintFrontend' +check.dependsOn 'checkGeneratedFilesTracked' clean.dependsOn 'cleanFrontend' From 96220e01dc36787079647f7aeb5d930bc4129bc1 Mon Sep 17 00:00:00 2001 From: Peter Nied Date: Wed, 13 Aug 2025 21:26:59 +0000 Subject: [PATCH 2/3] Fix up change tracking to use repo root instead of project root Signed-off-by: Peter Nied --- frontend/build.gradle | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/frontend/build.gradle b/frontend/build.gradle index e76529fdfb..fa205e3a65 100644 --- a/frontend/build.gradle +++ b/frontend/build.gradle @@ -77,13 +77,23 @@ tasks.register('checkGeneratedFilesTracked', Exec) { dependsOn 'buildFrontend' group = 'check' description = 'Verifies there are no untracked files in src/generated directory' - workingDir = project.projectDir - - // Using System.out and System.err is compatible with configuration cache + workingDir = rootProject.rootDir + standardOutput = System.out errorOutput = System.err - commandLine 'bash', '-c', 'untrackedFiles=$(git ls-files --others --exclude-standard src/generated); if [ -n "$untrackedFiles" ]; then echo "Error: Untracked files found in src/generated:"; echo "$untrackedFiles"; exit 1; else echo "All generated files are tracked by git"; fi' + commandLine 'bash', '-c', ''' + changed=$(git diff --name-only -- frontend/src/generated/) + untracked=$(git ls-files --others --exclude-standard -- frontend/src/generated/) + if [ -n "$changed$untracked" ]; then + echo "Error: Unstaged or untracked files under frontend/src/generated/:" + [ -n "$changed" ] && echo "$changed" + [ -n "$untracked" ] && echo "$untracked" + exit 1 + else + echo "OK: No unstaged or untracked files under frontend/src/generated/" + fi + ''' } tasks.register('cleanFrontend', Delete) { From 2e86afe2a6c109c82859f125e915c26add117e05 Mon Sep 17 00:00:00 2001 From: Peter Nied Date: Tue, 26 Aug 2025 17:54:39 +0000 Subject: [PATCH 3/3] Add resolution message Signed-off-by: Peter Nied --- frontend/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/build.gradle b/frontend/build.gradle index fa205e3a65..336d9b8fd1 100644 --- a/frontend/build.gradle +++ b/frontend/build.gradle @@ -89,6 +89,7 @@ tasks.register('checkGeneratedFilesTracked', Exec) { echo "Error: Unstaged or untracked files under frontend/src/generated/:" [ -n "$changed" ] && echo "$changed" [ -n "$untracked" ] && echo "$untracked" + echo "Please run ./gradlew frontend:generateBackendClient and commit the updated files" exit 1 else echo "OK: No unstaged or untracked files under frontend/src/generated/"