Alex Monk has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/232675

Change subject: Make foreachwiki accept dblist expressions
......................................................................

Make foreachwiki accept dblist expressions

See I81df3a61, I0a460754

Bug: T101213
Change-Id: I1026070e83a8f7e7559b6f37d99a968e0e833bf2
---
A modules/scap/files/expanddblist
M modules/scap/manifests/scripts.pp
M modules/scap/templates/foreachwikiindblist.erb
3 files changed, 43 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/75/232675/1

diff --git a/modules/scap/files/expanddblist b/modules/scap/files/expanddblist
new file mode 100755
index 0000000..599d5ad
--- /dev/null
+++ b/modules/scap/files/expanddblist
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+dblistdir = '/srv/mediawiki/'
+
+import sys
+try:
+       expr = sys.argv[1]
+except IndexError:
+       print >>sys.stderr, "Must provide dblist expression"
+       sys.exit(1)
+
+import re
+
+# Python reimplementation of a couple of MWWikiversions functions
+# from MW multiversion.
+def readDbListFile(name):
+       fcontents = open(dblistdir + name).read()
+       if fcontents[:2] == "%%":
+               return evalDbListExpression(fcontents)
+       else:
+               return fcontents.splitlines()
+
+def evalDbListExpression(expr):
+       tokens = re.split(' +([-+]) +', expr)
+       result = set(readDbListFile(tokens[0]))
+       for i in range(1, len(tokens), 2):
+               op, term = tokens[i:i + 2]
+               dbs = readDbListFile(term)
+               if op == '+':
+                       result.update(dbs)
+               elif op == '-':
+                       result -= set(dbs)
+
+       return "\n".join(sorted(list(result)))
+
+print(evalDbListExpression(expr))
\ No newline at end of file
diff --git a/modules/scap/manifests/scripts.pp 
b/modules/scap/manifests/scripts.pp
index 6fea8fb..a626678 100644
--- a/modules/scap/manifests/scripts.pp
+++ b/modules/scap/manifests/scripts.pp
@@ -39,6 +39,12 @@
         mode    => '0555',
         content => template('scap/foreachwikiindblist.erb'),
     }
+    file { '/usr/local/bin/expanddblist':
+        owner   => 'root',
+        group   => 'root',
+        mode    => '0555',
+        source => 'puppet:///modules/scap/expanddblist',
+    }
     file { '/usr/local/bin/mwscript':
         owner   => 'root',
         group   => 'root',
diff --git a/modules/scap/templates/foreachwikiindblist.erb 
b/modules/scap/templates/foreachwikiindblist.erb
index e731ec2..9b822b7 100755
--- a/modules/scap/templates/foreachwikiindblist.erb
+++ b/modules/scap/templates/foreachwikiindblist.erb
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 . /etc/profile.d/mediawiki.sh
-DBLIST=`<$1`
+DBLIST=$(expanddblist "$1")
 CMD=$2
 shift
 shift

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1026070e83a8f7e7559b6f37d99a968e0e833bf2
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Alex Monk <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to