jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/394293 )

Change subject: Convert repoconfig to Yaml
......................................................................


Convert repoconfig to Yaml

We already use Yaml for message group configuration, so why not
for repository configuration too. It is so much nicer to read
and edit.

Conversion was done by PHP using yaml_emit after sorting the keys
alphabetically and some manual tweaks such as adding empty lines.

Change-Id: I905b45f72e218c6b625637d3bcdf487dbb8cd76b
---
D repoconfig.commit.json
A repoconfig.commit.yaml
D repoconfig.json
A repoconfig.yaml
M repong/repong.php
5 files changed, 977 insertions(+), 1,251 deletions(-)

Approvals:
  jenkins-bot: Verified
  Nikerabbit: Checked; Looks good to me, approved



diff --git a/repoconfig.commit.json b/repoconfig.commit.json
deleted file mode 100644
index b323b89..0000000
--- a/repoconfig.commit.json
+++ /dev/null
@@ -1,624 +0,0 @@
-{
-       "@meta": {
-               "export": "php 
/srv/mediawiki/targets/production/extensions/Translate/scripts/export.php",
-               "expand": "php 
/srv/mediawiki/targets/production/extensions/Translate/scripts/expand-groupspec.php
 --exportable"
-       },
-       "blockly": {
-               "group": "out-blockly*",
-               "repos": {
-                       "blockly": {
-                               "type": "github",
-                               "url": "[email protected]:google/blockly.git"
-                       },
-                       "blockly-games": {
-                               "type": "github",
-                               "url": 
"[email protected]:google/blockly-games.git"
-                       }
-               }
-       },
-       "citationhunt": {
-               "group": "citationhunt",
-               "repos": {
-                       "citationhunt": {
-                               "type": "github",
-                               "url": "[email protected]:eggpi/citationhunt.git"
-                       }
-               }
-       },
-       "codev": {
-               "group": "codev",
-               "repos": {
-                       "codev": {
-                               "type": "github",
-                               "url": 
"[email protected]:mantisbt-plugins/codev.git"
-                       }
-               }
-       },
-       "commons-android": {
-               "group": "commons-android-*",
-               "no-export-languages": "ksh,zh,en",
-               "repos": {
-                       "commons-android": {
-                               "type": "github",
-                               "url": 
"[email protected]:commons-app/apps-android-commons.git"
-                       }
-               }
-       },
-       "copypatrol": {
-               "group": "copypatrol",
-               "repos": {
-                       "copypatrol": {
-                               "type": "github",
-                               "url": 
"[email protected]:wikimedia/CopyPatrol.git"
-                       }
-               }
-       },
-       "crosswatch": {
-               "group": "crosswatch",
-               "repos": {
-                       "crosswatch": {
-                               "type": "wmgerrit",
-                               "url": 
"ssh://[email protected]:29418/labs/tools/crosswatch"
-                       }
-               }
-       },
-       "dissemin": {
-               "group": "dissemin-*",
-               "repos": {
-                       "dissemin": {
-                               "type": "github",
-                               "url": "[email protected]:dissemin/dissemin.git"
-                       }
-               }
-       },
-       "eol": {
-               "group": "out-eol-*",
-               "repos": {
-                       "eol": {
-                               "type": "github",
-                               "url": "[email protected]:EOL/eol.git"
-                       }
-               }
-       },
-       "ia-upload": {
-               "group": "ia-upload",
-               "repos": {
-                       "ia-upload": {
-                               "type": "github",
-                               "url": 
"[email protected]:wikisource/ia-upload.git"
-                       }
-               }
-       },
-       "internetarchivebot": {
-               "group": "internetarchivebot",
-               "repos": {
-                       "internetarchivebot": {
-                               "type": "github",
-                               "url": 
"[email protected]:cyberpower678/Cyberbot_II.git"
-                       }
-               }
-       },
-       "intuition": {
-               "group": "tsint-*",
-               "export-threshold": 1,
-               "repos": {
-                       "intuition": {
-                               "type": "github",
-                               "url": "[email protected]:Krinkle/intuition.git"
-                       }
-               }
-       },
-       "intuition-tools": {
-               "group": "int-*",
-               "repos": {
-                       "int-dcatap": {
-                               "type": "wmgerrit",
-                               "url": 
"ssh://[email protected]:29418/operations/dumps/dcat"
-                       },
-                       "int-guc": {
-                               "type": "wmgerrit",
-                               "url": 
"ssh://[email protected]:29418/labs/tools/guc"
-                       },
-                       "int-heritage": {
-                               "type": "wmgerrit",
-                               "url": 
"ssh://[email protected]:29418/labs/tools/heritage"
-                       },
-                       "int-orphantalk": {
-                               "type": "github",
-                               "url": 
"[email protected]:Krinkle/mw-tool-orphantalk.git"
-                       },
-                       "int-raun": {
-                               "type": "github",
-                               "url": "[email protected]:kenrick95/Raun.git"
-                       },
-                       "int-refill": {
-                               "type": "git",
-                               "url": "[email protected]:zhaofengli/refill.git"
-                       },
-                       "int-web": {
-                               "type": "github",
-                               "url": 
"[email protected]:Krinkle/intuition-web.git"
-                       }
-               }
-       },
-       "jquery.uls": {
-               "group": "jquery-uls",
-               "repos": {
-                       "jquery.uls": {
-                               "type": "github",
-                               "url": 
"[email protected]:wikimedia/jquery.uls.git"
-                       }
-               }
-       },
-       "etherpad-lite": {
-               "group": "etherpad-lite",
-               "repos": {
-                       "etherpad-lite": {
-                               "type": "github",
-                               "branch": "develop",
-                               "url": "[email protected]:ether/etherpad-lite.git"
-                       }
-               }
-       },
-       "freecol": {
-               "group": "out-freecol",
-               "repos": {
-                       "freecol": {
-                               "type": "git",
-                               "url": 
"ssh://[email protected]/p/freecol/git"
-                       }
-               }
-       },
-       "fudforum": {
-               "group": "out-fudforum",
-               "repos": {
-                       "fudforum": {
-                               "type": "svn",
-                               "url": 
"svn+ssh://[email protected]/p/fudforum/code/trunk/install/forum_data/thm/default/i18n",
-                               "svn-add-options": 
"config:auto-props:msg=svn:mime-type=text/plain;svn:eol-style=native"
-                       }
-               }
-       },
-       "gapfinder": {
-               "group": "gapfinder",
-               "repos": {
-                       "recommendation-api": {
-                               "type": "wmgerrit",
-                               "url": 
"ssh://[email protected]:29418/research/recommendation-api"
-                       }
-               }
-       },
-       "hivejs": {
-               "group": "hivejs-*",
-               "repos": {
-                       "hivejs/hive-editor-text-codemirror": {
-                               "type": "github",
-                               "url": 
"[email protected]:hivejs/hive-editor-text-codemirror.git"
-                       },
-                       "hivejs/hive-plugin-chat": {
-                               "type": "github",
-                               "url": 
"[email protected]:hivejs/hive-plugin-chat.git"
-                       },
-                       "hivejs/hive-plugin-export": {
-                               "type": "github",
-                               "url": 
"[email protected]:hivejs/hive-plugin-export.git"
-                       },
-                       "hivejs/hive-plugin-import": {
-                               "type": "github",
-                               "url": 
"[email protected]:hivejs/hive-plugin-import.git"
-                       },
-                       "hivejs/hive-plugin-presence": {
-                               "type": "github",
-                               "url": 
"[email protected]:hivejs/hive-plugin-presence.git"
-                       },
-                       "hivejs/hive-ui": {
-                               "type": "github",
-                               "url": "[email protected]:hivejs/hive-ui.git"
-                       }
-               }
-       },
-       "huggle": {
-               "group": "huggle",
-               "repos": {
-                       "huggle": {
-                               "type": "github",
-                               "url": 
"[email protected]:huggle/huggle3-qt-lx.git"
-                       }
-               }
-       },
-       "inaturalist": {
-               "group": "out-inaturalist",
-               "repos": {
-                       "inaturalist": {
-                               "type": "github",
-                               "branch": "i18n",
-                               "url": 
"[email protected]:inaturalist/inaturalist.git"
-                       }
-               }
-       },
-       "kiwix": {
-               "group": "kiwix",
-               "repos": {
-                       "kiwix": {
-                               "type": "github",
-                               "url": "[email protected]:kiwix/maintenance.git"
-                       }
-               }
-       },
-       "lib.reviews": {
-               "group": "lib.reviews",
-               "repos": {
-                       "lib.reviews": {
-                               "type": "github",
-                               "url": 
"[email protected]:eloquence/lib.reviews.git"
-                       }
-               }
-       },
-       "mantis": {
-               "group": "out-mantis*",
-               "repos": {
-                       "mantis": {
-                               "type": "github",
-                               "options": [
-                                       "codemaponly"
-                               ],
-                               "url": "[email protected]:mantisbt/mantisbt.git"
-                       }
-               }
-       },
-       "mathjax": {
-               "group": "out-mathjax-*",
-               "repos": {
-                       "mathjax": {
-                               "type": "github",
-                               "url": 
"[email protected]:mathjax/MathJax-i18n.git"
-                       }
-               }
-       },
-       "mediawiki": {
-               "always-export-languages": 
"en-ca,en-gb,es-formal,de-formal,de-at,de-ch,hu-formal,nl-informal",
-               "no-export-languages": 
"test,aeb,be-x-old,crh,dk,en,fiu-vro,gan,gom,hif,kbd,kk,kk-cn,iu,kk-kz,kk-tr,ko-kp,ku,ku-arab,no,ruq,simple,sr,tg,tp,tt,ug,zh,zh-classical,zh-cn,zh-sg,zh-hk,zh-min-nan,zh-mo,zh-my,zh-tw,zh-yue,bbc,ady",
-               "export-hours": 200,
-               "export-threshold": 13,
-               "group": "core,ext-installer,mediawiki-api",
-               "repos": {
-                       "mediawiki/master": {
-                               "type": "wmgerrit",
-                               "url": 
"ssh://[email protected]:29418/mediawiki/core"
-                       }
-               }
-       },
-       "mifos": {
-               "group": "out-mifos",
-               "export-threshold": 20,
-               "repos": {
-                       "mifos": {
-                               "type": "github",
-                               "branch": "develop",
-                               "url": 
"[email protected]:openMF/community-app.git"
-                       }
-               }
-       },
-       "nfcring-control": {
-               "group": "nfcring-control",
-               "repos": {
-                       "nfcring-control": {
-                               "type": "github",
-                               "url": 
"[email protected]:mclear/NFC_Ring_Control.git"
-                       }
-               }
-       },
-       "nocc": {
-               "group": "out-nocc-*",
-               "repos": {
-                       "nocc": {
-                               "type": "svn",
-                               "url": 
"svn+ssh://[email protected]/p/nocc/code/trunk"
-                       }
-               }
-       },
-       "oppia": {
-               "group": "oppia",
-               "repos": {
-                       "oppia": {
-                               "type": "github",
-                               "branch": "translatewiki",
-                               "url": "[email protected]:oppia/oppia.git"
-                       }
-               }
-       },
-       "osm": {
-               "no-export-languages": "en,qqq",
-               "group": "out-osm-*,osm-*",
-               "repos": {
-                       "osm": {
-                               "type": "github",
-                               "url": 
"[email protected]:openstreetmap/openstreetmap-website.git"
-                       },
-                       "potlatch2": {
-                               "type": "github",
-                               "url": "[email protected]:systemed/potlatch2.git"
-                       }
-               }
-       },
-       "pageviews": {
-               "group": "pageviews",
-               "repos": {
-                       "pageviews": {
-                               "type": "github",
-                               "url": 
"[email protected]:MusikAnimal/pageviews.git"
-                       }
-               }
-       },
-       "proveit": {
-               "group": "proveit",
-               "repos": {
-                       "proveit": {
-                               "type": "wmgerrit",
-                               "url": 
"ssh://[email protected]:29418/wikipedia/gadgets/ProveIt"
-                       }
-               }
-       },
-       "pywikibot": {
-               "group": "out-pywikipedia-*",
-               "export-threshold": 1,
-               "repos": {
-                       "pywikibot": {
-                               "type": "wmgerrit",
-                               "url": 
"ssh://[email protected]:29418/pywikibot/i18n"
-                       }
-               }
-       },
-       "vicuna": {
-               "group": "out-vicuna",
-               "repos": {
-                       "vicuna": {
-                               "type": "github",
-                               "url": "[email protected]:yarl/vicuna.git"
-                       }
-               }
-       },
-       "video2commons": {
-               "group": "video2commons",
-               "repos": {
-                       "video2commons": {
-                               "type": "github",
-                               "url": 
"[email protected]:Toollabs/video2commons.git"
-                       }
-               }
-       },
-       "wikiedudashboard": {
-               "group": "wikiedudashboard",
-               "export-threshold": 1,
-               "repos": {
-                       "wikiedudashboard": {
-                               "type": "github",
-                               "url": 
"[email protected]:WikiEducationFoundation/WikiEduDashboard.git"
-                       }
-               }
-       },
-       "mwgithub": {
-               "always-export-languages": 
"en-ca,en-gb,es-formal,de-formal,de-at,de-ch,hu-formal,nl-informal",
-               "group": "mwgithub-*,mediawiki-skingithub-*",
-               "repos": {
-                       "mwgithub/cmln/Chameleon": {
-                               "type": "github",
-                               "url": "[email protected]:cmln/chameleon.git"
-                       },
-                       "mwgithub/Hutchy68/Purge": {
-                               "type": "github",
-                               "url": "[email protected]:Hutchy68/Purge.git"
-                       },
-                       "mwgithub/jeblad/Pickle": {
-                               "type": "github",
-                               "url": "[email protected]:jeblad/Pickle.git"
-                       },
-                       "mwgithub/JeroenDeDauw/GitHub": {
-                               "type": "github",
-                               "url": "[email protected]:JeroenDeDauw/GitHub.git"
-                       },
-                       "mwgithub/JeroenDeDauw/Maps": {
-                               "type": "github",
-                               "url": "[email protected]:JeroenDeDauw/Maps.git"
-                       },
-                       "mwgithub/JeroenDeDauw/ParserHooks": {
-                               "type": "github",
-                               "url": 
"[email protected]:JeroenDeDauw/ParserHooks.git"
-                       },
-                       "mwgithub/JeroenDeDauw/SubPageList": {
-                               "type": "github",
-                               "url": 
"[email protected]:JeroenDeDauw/SubPageList.git"
-                       },
-                       "mwgithub/JeroenDeDauw/Validator": {
-                               "type": "github",
-                               "url": 
"[email protected]:JeroenDeDauw/Validator.git"
-                       },
-                       
"mwgithub/Nikerabbit/mediawiki-extensions-FinnFrameNet": {
-                               "type": "github",
-                               "url": 
"[email protected]:Nikerabbit/mediawiki-extensions-FinnFrameNet.git"
-                       },
-                       "mwgithub/OrganicDesign/extensions": {
-                               "type": "github",
-                               "url": 
"[email protected]:OrganicDesign/extensions"
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticBreadcrumbLinks": {
-                               "type": "github",
-                               "url": 
"[email protected]:SemanticMediaWiki/SemanticBreadcrumbLinks.git"
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticCite": {
-                               "type": "github",
-                               "url": 
"[email protected]:SemanticMediaWiki/SemanticCite.git"
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticCompoundQueries": {
-                               "type": "github",
-                               "url": 
"[email protected]:SemanticMediaWiki/SemanticCompoundQueries.git"
-                       },
-                       
"mwgithub/SemanticMediaWiki/SemanticExternalQueryLookup": {
-                               "type": "github",
-                               "url": 
"[email protected]:SemanticMediaWiki/SemanticExternalQueryLookup.git"
-                       },
-                       
"mwgithub/SemanticMediaWiki/SemanticExtraSpecialProperties": {
-                               "type": "github",
-                               "url": 
"[email protected]:SemanticMediaWiki/SemanticExtraSpecialProperties.git"
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticFormsSelect": {
-                               "type": "github",
-                               "url": 
"[email protected]:SemanticMediaWiki/SemanticFormsSelect.git"
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticGlossary": {
-                               "type": "github",
-                               "url": 
"[email protected]:SemanticMediaWiki/SemanticGlossary.git"
-                       },
-                       
"mwgithub/SemanticMediaWiki/SemanticInterlanguageLinks": {
-                               "type": "github",
-                               "url": 
"[email protected]:SemanticMediaWiki/SemanticInterlanguageLinks.git"
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticMediaWiki": {
-                               "type": "github",
-                               "url": 
"[email protected]:SemanticMediaWiki/SemanticMediaWiki.git"
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticResultFormats": {
-                               "type": "github",
-                               "url": 
"[email protected]:SemanticMediaWiki/SemanticResultFormats.git"
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticMetaTags": {
-                               "type": "github",
-                               "url": 
"[email protected]:SemanticMediaWiki/SemanticMetaTags.git"
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticScribunto": {
-                               "type": "github",
-                               "url": 
"[email protected]:SemanticMediaWiki/SemanticScribunto.git"
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticSignup": {
-                               "type": "github",
-                               "url": 
"[email protected]:SemanticMediaWiki/SemanticSignup.git"
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticWatchlist": {
-                               "type": "github",
-                               "url": 
"[email protected]:SemanticMediaWiki/SemanticWatchlist.git"
-                       },
-                       "mwgithub/SemanticMediaWiki/SummaryCards": {
-                               "type": "github",
-                               "url": 
"[email protected]:SemanticMediaWiki/SummaryCards.git"
-                       },
-                       "mwgithub/SemanticMediaWiki/WhatsNearby": {
-                               "type": "github",
-                               "url": 
"[email protected]:SemanticMediaWiki/WhatsNearby.git"
-                       }
-               }
-       },
-       "mwgerrit": {
-               "group": "mwgerrit-*",
-               "repos": {
-                       "mwgerrit/data-values/value-view": {
-                               "type": "wmgerrit",
-                               "url": 
"ssh://[email protected]:29418/data-values/value-view"
-                       },
-                       "mwgerrit/oojs/ui": {
-                               "type": "wmgerrit",
-                               "url": 
"ssh://[email protected]:29418/oojs/ui"
-                       },
-                       "mwgerrit/VisualEditor/VisualEditor": {
-                               "type": "wmgerrit",
-                               "url": 
"ssh://[email protected]:29418/VisualEditor/VisualEditor"
-                       }
-               }
-       },
-       "waymarked-trails-site": {
-               "group": "out-waymarked-trails*",
-               "repos": {
-                       "waymarked-trails-site": {
-                               "type": "github",
-                               "url": 
"[email protected]:lonvia/waymarked-trails-site.git"
-                       }
-               }
-       },
-       "wiki-ai": {
-               "group": "wiki-ai-*",
-               "repos": {
-                       "wiki-ai/wikilabels": {
-                               "type": "github",
-                               "url": "[email protected]:wiki-ai/wikilabels.git"
-                       },
-                       "wiki-ai/wikilabels-wikimedia-config": {
-                               "type": "github",
-                               "url": 
"[email protected]:wiki-ai/wikilabels-wmflabs-deploy.git"
-                       }
-               }
-       },
-       "wikiblame": {
-               "group": "wikiblame",
-               "export-threshold": 1,
-               "repos": {
-                       "wikiblame": {
-                               "type": "github",
-                               "url": 
"[email protected]:FlominatorTM/wikiblame.git"
-                        }
-               }
-       },
-       "wikidata": {
-               "group": "wikidata-*",
-               "repos": {
-                       "wikidata/query/gui": {
-                               "type": "wmgerrit",
-                               "url": 
"ssh://[email protected]:29418/wikidata/query/gui"
-                       }
-               }
-       },
-       "wikipedia-android": {
-               "group": "out-wikimedia-mobile-wikipedia-android-*",
-               "repos": {
-                       "wikipedia-android": {
-                               "type": "wmgerrit",
-                               "url": 
"ssh://[email protected]:29418/apps/android/wikipedia",
-                               "auto-merge": false
-                       }
-               }
-       },
-       "wikipedia-ios": {
-               "group": "out-wikimedia-mobile-wikipedia-ios",
-               "repos": {
-                       "wikipedia-ios": {
-                               "type": "github",
-                               "branch": "twn",
-                               "url": 
"[email protected]:wikimedia/wikipedia-ios.git"
-                       }
-               }
-       },
-       "wikimania": {
-               "group": "out-wikimania-scholarships-app",
-               "repos": {
-                       "wikimania": {
-                               "type": "wmgerrit",
-                               "url": 
"ssh://[email protected]:29418/wikimedia/wikimania-scholarships"
-                       }
-               }
-       },
-       "wikimedia-portals": {
-               "group": "wikimedia-portals",
-               "repos": {
-                       "wikimedia-portals": {
-                               "type": "wmgerrit",
-                               "url": 
"ssh://[email protected]:29418/wikimedia/portals"
-                       }
-               }
-       },
-       "wikinity": {
-               "group": "wikinity",
-               "repos": {
-                       "wikinity": {
-                               "type": "github",
-                               "url": "[email protected]:urbanecm/wikinity.git"
-                       }
-               }
-       },
-       "xtools": {
-               "group": "xtools",
-               "repos": {
-                       "xtools": {
-                               "type": "github",
-                               "url": "[email protected]:x-tools/xtools.git"
-                       }
-               }
-       }
-}
diff --git a/repoconfig.commit.yaml b/repoconfig.commit.yaml
new file mode 100644
index 0000000..4f7cb16
--- /dev/null
+++ b/repoconfig.commit.yaml
@@ -0,0 +1,483 @@
+---
+'@meta':
+  export: php 
/srv/mediawiki/targets/production/extensions/Translate/scripts/export.php
+  expand: php 
/srv/mediawiki/targets/production/extensions/Translate/scripts/expand-groupspec.php
 --exportable
+
+blockly:
+  group: out-blockly*
+  repos:
+    blockly:
+      type: github
+      url: [email protected]:google/blockly.git
+    blockly-games:
+      type: github
+      url: [email protected]:google/blockly-games.git
+
+citationhunt:
+  group: citationhunt
+  repos:
+    citationhunt:
+      type: github
+      url: [email protected]:eggpi/citationhunt.git
+
+codev:
+  group: codev
+  repos:
+    codev:
+      type: github
+      url: [email protected]:mantisbt-plugins/codev.git
+
+commons-android:
+  group: commons-android-*
+  no-export-languages: ksh,zh,en
+  repos:
+    commons-android:
+      type: github
+      url: [email protected]:commons-app/apps-android-commons.git
+
+copypatrol:
+  group: copypatrol
+  repos:
+    copypatrol:
+      type: github
+      url: [email protected]:wikimedia/CopyPatrol.git
+
+crosswatch:
+  group: crosswatch
+  repos:
+    crosswatch:
+      type: wmgerrit
+      url: ssh://[email protected]:29418/labs/tools/crosswatch
+
+dissemin:
+  group: dissemin-*
+  repos:
+    dissemin:
+      type: github
+      url: [email protected]:dissemin/dissemin.git
+
+eol:
+  group: out-eol-*
+  repos:
+    eol:
+      type: github
+      url: [email protected]:EOL/eol.git
+
+etherpad-lite:
+  group: etherpad-lite
+  repos:
+    etherpad-lite:
+      type: github
+      branch: develop
+      url: [email protected]:ether/etherpad-lite.git
+
+freecol:
+  group: out-freecol
+  repos:
+    freecol:
+      type: git
+      url: ssh://[email protected]/p/freecol/git
+
+fudforum:
+  group: out-fudforum
+  repos:
+    fudforum:
+      type: svn
+      url: 
svn+ssh://[email protected]/p/fudforum/code/trunk/install/forum_data/thm/default/i18n
+      svn-add-options: 
config:auto-props:msg=svn:mime-type=text/plain;svn:eol-style=native
+
+gapfinder:
+  group: gapfinder
+  repos:
+    recommendation-api:
+      type: wmgerrit
+      url: 
ssh://[email protected]:29418/research/recommendation-api
+
+hivejs:
+  group: hivejs-*
+  repos:
+    hivejs/hive-editor-text-codemirror:
+      type: github
+      url: [email protected]:hivejs/hive-editor-text-codemirror.git
+    hivejs/hive-plugin-chat:
+      type: github
+      url: [email protected]:hivejs/hive-plugin-chat.git
+    hivejs/hive-plugin-export:
+      type: github
+      url: [email protected]:hivejs/hive-plugin-export.git
+    hivejs/hive-plugin-import:
+      type: github
+      url: [email protected]:hivejs/hive-plugin-import.git
+    hivejs/hive-plugin-presence:
+      type: github
+      url: [email protected]:hivejs/hive-plugin-presence.git
+    hivejs/hive-ui:
+      type: github
+      url: [email protected]:hivejs/hive-ui.git
+
+huggle:
+  group: huggle
+  repos:
+    huggle:
+      type: github
+      url: [email protected]:huggle/huggle3-qt-lx.git
+
+ia-upload:
+  group: ia-upload
+  repos:
+    ia-upload:
+      type: github
+      url: [email protected]:wikisource/ia-upload.git
+
+inaturalist:
+  group: out-inaturalist
+  repos:
+    inaturalist:
+      type: github
+      branch: i18n
+      url: [email protected]:inaturalist/inaturalist.git
+
+internetarchivebot:
+  group: internetarchivebot
+  repos:
+    internetarchivebot:
+      type: github
+      url: [email protected]:cyberpower678/Cyberbot_II.git
+
+intuition:
+  group: tsint-*
+  export-threshold: 1
+  repos:
+    intuition:
+      type: github
+      url: [email protected]:Krinkle/intuition.git
+
+intuition-tools:
+  group: int-*
+  repos:
+    int-dcatap:
+      type: wmgerrit
+      url: ssh://[email protected]:29418/operations/dumps/dcat
+    int-guc:
+      type: wmgerrit
+      url: ssh://[email protected]:29418/labs/tools/guc
+    int-heritage:
+      type: wmgerrit
+      url: ssh://[email protected]:29418/labs/tools/heritage
+    int-orphantalk:
+      type: github
+      url: [email protected]:Krinkle/mw-tool-orphantalk.git
+    int-raun:
+      type: github
+      url: [email protected]:kenrick95/Raun.git
+    int-refill:
+      type: git
+      url: [email protected]:zhaofengli/refill.git
+    int-web:
+      type: github
+      url: [email protected]:Krinkle/intuition-web.git
+
+jquery.uls:
+  group: jquery-uls
+  repos:
+    jquery.uls:
+      type: github
+      url: [email protected]:wikimedia/jquery.uls.git
+
+kiwix:
+  group: kiwix
+  repos:
+    kiwix:
+      type: github
+      url: [email protected]:kiwix/maintenance.git
+
+lib.reviews:
+  group: lib.reviews
+  repos:
+    lib.reviews:
+      type: github
+      url: [email protected]:eloquence/lib.reviews.git
+
+mantis:
+  group: out-mantis*
+  repos:
+    mantis:
+      type: github
+      options:
+      - codemaponly
+      url: [email protected]:mantisbt/mantisbt.git
+
+mathjax:
+  group: out-mathjax-*
+  repos:
+    mathjax:
+      type: github
+      url: [email protected]:mathjax/MathJax-i18n.git
+
+mediawiki:
+  always-export-languages: 
en-ca,en-gb,es-formal,de-formal,de-at,de-ch,hu-formal,nl-informal
+  no-export-languages: 
test,aeb,be-x-old,crh,dk,en,fiu-vro,gan,gom,hif,kbd,kk,kk-cn,iu,kk-kz,kk-tr,ko-kp,ku,ku-arab,no,ruq,simple,sr,tg,tp,tt,ug,zh,zh-classical,zh-cn,zh-sg,zh-hk,zh-min-nan,zh-mo,zh-my,zh-tw,zh-yue,bbc,ady
+  export-hours: 200
+  export-threshold: 13
+  group: core,ext-installer,mediawiki-api
+  repos:
+    mediawiki/master:
+      type: wmgerrit
+      url: ssh://[email protected]:29418/mediawiki/core
+
+mifos:
+  group: out-mifos
+  export-threshold: 20
+  repos:
+    mifos:
+      type: github
+      branch: develop
+      url: [email protected]:openMF/community-app.git
+
+mwgerrit:
+  group: mwgerrit-*
+  repos:
+    mwgerrit/data-values/value-view:
+      type: wmgerrit
+      url: ssh://[email protected]:29418/data-values/value-view
+    mwgerrit/oojs/ui:
+      type: wmgerrit
+      url: ssh://[email protected]:29418/oojs/ui
+    mwgerrit/VisualEditor/VisualEditor:
+      type: wmgerrit
+      url: ssh://[email protected]:29418/VisualEditor/VisualEditor
+mwgithub:
+  always-export-languages: 
en-ca,en-gb,es-formal,de-formal,de-at,de-ch,hu-formal,nl-informal
+  group: mwgithub-*,mediawiki-skingithub-*
+  repos:
+    mwgithub/cmln/Chameleon:
+      type: github
+      url: [email protected]:cmln/chameleon.git
+    mwgithub/Hutchy68/Purge:
+      type: github
+      url: [email protected]:Hutchy68/Purge.git
+    mwgithub/jeblad/Pickle:
+      type: github
+      url: [email protected]:jeblad/Pickle.git
+    mwgithub/JeroenDeDauw/GitHub:
+      type: github
+      url: [email protected]:JeroenDeDauw/GitHub.git
+    mwgithub/JeroenDeDauw/Maps:
+      type: github
+      url: [email protected]:JeroenDeDauw/Maps.git
+    mwgithub/JeroenDeDauw/ParserHooks:
+      type: github
+      url: [email protected]:JeroenDeDauw/ParserHooks.git
+    mwgithub/JeroenDeDauw/SubPageList:
+      type: github
+      url: [email protected]:JeroenDeDauw/SubPageList.git
+    mwgithub/JeroenDeDauw/Validator:
+      type: github
+      url: [email protected]:JeroenDeDauw/Validator.git
+    mwgithub/Nikerabbit/mediawiki-extensions-FinnFrameNet:
+      type: github
+      url: [email protected]:Nikerabbit/mediawiki-extensions-FinnFrameNet.git
+    mwgithub/OrganicDesign/extensions:
+      type: github
+      url: [email protected]:OrganicDesign/extensions
+    mwgithub/SemanticMediaWiki/SemanticBreadcrumbLinks:
+      type: github
+      url: [email protected]:SemanticMediaWiki/SemanticBreadcrumbLinks.git
+    mwgithub/SemanticMediaWiki/SemanticCite:
+      type: github
+      url: [email protected]:SemanticMediaWiki/SemanticCite.git
+    mwgithub/SemanticMediaWiki/SemanticCompoundQueries:
+      type: github
+      url: [email protected]:SemanticMediaWiki/SemanticCompoundQueries.git
+    mwgithub/SemanticMediaWiki/SemanticExternalQueryLookup:
+      type: github
+      url: [email protected]:SemanticMediaWiki/SemanticExternalQueryLookup.git
+    mwgithub/SemanticMediaWiki/SemanticExtraSpecialProperties:
+      type: github
+      url: [email protected]:SemanticMediaWiki/SemanticExtraSpecialProperties.git
+    mwgithub/SemanticMediaWiki/SemanticFormsSelect:
+      type: github
+      url: [email protected]:SemanticMediaWiki/SemanticFormsSelect.git
+    mwgithub/SemanticMediaWiki/SemanticGlossary:
+      type: github
+      url: [email protected]:SemanticMediaWiki/SemanticGlossary.git
+    mwgithub/SemanticMediaWiki/SemanticInterlanguageLinks:
+      type: github
+      url: [email protected]:SemanticMediaWiki/SemanticInterlanguageLinks.git
+    mwgithub/SemanticMediaWiki/SemanticMediaWiki:
+      type: github
+      url: [email protected]:SemanticMediaWiki/SemanticMediaWiki.git
+    mwgithub/SemanticMediaWiki/SemanticResultFormats:
+      type: github
+      url: [email protected]:SemanticMediaWiki/SemanticResultFormats.git
+    mwgithub/SemanticMediaWiki/SemanticMetaTags:
+      type: github
+      url: [email protected]:SemanticMediaWiki/SemanticMetaTags.git
+    mwgithub/SemanticMediaWiki/SemanticScribunto:
+      type: github
+      url: [email protected]:SemanticMediaWiki/SemanticScribunto.git
+    mwgithub/SemanticMediaWiki/SemanticSignup:
+      type: github
+      url: [email protected]:SemanticMediaWiki/SemanticSignup.git
+    mwgithub/SemanticMediaWiki/SemanticWatchlist:
+      type: github
+      url: [email protected]:SemanticMediaWiki/SemanticWatchlist.git
+    mwgithub/SemanticMediaWiki/SummaryCards:
+      type: github
+      url: [email protected]:SemanticMediaWiki/SummaryCards.git
+    mwgithub/SemanticMediaWiki/WhatsNearby:
+      type: github
+      url: [email protected]:SemanticMediaWiki/WhatsNearby.git
+
+nfcring-control:
+  group: nfcring-control
+  repos:
+    nfcring-control:
+      type: github
+      url: [email protected]:mclear/NFC_Ring_Control.git
+
+nocc:
+  group: out-nocc-*
+  repos:
+    nocc:
+      type: svn
+      url: svn+ssh://[email protected]/p/nocc/code/trunk
+
+oppia:
+  group: oppia
+  repos:
+    oppia:
+      type: github
+      branch: translatewiki
+      url: [email protected]:oppia/oppia.git
+
+osm:
+  no-export-languages: en,qqq
+  group: out-osm-*,osm-*
+  repos:
+    osm:
+      type: github
+      url: [email protected]:openstreetmap/openstreetmap-website.git
+    potlatch2:
+      type: github
+      url: [email protected]:systemed/potlatch2.git
+
+pageviews:
+  group: pageviews
+  repos:
+    pageviews:
+      type: github
+      url: [email protected]:MusikAnimal/pageviews.git
+
+proveit:
+  group: proveit
+  repos:
+    proveit:
+      type: wmgerrit
+      url: ssh://[email protected]:29418/wikipedia/gadgets/ProveIt
+
+pywikibot:
+  group: out-pywikipedia-*
+  export-threshold: 1
+  repos:
+    pywikibot:
+      type: wmgerrit
+      url: ssh://[email protected]:29418/pywikibot/i18n
+
+vicuna:
+  group: out-vicuna
+  repos:
+    vicuna:
+      type: github
+      url: [email protected]:yarl/vicuna.git
+
+video2commons:
+  group: video2commons
+  repos:
+    video2commons:
+      type: github
+      url: [email protected]:Toollabs/video2commons.git
+
+waymarked-trails-site:
+  group: out-waymarked-trails*
+  repos:
+    waymarked-trails-site:
+      type: github
+      url: [email protected]:lonvia/waymarked-trails-site.git
+
+wiki-ai:
+  group: wiki-ai-*
+  repos:
+    wiki-ai/wikilabels:
+      type: github
+      url: [email protected]:wiki-ai/wikilabels.git
+    wiki-ai/wikilabels-wikimedia-config:
+      type: github
+      url: [email protected]:wiki-ai/wikilabels-wmflabs-deploy.git
+
+wikiblame:
+  group: wikiblame
+  export-threshold: 1
+  repos:
+    wikiblame:
+      type: github
+      url: [email protected]:FlominatorTM/wikiblame.git
+
+wikidata:
+  group: wikidata-*
+  repos:
+    wikidata/query/gui:
+      type: wmgerrit
+      url: ssh://[email protected]:29418/wikidata/query/gui
+
+wikiedudashboard:
+  group: wikiedudashboard
+  export-threshold: 1
+  repos:
+    wikiedudashboard:
+      type: github
+      url: [email protected]:WikiEducationFoundation/WikiEduDashboard.git
+
+wikimania:
+  group: out-wikimania-scholarships-app
+  repos:
+    wikimania:
+      type: wmgerrit
+      url: 
ssh://[email protected]:29418/wikimedia/wikimania-scholarships
+
+wikimedia-portals:
+  group: wikimedia-portals
+  repos:
+    wikimedia-portals:
+      type: wmgerrit
+      url: ssh://[email protected]:29418/wikimedia/portals
+
+wikinity:
+  group: wikinity
+  repos:
+    wikinity:
+      type: github
+      url: [email protected]:urbanecm/wikinity.git
+
+wikipedia-android:
+  group: out-wikimedia-mobile-wikipedia-android-*
+  repos:
+    wikipedia-android:
+      type: wmgerrit
+      url: ssh://[email protected]:29418/apps/android/wikipedia
+      auto-merge: false
+
+wikipedia-ios:
+  group: out-wikimedia-mobile-wikipedia-ios
+  repos:
+    wikipedia-ios:
+      type: github
+      branch: twn
+      url: [email protected]:wikimedia/wikipedia-ios.git
+
+xtools:
+  group: xtools
+  repos:
+    xtools:
+      type: github
+      url: [email protected]:x-tools/xtools.git
diff --git a/repoconfig.json b/repoconfig.json
deleted file mode 100644
index 5824ca1..0000000
--- a/repoconfig.json
+++ /dev/null
@@ -1,622 +0,0 @@
-{
-       "@meta": {
-               "export": "php 
/srv/mediawiki/targets/production/extensions/Translate/scripts/export.php",
-                "expand": "php 
/srv/mediawiki/targets/production/extensions/Translate/scripts/expand-groupspec.php
 --exportable"
-       },
-       "blockly": {
-               "group": "out-blockly*",
-               "repos": {
-                       "blockly": {
-                               "type": "github",
-                               "url": "https://github.com/google/blockly.git";
-                       },
-                       "blockly-games": {
-                               "type": "github",
-                               "url": 
"https://github.com/google/blockly-games.git";
-                       }
-               }
-       },
-       "citationhunt": {
-               "group": "citationhunt",
-               "repos": {
-                       "citationhunt": {
-                               "type": "github",
-                               "url": 
"https://github.com/eggpi/citationhunt.git";
-                       }
-               }
-       },
-       "codev": {
-               "group": "codev",
-               "repos": {
-                       "codev": {
-                               "type": "github",
-                               "url": 
"https://github.com/mantisbt-plugins/codev.git";
-                       }
-               }
-       },
-       "commons-android": {
-               "group": "commons-android-*",
-               "no-export-languages": "ksh,zh,en",
-               "repos": {
-                       "commons-android": {
-                               "type": "github",
-                               "url": 
"https://github.com/commons-app/apps-android-commons.git";
-                       }
-               }
-       },
-       "copypatrol": {
-               "group": "copypatrol",
-               "repos": {
-                       "copypatrol": {
-                               "type": "github",
-                               "url": 
"https://github.com/wikimedia/CopyPatrol.git";
-                       }
-               }
-       },
-       "crosswatch": {
-               "group": "crosswatch",
-               "repos": {
-                       "crosswatch": {
-                               "type": "wmgerrit",
-                               "url": 
"https://gerrit.wikimedia.org/r/labs/tools/crosswatch";
-                       }
-               }
-       },
-       "dissemin": {
-               "group": "dissemin-*",
-               "repos": {
-                       "dissemin": {
-                               "type": "github",
-                               "url": 
"https://github.com/dissemin/dissemin.git";
-                       }
-               }
-       },
-       "eol": {
-               "group": "out-eol-*",
-               "repos": {
-                       "eol": {
-                               "type": "github",
-                               "url": "https://github.com/EOL/eol.git";
-                       }
-               }
-       },
-       "ia-upload": {
-               "group": "ia-upload",
-               "repos": {
-                       "ia-upload": {
-                               "type": "github",
-                               "url": 
"https://github.com/wikisource/ia-upload.git";
-                       }
-               }
-       },
-       "internetarchivebot": {
-               "group": "internetarchivebot",
-               "repos": {
-                       "internetarchivebot": {
-                               "type": "github",
-                               "url": 
"https://github.com/cyberpower678/Cyberbot_II.git";
-                       }
-               }
-       },
-       "intuition": {
-               "group": "tsint-*",
-               "export-threshold": 1,
-               "repos": {
-                       "intuition": {
-                               "type": "github",
-                               "url": 
"https://github.com/Krinkle/intuition.git";
-                       }
-               }
-       },
-       "intuition-tools": {
-               "group": "int-*",
-               "repos": {
-                       "int-dcatap": {
-                               "type": "wmgerrit",
-                               "url": 
"https://gerrit.wikimedia.org/r/operations/dumps/dcat";
-                       },
-                       "int-guc": {
-                               "type": "wmgerrit",
-                               "url": 
"https://gerrit.wikimedia.org/r/labs/tools/guc";
-                       },
-                       "int-heritage": {
-                               "type": "wmgerrit",
-                               "url": 
"https://gerrit.wikimedia.org/r/labs/tools/heritage";
-                       },
-                       "int-orphantalk": {
-                               "type": "github",
-                               "url": 
"https://github.com/Krinkle/mw-tool-orphantalk.git";
-                       },
-                       "int-raun": {
-                               "type": "github",
-                               "url": "https://github.com/kenrick95/Raun.git";
-                       },
-                       "int-refill": {
-                               "type": "git",
-                               "url": 
"https://github.com/zhaofengli/refill.git";
-                       },
-                       "int-web": {
-                               "type": "github",
-                               "url": 
"https://github.com/Krinkle/intuition-web.git";
-                       }
-               }
-       },
-       "jquery.uls": {
-               "group": "jquery-uls",
-               "repos": {
-                       "jquery.uls": {
-                               "type": "github",
-                               "url": 
"https://github.com/wikimedia/jquery.uls.git";
-                       }
-               }
-       },
-       "etherpad-lite": {
-               "group": "etherpad-lite",
-               "repos": {
-                       "etherpad-lite": {
-                               "type": "github",
-                               "branch": "develop",
-                               "url": 
"git://github.com/ether/etherpad-lite.git"
-                       }
-               }
-       },
-       "freecol": {
-               "group": "out-freecol",
-               "repos": {
-                       "freecol": {
-                               "type": "git",
-                               "url": "git://git.code.sf.net/p/freecol/git"
-                       }
-               }
-       },
-       "fudforum": {
-               "group": "out-fudforum",
-               "repos": {
-                       "fudforum": {
-                               "type": "svn",
-                               "url": 
"svn://svn.code.sf.net/p/fudforum/code/trunk/install/forum_data/thm/default/i18n"
-                       }
-               }
-       },
-       "gapfinder": {
-               "group": "gapfinder",
-               "repos": {
-                       "recommendation-api": {
-                               "type": "wmgerrit",
-                               "url": 
"https://gerrit.wikimedia.org/r/research/recommendation-api";
-                       }
-               }
-       },
-       "hivejs": {
-               "group": "hivejs-*",
-               "repos": {
-                       "hivejs/hive-editor-text-codemirror": {
-                               "type": "github",
-                               "url": 
"https://github.com/hivejs/hive-editor-text-codemirror.git";
-                       },
-                       "hivejs/hive-plugin-chat": {
-                               "type": "github",
-                               "url": 
"https://github.com/hivejs/hive-plugin-chat.git";
-                       },
-                       "hivejs/hive-plugin-export": {
-                               "type": "github",
-                               "url": 
"https://github.com/hivejs/hive-plugin-export.git";
-                       },
-                       "hivejs/hive-plugin-import": {
-                               "type": "github",
-                               "url": 
"https://github.com/hivejs/hive-plugin-import.git";
-                       },
-                       "hivejs/hive-plugin-presence": {
-                               "type": "github",
-                               "url": 
"https://github.com/hivejs/hive-plugin-presence.git";
-                       },
-                       "hivejs/hive-ui": {
-                               "type": "github",
-                               "url": "https://github.com/hivejs/hive-ui.git";
-                       }
-               }
-       },
-       "huggle": {
-               "group": "huggle",
-               "repos": {
-                       "huggle": {
-                               "type": "github",
-                               "url": 
"https://github.com/huggle/huggle3-qt-lx.git";
-                       }
-               }
-       },
-       "inaturalist": {
-               "group": "out-inaturalist",
-               "repos": {
-                       "inaturalist": {
-                               "type": "github",
-                               "branch": "i18n",
-                               "url": 
"https://github.com/inaturalist/inaturalist.git";
-                       }
-               }
-       },
-       "kiwix": {
-               "group": "kiwix",
-               "repos": {
-                       "kiwix": {
-                               "type": "github",
-                               "url": 
"https://github.com/kiwix/maintenance.git";
-                       }
-               }
-       },
-       "lib.reviews": {
-               "group": "lib.reviews",
-               "repos": {
-                       "lib.reviews": {
-                               "type": "github",
-                               "url": 
"https://github.com/eloquence/lib.reviews.git";
-                       }
-               }
-       },
-       "mantis": {
-               "group": "out-mantis*",
-               "repos": {
-                       "mantis": {
-                               "type": "github",
-                               "options": [
-                                       "codemaponly"
-                               ],
-                               "url": 
"https://github.com/mantisbt/mantisbt.git";
-                       }
-               }
-       },
-       "mathjax": {
-               "group": "out-mathjax-*",
-               "repos": {
-                       "mathjax": {
-                               "type": "github",
-                               "url": 
"https://github.com/mathjax/MathJax-i18n.git";
-                       }
-               }
-       },
-       "mediawiki": {
-               "always-export-languages": 
"en-gb,es-formal,de-formal,hu-formal,nl-informal",
-               "no-export-languages": 
"test,aeb,be-x-old,crh,dk,en,fiu-vro,gan,gom,hif,kbd,kk,kk-cn,iu,kk-kz,kk-tr,ko-kp,ku,ku-arab,no,ruq,simple,sr,tg,tp,tt,ug,zh,zh-classical,zh-cn,zh-sg,zh-hk,zh-min-nan,zh-mo,zh-my,zh-tw,zh-yue,bbc,ady",
-               "export-hours": 200,
-               "export-threshold": 13,
-               "group": "core,ext-installer,mediawiki-api",
-               "repos": {
-                       "mediawiki/master": {
-                               "type": "wmgerrit",
-                               "url": 
"https://gerrit.wikimedia.org/r/mediawiki/core";
-                       }
-               }
-       },
-       "mifos": {
-               "group": "out-mifos",
-               "export-threshold": 20,
-               "repos": {
-                       "mifos": {
-                               "type": "github",
-                               "branch": "develop",
-                               "url": 
"https://github.com/openMF/community-app.git";
-                       }
-               }
-       },
-       "nfcring-control": {
-               "group": "nfcring-control",
-               "repos": {
-                       "nfcring-control": {
-                               "type": "github",
-                               "url": 
"https://github.com/mclear/NFC_Ring_Control.git";
-                       }
-               }
-       },
-       "nocc": {
-               "group": "out-nocc-*",
-               "repos": {
-                       "nocc": {
-                               "type": "svn",
-                               "url": 
"https://svn.code.sf.net/p/nocc/code/trunk";
-                       }
-               }
-       },
-       "oppia": {
-               "group": "oppia",
-               "repos": {
-                       "oppia": {
-                               "type": "github",
-                               "branch": "develop",
-                               "url": "https://github.com/oppia/oppia.git";
-                       }
-               }
-       },
-       "osm": {
-               "no-export-languages": "en,qqq",
-               "group": "out-osm-*,osm-*",
-               "repos": {
-                       "osm": {
-                               "type": "github",
-                               "url": 
"https://github.com/openstreetmap/openstreetmap-website.git";
-                       },
-                       "potlatch2": {
-                               "type": "github",
-                               "url": 
"https://github.com/systemed/potlatch2.git";
-                       }
-               }
-       },
-       "pageviews": {
-               "group": "pageviews",
-               "repos": {
-                       "pageviews": {
-                               "type": "github",
-                               "url": 
"https://github.com/MusikAnimal/pageviews.git";
-                       }
-               }
-       },
-       "proveit": {
-               "group": "proveit",
-               "repos": {
-                       "proveit": {
-                               "type": "wmgerrit",
-                               "url": 
"https://gerrit.wikimedia.org/r/wikipedia/gadgets/ProveIt";
-                       }
-               }
-       },
-       "pywikibot": {
-               "group": "out-pywikipedia-*",
-               "export-threshold": 1,
-               "repos": {
-                       "pywikibot": {
-                               "type": "wmgerrit",
-                               "url": 
"https://gerrit.wikimedia.org/r/pywikibot/i18n";
-                       }
-               }
-       },
-       "vicuna": {
-               "group": "out-vicuna",
-               "repos": {
-                       "vicuna": {
-                               "type": "github",
-                               "url": "https://github.com/yarl/vicuna.git";
-                       }
-               }
-       },
-       "video2commons": {
-               "group": "video2commons",
-               "repos": {
-                       "video2commons": {
-                               "type": "github",
-                               "url": 
"https://github.com/Toollabs/video2commons.git";
-                       }
-               }
-       },
-       "wikiedudashboard": {
-               "group": "wikiedudashboard",
-               "export-threshold": 1,
-               "repos": {
-                       "wikiedudashboard": {
-                               "type": "github",
-                               "url": 
"https://github.com/WikiEducationFoundation/WikiEduDashboard.git";
-                       }
-               }
-       },
-       "mwgithub": {
-               "group": "mwgithub-*,mediawiki-skingithub-*",
-               "repos": {
-                       "mwgithub/cmln/Chameleon": {
-                               "type": "github",
-                               "url": "https://github.com/cmln/chameleon.git";
-                       },
-                       "mwgithub/Hutchy68/Purge": {
-                               "type": "github",
-                               "url": "https://github.com/Hutchy68/Purge.git";
-                       },
-                       "mwgithub/jeblad/Pickle": {
-                               "type": "github",
-                               "url": "https://github.com/jeblad/Pickle.git";
-                       },
-                       "mwgithub/JeroenDeDauw/GitHub": {
-                               "type": "github",
-                               "url": 
"https://github.com/JeroenDeDauw/GitHub.git";
-                       },
-                       "mwgithub/JeroenDeDauw/Maps": {
-                               "type": "github",
-                               "url": 
"https://github.com/JeroenDeDauw/Maps.git";
-                       },
-                       "mwgithub/JeroenDeDauw/ParserHooks": {
-                               "type": "github",
-                               "url": 
"https://github.com/JeroenDeDauw/ParserHooks.git";
-                       },
-                       "mwgithub/JeroenDeDauw/SubPageList": {
-                               "type": "github",
-                               "url": 
"https://github.com/JeroenDeDauw/SubPageList.git";
-                       },
-                       "mwgithub/JeroenDeDauw/Validator": {
-                               "type": "github",
-                               "url": 
"https://github.com/JeroenDeDauw/Validator.git";
-                       },
-                       
"mwgithub/Nikerabbit/mediawiki-extensions-FinnFrameNet": {
-                               "type": "github",
-                               "url": 
"https://github.com/Nikerabbit/mediawiki-extensions-FinnFrameNet.git";
-                       },
-                       "mwgithub/OrganicDesign/extensions": {
-                               "type": "github",
-                               "url": 
"https://github.com/OrganicDesign/extensions";
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticBreadcrumbLinks": {
-                               "type": "github",
-                               "url": 
"https://github.com/SemanticMediaWiki/SemanticBreadcrumbLinks.git";
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticCite": {
-                               "type": "github",
-                               "url": 
"https://github.com/SemanticMediaWiki/SemanticCite.git";
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticCompoundQueries": {
-                               "type": "github",
-                               "url": 
"https://github.com/SemanticMediaWiki/SemanticCompoundQueries.git";
-                       },
-                       
"mwgithub/SemanticMediaWiki/SemanticExternalQueryLookup": {
-                               "type": "github",
-                               "url": 
"https://github.com/SemanticMediaWiki/SemanticExternalQueryLookup.git";
-                       },
-                       
"mwgithub/SemanticMediaWiki/SemanticExtraSpecialProperties": {
-                               "type": "github",
-                               "url": 
"https://github.com/SemanticMediaWiki/SemanticExtraSpecialProperties.git";
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticFormsSelect": {
-                               "type": "github",
-                               "url": 
"https://github.com/SemanticMediaWiki/SemanticFormsSelect.git";
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticGlossary": {
-                               "type": "github",
-                               "url": 
"https://github.com/SemanticMediaWiki/SemanticGlossary.git";
-                       },
-                       
"mwgithub/SemanticMediaWiki/SemanticInterlanguageLinks": {
-                               "type": "github",
-                               "url": 
"https://github.com/SemanticMediaWiki/SemanticInterlanguageLinks.git";
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticMediaWiki": {
-                               "type": "github",
-                               "url": 
"https://github.com/SemanticMediaWiki/SemanticMediaWiki.git";
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticResultFormats": {
-                               "type": "github",
-                               "url": 
"https://github.com/SemanticMediaWiki/SemanticResultFormats.git";
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticMetaTags": {
-                               "type": "github",
-                               "url": 
"https://github.com/SemanticMediaWiki/SemanticMetaTags.git";
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticScribunto": {
-                               "type": "github",
-                               "url": 
"https://github.com/SemanticMediaWiki/SemanticScribunto.git";
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticSignup": {
-                               "type": "github",
-                               "url": 
"https://github.com/SemanticMediaWiki/SemanticSignup.git";
-                       },
-                       "mwgithub/SemanticMediaWiki/SemanticWatchlist": {
-                               "type": "github",
-                               "url": 
"https://github.com/SemanticMediaWiki/SemanticWatchlist.git";
-                       },
-                       "mwgithub/SemanticMediaWiki/SummaryCards": {
-                               "type": "github",
-                               "url": 
"https://github.com/SemanticMediaWiki/SummaryCards.git";
-                       },
-                       "mwgithub/SemanticMediaWiki/WhatsNearby": {
-                               "type": "github",
-                               "url": 
"https://github.com/SemanticMediaWiki/WhatsNearby.git";
-                       }
-               }
-       },
-       "mwgerrit": {
-               "group": "mwgerrit-*",
-               "repos": {
-                       "mwgerrit/data-values/value-view": {
-                               "type": "wmgerrit",
-                               "url": 
"https://gerrit.wikimedia.org/r/data-values/value-view";
-                       },
-                       "mwgerrit/oojs/ui": {
-                               "type": "wmgerrit",
-                               "url": "https://gerrit.wikimedia.org/r/oojs/ui";
-                       },
-                       "mwgerrit/VisualEditor/VisualEditor": {
-                               "type": "wmgerrit",
-                               "url": 
"https://gerrit.wikimedia.org/r/VisualEditor/VisualEditor";
-                       }
-               }
-       },
-       "waymarked-trails-site": {
-               "group": "out-waymarked-trails*",
-               "repos": {
-                       "waymarked-trails-site": {
-                               "type": "github",
-                               "url": 
"https://github.com/lonvia/waymarked-trails-site.git";
-                       }
-               }
-       },
-       "wiki-ai": {
-               "group": "wiki-ai-*",
-               "repos": {
-                       "wiki-ai/wikilabels": {
-                               "type": "github",
-                               "url": 
"https://github.com/wiki-ai/wikilabels.git";
-                       },
-                       "wiki-ai/wikilabels-wikimedia-config": {
-                               "type": "github",
-                               "url": 
"https://github.com/wiki-ai/wikilabels-wmflabs-deploy.git";
-                       }
-               }
-       },
-       "wikiblame": {
-               "group": "wikiblame",
-               "export-threshold": 1,
-               "repos": {
-                       "wikiblame": {
-                               "type": "github",
-                               "url": 
"https://github.com/FlominatorTM/wikiblame.git";
-                        }
-               }
-       },
-       "wikidata": {
-               "group": "wikidata-*",
-               "repos": {
-                       "wikidata/query/gui": {
-                               "type": "wmgerrit",
-                               "url": 
"https://gerrit.wikimedia.org/r/wikidata/query/gui";
-                       }
-               }
-       },
-       "wikipedia-android": {
-               "group": "out-wikimedia-mobile-wikipedia-android-*",
-               "repos": {
-                       "wikipedia-android": {
-                               "type": "wmgerrit",
-                               "url": 
"https://gerrit.wikimedia.org/r/apps/android/wikipedia";,
-                               "auto-merge": false
-                       }
-               }
-       },
-       "wikipedia-ios": {
-               "group": "out-wikimedia-mobile-wikipedia-ios",
-               "repos": {
-                       "wikipedia-ios": {
-                               "type": "github",
-                               "branch": "develop",
-                               "url": 
"https://github.com/wikimedia/wikipedia-ios.git";
-                       }
-               }
-       },
-       "wikimania": {
-               "group": "out-wikimania-scholarships-app",
-               "repos": {
-                       "wikimania": {
-                               "type": "wmgerrit",
-                               "url": 
"https://gerrit.wikimedia.org/r/wikimedia/wikimania-scholarships";
-                       }
-               }
-       },
-       "wikimedia-portals": {
-               "group": "wikimedia-portals",
-               "repos": {
-                       "wikimedia-portals": {
-                               "type": "wmgerrit",
-                               "url": 
"https://gerrit.wikimedia.org/r/wikimedia/portals";
-                       }
-               }
-       },
-       "wikinity": {
-               "group": "wikinity",
-               "repos": {
-                       "wikinity": {
-                               "type": "github",
-                               "url": 
"https://github.com/urbanecm/wikinity.git";
-                       }
-               }
-       },
-       "xtools": {
-               "group": "xtools",
-               "repos": {
-                       "xtools": {
-                               "type": "github",
-                               "url": "https://github.com/x-tools/xtools.git";
-                       }
-               }
-       }
-}
diff --git a/repoconfig.yaml b/repoconfig.yaml
new file mode 100644
index 0000000..f5f4658
--- /dev/null
+++ b/repoconfig.yaml
@@ -0,0 +1,482 @@
+---
+'@meta':
+  export: php 
/srv/mediawiki/targets/production/extensions/Translate/scripts/export.php
+  expand: php 
/srv/mediawiki/targets/production/extensions/Translate/scripts/expand-groupspec.php
 --exportable
