| 
					
				 | 
			
			
				@@ -0,0 +1,43 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// var/cleanWorkspace.groovy 清理工作空间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+def call(Map config = [:]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def cleanBeforeBuild = config.get('clean', true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def keepPatterns = config.get('keep', ['.git', '.gradle']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (!cleanBeforeBuild) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo "⏭️ Skipping workspace cleanup." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo "✅ Workspace ready at: ${pwd()}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "🧹 Cleaning workspace, preserving: ${keepPatterns}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (isUnix()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cleanUnix(keepPatterns) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cleanWindows(keepPatterns) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "✅ Workspace ready at: ${pwd()}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// ---------- Unix ---------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+private void cleanUnix(List keep) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def mask = keep.join('|') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sh """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      set +x 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      shopt -s extglob dotglob 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      rm -rf !(${mask}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// ---------- Windows ---------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+private void cleanWindows(List keep) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 先把要保留的写成 bat 可识别的“排除”语法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def exclude = keep.collect { "/EXCLUDE:${it}" }.join(' ') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    bat """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for /f "delims=" %%i in ('dir /b /a-d') do ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo %%i | findstr /i /v "${keep.join('|')}" >nul && del "%%i" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for /d %%d in (*) do ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo %%d | findstr /i /v "${keep.join('|')}" >nul && rd /s /q "%%d" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |