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

Reply via email to