+
+blockly:
+  group: out-blockly*
+  repos:
+    blockly:
+      type: github
+      url: https://github.com/google/blockly.git
+    blockly-games:
+      type: github
+      url: https://github.com/google/blockly-games.git
+
+citationhunt:
+  group: citationhunt
+  repos:
+    citationhunt:
+      type: github
+      url: https://github.com/eggpi/citationhunt.git
+
+codev:
+  group: codev
+  repos:
+    codev:
+      type: github
+      url: https://github.com/mantisbt-plugins/codev.git
+
+commons-android:
+  group: commons-android-*
+  no-export-languages: ksh,zh,en
+  repos:
+    commons-android:
+      type: github
+      url: https://github.com/commons-app/apps-android-commons.git
+
+copypatrol:
+  group: copypatrol
+  repos:
+    copypatrol:
+      type: github
+      url: https://github.com/wikimedia/CopyPatrol.git
+
+crosswatch:
+  group: crosswatch
+  repos:
+    crosswatch:
+      type: wmgerrit
+      url: https://gerrit.wikimedia.org/r/labs/tools/crosswatch
+
+dissemin:
+  group: dissemin-*
+  repos:
+    dissemin:
+      type: github
+      url: https://github.com/dissemin/dissemin.git
+
+eol:
+  group: out-eol-*
+  repos:
+    eol:
+      type: github
+      url: https://github.com/EOL/eol.git
+
+etherpad-lite:
+  group: etherpad-lite
+  repos:
+    etherpad-lite:
+      type: github
+      branch: develop
+      url: git://github.com/ether/etherpad-lite.git
+
+freecol:
+  group: out-freecol
+  repos:
+    freecol:
+      type: git
+      url: git://git.code.sf.net/p/freecol/git
+
+fudforum:
+  group: out-fudforum
+  repos:
+    fudforum:
+      type: svn
+      url: 
svn://svn.code.sf.net/p/fudforum/code/trunk/install/forum_data/thm/default/i18n
+
+gapfinder:
+  group: gapfinder
+  repos:
+    recommendation-api:
+      type: wmgerrit
+      url: https://gerrit.wikimedia.org/r/research/recommendation-api
+
+hivejs:
+  group: hivejs-*
+  repos:
+    hivejs/hive-editor-text-codemirror:
+      type: github
+      url: https://github.com/hivejs/hive-editor-text-codemirror.git
+    hivejs/hive-plugin-chat:
+      type: github
+      url: https://github.com/hivejs/hive-plugin-chat.git
+    hivejs/hive-plugin-export:
+      type: github
+      url: https://github.com/hivejs/hive-plugin-export.git
+    hivejs/hive-plugin-import:
+      type: github
+      url: https://github.com/hivejs/hive-plugin-import.git
+    hivejs/hive-plugin-presence:
+      type: github
+      url: https://github.com/hivejs/hive-plugin-presence.git
+    hivejs/hive-ui:
+      type: github
+      url: https://github.com/hivejs/hive-ui.git
+
+huggle:
+  group: huggle
+  repos:
+    huggle:
+      type: github
+      url: https://github.com/huggle/huggle3-qt-lx.git
+
+ia-upload:
+  group: ia-upload
+  repos:
+    ia-upload:
+      type: github
+      url: https://github.com/wikisource/ia-upload.git
+
+inaturalist:
+  group: out-inaturalist
+  repos:
+    inaturalist:
+      type: github
+      branch: i18n
+      url: https://github.com/inaturalist/inaturalist.git
+
+internetarchivebot:
+  group: internetarchivebot
+  repos:
+    internetarchivebot:
+      type: github
+      url: https://github.com/cyberpower678/Cyberbot_II.git
+
+intuition:
+  group: tsint-*
+  export-threshold: 1
+  repos:
+    intuition:
+      type: github
+      url: https://github.com/Krinkle/intuition.git
+
+intuition-tools:
+  group: int-*
+  repos:
+    int-dcatap:
+      type: wmgerrit
+      url: https://gerrit.wikimedia.org/r/operations/dumps/dcat
+    int-guc:
+      type: wmgerrit
+      url: https://gerrit.wikimedia.org/r/labs/tools/guc
+    int-heritage:
+      type: wmgerrit
+      url: https://gerrit.wikimedia.org/r/labs/tools/heritage
+    int-orphantalk:
+      type: github
+      url: https://github.com/Krinkle/mw-tool-orphantalk.git
+    int-raun:
+      type: github
+      url: https://github.com/kenrick95/Raun.git
+    int-refill:
+      type: git
+      url: https://github.com/zhaofengli/refill.git
+    int-web:
+      type: github
+      url: https://github.com/Krinkle/intuition-web.git
+
+jquery.uls:
+  group: jquery-uls
+  repos:
+    jquery.uls:
+      type: github
+      url: https://github.com/wikimedia/jquery.uls.git
+
+kiwix:
+  group: kiwix
+  repos:
+    kiwix:
+      type: github
+      url: https://github.com/kiwix/maintenance.git
+
+lib.reviews:
+  group: lib.reviews
+  repos:
+    lib.reviews:
+      type: github
+      url: https://github.com/eloquence/lib.reviews.git
+
+mantis:
+  group: out-mantis*
+  repos:
+    mantis:
+      type: github
+      options:
+      - codemaponly
+      url: https://github.com/mantisbt/mantisbt.git
+
+mathjax:
+  group: out-mathjax-*
+  repos:
+    mathjax:
+      type: github
+      url: https://github.com/mathjax/MathJax-i18n.git
+
+mediawiki:
+  always-export-languages: en-gb,es-formal,de-formal,hu-formal,nl-informal
+  no-export-languages: 
test,aeb,be-x-old,crh,dk,en,fiu-vro,gan,gom,hif,kbd,kk,kk-cn,iu,kk-kz,kk-tr,ko-kp,ku,ku-arab,no,ruq,simple,sr,tg,tp,tt,ug,zh,zh-classical,zh-cn,zh-sg,zh-hk,zh-min-nan,zh-mo,zh-my,zh-tw,zh-yue,bbc,ady
+  export-hours: 200
+  export-threshold: 13
+  group: core,ext-installer,mediawiki-api
+  repos:
+    mediawiki/master:
+      type: wmgerrit
+      url: https://gerrit.wikimedia.org/r/mediawiki/core
+
+mifos:
+  group: out-mifos
+  export-threshold: 20
+  repos:
+    mifos:
+      type: github
+      branch: develop
+      url: https://github.com/openMF/community-app.git
+
+mwgerrit:
+  group: mwgerrit-*
+  repos:
+    mwgerrit/data-values/value-view:
+      type: wmgerrit
+      url: https://gerrit.wikimedia.org/r/data-values/value-view
+    mwgerrit/oojs/ui:
+      type: wmgerrit
+      url: https://gerrit.wikimedia.org/r/oojs/ui
+    mwgerrit/VisualEditor/VisualEditor:
+      type: wmgerrit
+      url: https://gerrit.wikimedia.org/r/VisualEditor/VisualEditor
+
+mwgithub:
+  group: mwgithub-*,mediawiki-skingithub-*
+  repos:
+    mwgithub/cmln/Chameleon:
+      type: github
+      url: https://github.com/cmln/chameleon.git
+    mwgithub/Hutchy68/Purge:
+      type: github
+      url: https://github.com/Hutchy68/Purge.git
+    mwgithub/jeblad/Pickle:
+      type: github
+      url: https://github.com/jeblad/Pickle.git
+    mwgithub/JeroenDeDauw/GitHub:
+      type: github
+      url: https://github.com/JeroenDeDauw/GitHub.git
+    mwgithub/JeroenDeDauw/Maps:
+      type: github
+      url: https://github.com/JeroenDeDauw/Maps.git
+    mwgithub/JeroenDeDauw/ParserHooks:
+      type: github
+      url: https://github.com/JeroenDeDauw/ParserHooks.git
+    mwgithub/JeroenDeDauw/SubPageList:
+      type: github
+      url: https://github.com/JeroenDeDauw/SubPageList.git
+    mwgithub/JeroenDeDauw/Validator:
+      type: github
+      url: https://github.com/JeroenDeDauw/Validator.git
+    mwgithub/Nikerabbit/mediawiki-extensions-FinnFrameNet:
+      type: github
+      url: https://github.com/Nikerabbit/mediawiki-extensions-FinnFrameNet.git
+    mwgithub/OrganicDesign/extensions:
+      type: github
+      url: https://github.com/OrganicDesign/extensions
+    mwgithub/SemanticMediaWiki/SemanticBreadcrumbLinks:
+      type: github
+      url: https://github.com/SemanticMediaWiki/SemanticBreadcrumbLinks.git
+    mwgithub/SemanticMediaWiki/SemanticCite:
+      type: github
+      url: https://github.com/SemanticMediaWiki/SemanticCite.git
+    mwgithub/SemanticMediaWiki/SemanticCompoundQueries:
+      type: github
+      url: https://github.com/SemanticMediaWiki/SemanticCompoundQueries.git
+    mwgithub/SemanticMediaWiki/SemanticExternalQueryLookup:
+      type: github
+      url: https://github.com/SemanticMediaWiki/SemanticExternalQueryLookup.git
+    mwgithub/SemanticMediaWiki/SemanticExtraSpecialProperties:
+      type: github
+      url: 
https://github.com/SemanticMediaWiki/SemanticExtraSpecialProperties.git
+    mwgithub/SemanticMediaWiki/SemanticFormsSelect:
+      type: github
+      url: https://github.com/SemanticMediaWiki/SemanticFormsSelect.git
+    mwgithub/SemanticMediaWiki/SemanticGlossary:
+      type: github
+      url: https://github.com/SemanticMediaWiki/SemanticGlossary.git
+    mwgithub/SemanticMediaWiki/SemanticInterlanguageLinks:
+      type: github
+      url: https://github.com/SemanticMediaWiki/SemanticInterlanguageLinks.git
+    mwgithub/SemanticMediaWiki/SemanticMediaWiki:
+      type: github
+      url: https://github.com/SemanticMediaWiki/SemanticMediaWiki.git
+    mwgithub/SemanticMediaWiki/SemanticResultFormats:
+      type: github
+      url: https://github.com/SemanticMediaWiki/SemanticResultFormats.git
+    mwgithub/SemanticMediaWiki/SemanticMetaTags:
+      type: github
+      url: https://github.com/SemanticMediaWiki/SemanticMetaTags.git
+    mwgithub/SemanticMediaWiki/SemanticScribunto:
+      type: github
+      url: https://github.com/SemanticMediaWiki/SemanticScribunto.git
+    mwgithub/SemanticMediaWiki/SemanticSignup:
+      type: github
+      url: https://github.com/SemanticMediaWiki/SemanticSignup.git
+    mwgithub/SemanticMediaWiki/SemanticWatchlist:
+      type: github
+      url: https://github.com/SemanticMediaWiki/SemanticWatchlist.git
+    mwgithub/SemanticMediaWiki/SummaryCards:
+      type: github
+      url: https://github.com/SemanticMediaWiki/SummaryCards.git
+    mwgithub/SemanticMediaWiki/WhatsNearby:
+      type: github
+      url: https://github.com/SemanticMediaWiki/WhatsNearby.git
+
+nfcring-control:
+  group: nfcring-control
+  repos:
+    nfcring-control:
+      type: github
+      url: https://github.com/mclear/NFC_Ring_Control.git
+
+nocc:
+  group: out-nocc-*
+  repos:
+    nocc:
+      type: svn
+      url: https://svn.code.sf.net/p/nocc/code/trunk
+
+oppia:
+  group: oppia
+  repos:
+    oppia:
+      type: github
+      branch: develop
+      url: https://github.com/oppia/oppia.git
+
+osm:
+  no-export-languages: en,qqq
+  group: out-osm-*,osm-*
+  repos:
+    osm:
+      type: github
+      url: https://github.com/openstreetmap/openstreetmap-website.git
+    potlatch2:
+      type: github
+      url: https://github.com/systemed/potlatch2.git
+
+pageviews:
+  group: pageviews
+  repos:
+    pageviews:
+      type: github
+      url: https://github.com/MusikAnimal/pageviews.git
+
+proveit:
+  group: proveit
+  repos:
+    proveit:
+      type: wmgerrit
+      url: https://gerrit.wikimedia.org/r/wikipedia/gadgets/ProveIt
+
+pywikibot:
+  group: out-pywikipedia-*
+  export-threshold: 1
+  repos:
+    pywikibot:
+      type: wmgerrit
+      url: https://gerrit.wikimedia.org/r/pywikibot/i18n
+
+vicuna:
+  group: out-vicuna
+  repos:
+    vicuna:
+      type: github
+      url: https://github.com/yarl/vicuna.git
+
+video2commons:
+  group: video2commons
+  repos:
+    video2commons:
+      type: github
+      url: https://github.com/Toollabs/video2commons.git
+
+waymarked-trails-site:
+  group: out-waymarked-trails*
+  repos:
+    waymarked-trails-site:
+      type: github
+      url: https://github.com/lonvia/waymarked-trails-site.git
+
+wiki-ai:
+  group: wiki-ai-*
+  repos:
+    wiki-ai/wikilabels:
+      type: github
+      url: https://github.com/wiki-ai/wikilabels.git
+    wiki-ai/wikilabels-wikimedia-config:
+      type: github
+      url: https://github.com/wiki-ai/wikilabels-wmflabs-deploy.git
+
+wikiblame:
+  group: wikiblame
+  export-threshold: 1
+  repos:
+    wikiblame:
+      type: github
+      url: https://github.com/FlominatorTM/wikiblame.git
+
+wikidata:
+  group: wikidata-*
+  repos:
+    wikidata/query/gui:
+      type: wmgerrit
+      url: https://gerrit.wikimedia.org/r/wikidata/query/gui
+
+wikiedudashboard:
+  group: wikiedudashboard
+  export-threshold: 1
+  repos:
+    wikiedudashboard:
+      type: github
+      url: https://github.com/WikiEducationFoundation/WikiEduDashboard.git
+
+wikimania:
+  group: out-wikimania-scholarships-app
+  repos:
+    wikimania:
+      type: wmgerrit
+      url: https://gerrit.wikimedia.org/r/wikimedia/wikimania-scholarships
+
+wikimedia-portals:
+  group: wikimedia-portals
+  repos:
+    wikimedia-portals:
+      type: wmgerrit
+      url: https://gerrit.wikimedia.org/r/wikimedia/portals
+
+wikinity:
+  group: wikinity
+  repos:
+    wikinity:
+      type: github
+      url: https://github.com/urbanecm/wikinity.git
+
+wikipedia-android:
+  group: out-wikimedia-mobile-wikipedia-android-*
+  repos:
+    wikipedia-android:
+      type: wmgerrit
+      url: https://gerrit.wikimedia.org/r/apps/android/wikipedia
+      auto-merge: false
+
+wikipedia-ios:
+  group: out-wikimedia-mobile-wikipedia-ios
+  repos:
+    wikipedia-ios:
+      type: github
+      branch: develop
+      url: https://github.com/wikimedia/wikipedia-ios.git
+
+xtools:
+  group: xtools
+  repos:
+    xtools:
+      type: github
+      url: https://github.com/x-tools/xtools.git
diff --git a/repong/repong.php b/repong/repong.php
index 94e8861..796a481 100644
--- a/repong/repong.php
+++ b/repong/repong.php
@@ -19,11 +19,14 @@
                'nike' => 'nikerabbit',
        ];
        protected $parallelism = 1;
