BryanDavis has uploaded a new change for review.

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

Change subject: Add `vagrant role info` command
......................................................................

Add `vagrant role info` command

Add a custom vagrant command that can be used to view the documentation
for a role.

Change-Id: Id46177034bfa7d9c927be851059f81354207dfb1
---
M lib/mediawiki-vagrant/environment.rb
A lib/mediawiki-vagrant/roles/info.rb
M lib/mediawiki-vagrant/roles/root.rb
M puppet/modules/role/manifests/mediawiki.pp
4 files changed, 59 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/vagrant 
refs/changes/01/164901/1

diff --git a/lib/mediawiki-vagrant/environment.rb 
b/lib/mediawiki-vagrant/environment.rb
index db08726..a4ac562 100644
--- a/lib/mediawiki-vagrant/environment.rb
+++ b/lib/mediawiki-vagrant/environment.rb
@@ -74,6 +74,20 @@
             hiera_set('classes', classes)
         end
 
+        # Get comment header for a role
+        #
+        def role_docstring(role)
+            role_file = module_path("role/manifests/#{role}.pp")
+            return nil unless role_file.exist?
+
+            doc_str = ''
+            role_file.read.each_line do |l|
+                break unless l =~ /^#( |$)/
+                doc_str += l.gsub(/^# ?/, '')
+            end
+            doc_str
+        end
+
         # If it has been a week or more since remote commits have been fetched,
         # run 'git fetch origin', unless the user disabled automatic fetching.
         # You can disable automatic fetching by creating an empty 'no-updates'
diff --git a/lib/mediawiki-vagrant/roles/info.rb 
b/lib/mediawiki-vagrant/roles/info.rb
new file mode 100644
index 0000000..efd1bf7
--- /dev/null
+++ b/lib/mediawiki-vagrant/roles/info.rb
@@ -0,0 +1,39 @@
+require 'mediawiki-vagrant/plugin_environment'
+require 'rdoc'
+
+module MediaWikiVagrant
+  module Roles
+    class Info < Vagrant.plugin(2, :command)
+      include PluginEnvironment
+
+      def self.synopsis
+        'get information about a mediawiki-vagrant role'
+      end
+
+      def execute
+        opts = OptionParser.new do |o|
+          o.banner = 'Usage: vagrant roles info <role>'
+          o.separator ''
+          o.separator '  Describe a mediawiki-vagrant role.'
+          o.separator ''
+        end
+
+        argv = parse_options(opts)
+        return if !argv
+        raise Vagrant::Errors::CLIInvalidUsage, help: opts.help.chomp if 
argv.length < 1
+
+        role = argv[0].downcase
+        doc = @mwv.role_docstring(role)
+        if doc.nil?
+          @env.ui.error "'#{role}' is not a valid role."
+          return 1
+        end
+
+        rd = RDoc::Markup::ToAnsi.new
+        @env.ui.info rd.convert(doc)
+
+        0
+      end
+    end
+  end
+end
diff --git a/lib/mediawiki-vagrant/roles/root.rb 
b/lib/mediawiki-vagrant/roles/root.rb
index 47461b8..51be6d7 100644
--- a/lib/mediawiki-vagrant/roles/root.rb
+++ b/lib/mediawiki-vagrant/roles/root.rb
@@ -30,6 +30,10 @@
           require_relative 'disable'
           Disable
         end
+        @subcommands.register(:info) do
+          require_relative 'info'
+          Info
+        end
       end
 
       def execute
diff --git a/puppet/modules/role/manifests/mediawiki.pp 
b/puppet/modules/role/manifests/mediawiki.pp
index f3631d3..03d5ebf 100644
--- a/puppet/modules/role/manifests/mediawiki.pp
+++ b/puppet/modules/role/manifests/mediawiki.pp
@@ -1,9 +1,8 @@
 # == Class: role::mediawiki
-# Provisions a MediaWiki instance powered by PHP, MySQL, and redis.
+# Provisions a MediaWiki instance powered by HHVM, MySQL, and redis.
 #
 # === Parameters
-#
-# [*hostname*]
+# [+hostname+]
 #   Hostname for the main wiki.
 #
 class role::mediawiki(

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id46177034bfa7d9c927be851059f81354207dfb1
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/vagrant
Gerrit-Branch: master
Gerrit-Owner: BryanDavis <bda...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to