1
0
Fork 0
mirror of https://gitlab.wikimedia.org/ladsgroup/Phabricator-maintenance-bot synced 2024-11-21 19:42:38 +01:00
Phabricator-maintenance-bot/patch_makers.py

130 lines
4.5 KiB
Python

import json
from datetime import date
from gerrit import GerritBot
class WikimediaMessagesPatchMaker(GerritBot):
def __init__(self, db_name, english_name, url, lang, bug_id):
self.db_name = db_name
self.english_name = english_name
self.wiki_url = url
self.wiki_lang = lang
super().__init__(
'mediawiki/extensions/WikimediaMessages',
'Add messages for {} ({})\n\nBug:{}'.format(
english_name, db_name, bug_id)
)
def changes(self):
file_ = 'i18n/wikimediaprojectnames/en.json'
result = self._read_json(file_)
result['project-localized-name-' + self.db_name] = self.english_name
self._write_json(file_, result)
file_ = 'i18n/wikimediaprojectnames/qqq.json'
result = self._read_json(file_)
result['project-localized-name-' + self.db_name] = '{{ProjectNameDocumentation|url=https://' + \
self.wiki_url + '|name=' + self.english_name + \
'|language=' + self.wiki_lang + '}}'
self._write_json(file_, result)
if not 'wikipedia' in self.wiki_url:
return
file_ = 'i18n/wikimediainterwikisearchresults/en.json'
result = self._read_json(file_)
result['search-interwiki-results-' +
self.db_name] = 'Showing results from [[:{}:|{}]].'.format(self.wiki_lang, self.english_name)
self._write_json(file_, result)
file_ = 'i18n/wikimediainterwikisearchresults/qqq.json'
result = self._read_json(file_)
result['search-interwiki-results-' + self.db_name] = 'Search results description for ' + \
self.english_name + '.\n{{LanguageNameTip|' + self.wiki_lang + '}}'
self._write_json(file_, result)
def _read_json(self, path):
with open(path, 'r') as f:
result = json.load(f)
return result
def _write_json(self, path, content):
with open(path, 'w') as f:
f.write(json.dumps(content, ensure_ascii=False,
indent='\t', sort_keys=True) + '\n')
class DnsPatchMaker(GerritBot):
def __init__(self, lang, bug_id):
self.wiki_lang = lang
super().__init__(
'operations/dns',
'Add {} to langlist helper\n\nBug:{}'.format(lang, bug_id)
)
def changes(self):
with open('templates/helpers/langlist.tmpl', 'r') as f:
lines = f.read().split('\n')
header = []
langs = []
footer = []
for line in lines:
if not line.startswith(' '):
if not header:
header.append(line)
else:
footer.append(line)
else:
langs.append(line)
langs.append(" '{}',".format(self.wiki_lang))
langs.sort()
with open('templates/helpers/langlist.tmpl', 'w') as f:
f.write('\n'.join(header) + '\n' +
'\n'.join(langs) + '\n' + '\n'.join(footer))
class CxPatchMaker(GerritBot):
def __init__(self, lang, bug_id):
self.wiki_lang = lang
super().__init__(
'mediawiki/services/cxserver',
'Add {} to languages \n\nBug:{}'.format(lang, bug_id)
)
def changes(self):
with open('config/languages.yaml', 'r') as f:
lines = f.read().split('\n')[:-1]
lines.append("- {}".format(self.wiki_lang))
lines.sort()
with open('config/languages.yaml', 'w') as f:
f.write('\n'.join(lines) + '\n')
class AnalyticsPatchMaker(GerritBot):
def __init__(self, project, bug_id):
self.project = project
super().__init__(
'analytics/refinery',
'Add {} to pageview whitelist \n\nBug:{}'.format(project, bug_id)
)
def changes(self):
with open('static_data/pageview/whitelist/whitelist.tsv', 'r') as f:
lines = f.read().split('\n')
projects = []
non_projects = []
for line in lines:
if line.startswith('project'):
projects.append(line)
else:
non_projects.append(line)
today = date.today()
projects.append('project\t{}\t{}'.format(
self.project,
today.strftime("%Y-%m-%d 00:00:00")
))
projects = list(set(projects))
projects.sort()
with open('static_data/pageview/whitelist/whitelist.tsv', 'w') as f:
f.write('\n'.join(projects) + '\n' + '\n'.join(non_projects))