Chad has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/399814 )

Change subject: Scap clean: simplify logic and actually delete thigns again
......................................................................

Scap clean: simplify logic and actually delete thigns again

That find command was so complex and its regex escaping so fragile
that it rarely worked. Instead, just do things using rmtree() and
such rather than a ton of shell commands.

Change-Id: Ic9ad337e9dbb4f0445e35d9d633579e9ecd059f1
---
M scap/plugins/clean.py
1 file changed, 36 insertions(+), 77 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/mediawiki-config 
refs/changes/14/399814/1

diff --git a/scap/plugins/clean.py b/scap/plugins/clean.py
index fd4b59e..2e8f4f4 100644
--- a/scap/plugins/clean.py
+++ b/scap/plugins/clean.py
@@ -1,45 +1,26 @@
 # -*- coding: utf-8 -*-
 """For cleaning up old MediaWiki."""
 import os
+import shutil
 import subprocess
 
-import scap.cli as cli
-import scap.git as git
-import scap.log as log
-import scap.main as main
-import scap.utils as utils
+from scap import cli
+from scap import git
+from scap import log
+from scap import main
+from scap import utils
 
-DELETABLE_TYPES = [
-    'arcconfig',
-    'arclint',
-    'cdb',
-    'COPYING',
-    'CREDITS',
-    'FAQ',
-    'Gemfile',
-    'HISTORY',
-    'ini',
-    'inc',
-    'jshintignore',
-    'jscsrc',
-    'jshintrc',
-    'lock',
-    'md',
-    'md5',
-    'mailmap',
-    'Makefile'
-    'ml',
-    'mli',
-    'php',
-    'py',
-    'rb',
-    'README',
-    'sample',
-    'sh',
-    'sql',
-    'stylelintrc',
-    'txt',
-    'xsd',
+# basically everything except extensions, languages, resources and skins
+DELETABLE_DIRS = [
+    'cache',
+    'docs',
+    'images',
+    'includes',
+    'maintenance',
+    'mw-config',
+    'serialized',
+    'tests',
+    'vendor',
 ]
 
 
@@ -79,23 +60,19 @@
         if not os.path.isdir(stage_dir):
             raise ValueError('No such branch exists, aborting')
 
-        command_list = []
+        with log.Timer('clean-l10nupdate-cache', self.get_stats()):
+            utils.sudo_check_call(
+                'www-data',
+                'rm -fR /var/lib/l10nupdate/caches/cache-%s' % branch
+            )
 
-        command_list.append([
-            'clean-l10nupdate-cache',
-            ['sudo', '-u', 'www-data', 'rm', '-fR',
-             '/var/lib/l10nupdate/caches/cache-%s' % branch]
-        ])
-        command_list.append([
-            'clean-l10nupdate-owned-files',
-            ['sudo', '-u', 'l10nupdate', 'find', stage_dir,
-             '-user', 'l10nupdate', '-delete']
-        ])
-        command_list.append([
-            'clean-l10n-bootstrap',
-            ['rm', '-fR', os.path.join(self.config['stage_dir'], 'wmf-config',
-                                       'ExtensionMessages-%s.php' % branch)]
-        ])
+        with log.Timer('clean-l10nupdate-owned-files', self.get_stats()):
+            utils.sudo_check_call(
+                'l10nupdate', 'find %s -user l10nupdate -delete' % stage_dir)
+
+        with log.Timer('clean-ExtensionMessages'):
+            os.remove(os.path.join(self.config['stage_dir'], 'wmf-config',
+                                   'ExtensionMessages-%s.php' % branch))
 
         logger = self.get_logger()
 
@@ -116,32 +93,14 @@
                 with utils.cd(stage_dir):
                     if subprocess.call(gerrit_prune_cmd) != 0:
                         logger.info('Failed to prune core branch')
-            command_list.append([
-                'cleaning-branch',
-                ['rm', '-fR', stage_dir]
-            ])
-            command_list.append([
-                'cleaning-patches',
-                ['rm', '-fR', os.path.join('/srv/patches', branch)]
-            ])
+            with log.Timer('removing-local-copy'):
+                shutil.rmtree(stage_dir)
+            with log.Timer('cleaning-unused-patches', self.get_stats()):
+                shutil.rmtree(os.path.join('/srv/patches', branch))
         else:
-            regex = r'".*\.?({0})$"'.format('|'.join(DELETABLE_TYPES))
-            command_list.append([
-                'cleaning-branch',
-                ['find', stage_dir, '-type', 'f',
-                 '-regextype', 'posix-extended',
-                 '-regex', regex, '-delete']
-            ])
-
-        for command_signature in command_list:
-            name = command_signature[0]
-            command = command_signature[1]
-            with log.Timer(name + '-' + branch, self.get_stats()):
-                try:
-                    subprocess.check_call(command)
-                except (subprocess.CalledProcessError, OSError):
-                    logger.warning('Command failed [%s]: %s' % (
-                        name, ' '.join(command)))
+            with log.Timer('cleaning-unused-files', self.get_stats()):
+                for rmdir in DELETABLE_DIRS:
+                    shutil.rmtree(rmdir)
 
     def _after_lock_release(self):
         self.announce(self.arguments.message + ' (duration: %s)' %

-- 
To view, visit https://gerrit.wikimedia.org/r/399814
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic9ad337e9dbb4f0445e35d9d633579e9ecd059f1
Gerrit-PatchSet: 1
Gerrit-Project: operations/mediawiki-config
Gerrit-Branch: master
Gerrit-Owner: Chad <ch...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to