+       protected $base;
 
        public function initialize() {
-               $base = $this->getBase();
+               $configName = 'repoconfig.yaml';
+               $this->base = $base = $this->findBase( $configName );
+               $configFile = "$base/$configName";
 
-               if ( !file_exists( "$base/repoconfig.json" ) ) {
+               if ( !file_exists( $configFile ) ) {
                        throw new RuntimeException( 'Cannot find configuration' 
);
                }
 
@@ -32,8 +35,8 @@
                        throw new RuntimeException( __DIR__ . '/../bin/ does 
not exist' );
                }
 
-               $json = file_get_contents( "$base/repoconfig.json" );
-               $this->config = json_decode( $json, true );
+               $yaml = file_get_contents( $configFile );
+               $this->config = yaml_parse( $yaml );
 
                $cores = preg_match_all( '/^processor/m', file_get_contents( 
'/proc/cpuinfo' ) );
                if ( $cores ) {
@@ -42,13 +45,17 @@
        }
 
        protected function getBase() {
+               return $this->base;
+       }
+
+       protected function findBase( $configName ) {
                $path = getcwd();
                if ( $path === false ) {
                        return null;
                }
 
                while ( true ) {
-                       if ( file_exists( "$path/repoconfig.json" ) ) {
+                       if ( file_exists( "$path/$configName" ) ) {
                                return $path;
                        }
 

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I905b45f72e218c6b625637d3bcdf487dbb8cd76b
Gerrit-PatchSet: 2
Gerrit-Project: translatewiki
Gerrit-Branch: master
Gerrit-Owner: Nikerabbit <[email protected]>
Gerrit-Reviewer: Nikerabbit <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to