Ori.livneh has uploaded a new change for review.
https://gerrit.wikimedia.org/r/63216
Change subject: Add custom resource type for MediaWiki extensions
......................................................................
Add custom resource type for MediaWiki extensions
Documented extensively in the puppetdoc block which precedes the resource
definition itself, in 'modules/mediawiki/manifests/extension.pp'.
Change-Id: I9295852940d8206d20e8f23fce20db938ba5d574
---
A puppet/modules/mediawiki/manifests/extension.pp
A puppet/modules/mediawiki/templates/extension-loader.php.erb
2 files changed, 111 insertions(+), 0 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/vagrant
refs/changes/16/63216/1
diff --git a/puppet/modules/mediawiki/manifests/extension.pp
b/puppet/modules/mediawiki/manifests/extension.pp
new file mode 100644
index 0000000..5f32bc1
--- /dev/null
+++ b/puppet/modules/mediawiki/manifests/extension.pp
@@ -0,0 +1,90 @@
+# == Define: mediawiki::extension
+#
+# This resource type represents a MediaWiki extension. Declaring an
+# extension to Puppet will cause Puppet to retrieve the extension code
+# from Gerrit and configure MediaWiki to load it.
+#
+# === Parameters
+#
+# [*extension*]
+# The canonical name for the extension. This value is used to generate
+# sensible defaults for the installation path and Gerrit repository
+# name. Defaults to the resource title.
+#
+# [*entrypoint*]
+# The path to the extension's entry point relative to the extension's
+# root directory. Defaults to '<Extension name>.php'. The default
+# value works for the vast majority of MediaWiki extensions.
+#
+# [*priority*]
+# This parameter takes a numeric value, which is used to generate a
+# prefix for the loader snippet. Extensions managed by Puppet will
+# load in order of priority, with smaller values loading first. The
+# default is 10. You only need to override the default if you want
+# this extension to load before or after some other extension.
+#
+# [*settings*]
+# This parameter contains configuration settings for the extension.
+# Settings may be specified as a hash, array, or string. See examples
+# below. Empty by default.
+#
+# === Examples
+#
+# The following example configures the EventLogging MediaWiki extension and
+# illustrates the use of hashes to specify settings:
+#
+# mediawiki::extension { 'EventLogging':
+# settings => {
+# wgEventLoggingBaseUri => "http://localhost:8181/event.gif",
+# wgEventLoggingDBname => "testwiki",
+# wgEventLoggingFile => 'udp://127.0.0.1:1234/EventLogging',
+# wgEventLoggingSchemaIndexUri =>
'http://meta.wikimedia.org/w/index.php',
+# },
+# }
+#
+# Note that the order of keys in a hash is unspecified. If the order matters to
+# you, use an array or a string. The next example shows how settings may be
+# specified as an array:
+#
+# mediawiki::extension { 'MobileFrontend':
+# settings => [
+# '$wgMFEnableResourceLoader = true;',
+# '$wgMFLogEvents = true;',
+# ],
+# }
+#
+# Finally, 'settings' can also be specified as a string value. This can be
+# especially powerful when used in combination with Puppet's template()
+# function, as the following example illustrates:
+#
+# mediawiki::extension { 'Math':
+# settings => template('math/settings.php.erb'),
+# }
+#
+define mediawiki::extension(
+ $extension = $title,
+ $entrypoint = "${title}.php",
+ $priority = 10,
+ $settings = {},
+) {
+ include mediawiki
+
+ $extension_dir = $directory ? {
+ undef => "${mediawiki::dir}/extensions/${extension}",
+ default => $directory,
+ }
+
+ git::clone { "mediawiki/extensions/${extension}":
+ directory => $extension_dir,
+ }
+
+ $settings_file = sprintf('%.2d-%s.php', $priority, $extension)
+ file { "/vagrant/settings/${settings_file}":
+ content => template('mediawiki/extension-loader.php.erb'),
+ # Any other owner or mode will cause VirtualBox
+ # and Puppet to play tug-o'-war over the file.
+ owner => 'vagrant',
+ group => 'www-data',
+ mode => '0770',
+ }
+}
diff --git a/puppet/modules/mediawiki/templates/extension-loader.php.erb
b/puppet/modules/mediawiki/templates/extension-loader.php.erb
new file mode 100644
index 0000000..73f0f36
--- /dev/null
+++ b/puppet/modules/mediawiki/templates/extension-loader.php.erb
@@ -0,0 +1,21 @@
+<?php
+// Loader for "<%= @extension %>" MediaWiki extension.
+// This file is managed by Puppet.
+require_once "<%= @extension_dir.sub( /^#{scope.lookupvar('mediawiki::dir')}/,
'$IP' ) %>/<%= @entrypoint %>";
+
+<%=
+case @settings
+when Hash
+ @settings.map { |k,v|
+ "$#{k} = #{v.to_i == v ? v : v.inspect};"
+ }.join("\n")
+when Array
+ @settings.map { |v|
+ v =~ /;$/ ? v : v + ';'
+ }.join("\n")
+else
+ @settings
+end
+%>
+
+# leet!
--
To view, visit https://gerrit.wikimedia.org/r/63216
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I9295852940d8206d20e8f23fce20db938ba5d574
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/vagrant
Gerrit-Branch: master
Gerrit-Owner: Ori.livneh <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits