The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
CONTRIBUTING 055
Changes 10694
LICENSE 33
MANIFEST 1810
META.json 059
META.yml 2217
Makefile.PL 159
README 8276
bin/vroom 11
inc/Module/Install/Base.pm 830
inc/Module/Install/Can.pm 1540
inc/Module/Install/Fetch.pm 930
inc/Module/Install/GithubMeta.pm 570
inc/Module/Install/Makefile.pm 4180
inc/Module/Install/Metadata.pm 7220
inc/Module/Install/Package.pm 3230
inc/Module/Install/Scripts.pm 290
inc/Module/Install/Win32.pm 640
inc/Module/Install/WriteAll.pm 630
inc/Module/Install.pm 4700
inc/Module/Package.pm 710
lib/Vroom/Mo.pm 01
lib/Vroom.pm 40510
lib/Vroom.pod 149130
t/release-pod-syntax.t 014
25 files changed (This is a version diff) 3334529
@@ -0,0 +1,55 @@
+Contributing
+============
+
+The "Vroom" Project needs your help!
+
+Please consider being a contributor. This file contains instructions that will
+help you be an effective contributor to the Project.
+
+GitHub
+------
+
+The code for this Project is hosted at GitHub. The repository is:
+
+  https://github.com/ingydotnet/vroom-pm
+
+You can get the code with this command:
+
+  git clone https://github.com/ingydotnet/vroom-pm
+
+If you've found a bug or a missing feature that you would like the author to
+know about, report it here:
+
+  https://github.com/ingydotnet/vroom-pm/issues
+
+or fix it and submit a pull request here:
+
+  https://github.com/ingydotnet/vroom-pm/pulls
+
+See these links for help on interacting with GitHub:
+
+* https://help.github.com/
+* https://help.github.com/articles/creating-a-pull-request
+
+Zilla::Dist
+-----------
+
+This Project uses Zilla::Dist to prepare it for publishing to CPAN. Read:
+
+  https://metacpan.org/pod/distribution/Zilla-Dist/lib/Zilla/Dist/Contributing.pod
+
+for up-to-date instructions on what contributors like yourself need to know to
+use it.
+
+IRC
+---
+
+Vroom has an IRC channel where you can find real people to help you:
+
+  irc.freenode.net#pkg
+
+Join the channel. Join the team!
+
+
+    Thanks in advance, Ingy döt Net
+
@@ -1,106 +1,94 @@
----
-version: 0.29
-date:    Wed Jun 12 09:29:51 PDT 2013
-changes:
-- Tests fixed by svennieboy++
----
-version: 0.28
-date:    Wed May 29 12:36:28 PDT 2013
-changes:
-- Buddy Burden++ added notes support!
----
-version: 0.27
-date:    Tue Jul 17 09:43:41 PDT 2012
-changes:
-- Support for running shell slides -- mikegrb++
----
-version: 0.26
-date:    Tue Oct 11 21:47:43 EDT 2011
-changes:
-- Add inline script support for running external programs
-  for things like images and browser.
-- Support for auto-sizing slides (wolfsage++)
-- Switch from Gloom to Mo.
----
-version: 0.25
-date:    Tue Oct  5 22:18:50 PDT 2010
-changes:
-- Use Gloom
-- Add M:I Makefile.PL stuffs.
----
-version: 0.23
-date:    Tue Jun 22 14:55:10 PDT 2010
-changes:
-- Add 'vroom -text' to publish text.
----
-version: 0.22
-date:    Mon Jun  7 19:23:39 PDT 2010
-changes:
-- Move Vroom::Vroom back to Vroom.pm
----
-version: 0.21
-date:    Sat Apr 10 11:02:45 PDT 2010
-changes:
-- 0.20 botched getting to CPAN
----
-version: 0.20
-date:    Thu Apr  8 16:22:55 PDT 2010
-changes:
-- 0.19 botched getting to CPAN
----
-version: 0.19
-date:    Thu Apr  8 09:58:43 PDT 2010
-changes:
-- Make .g?vimrc easier to config
----
-version: 0.18
-date:    Wed Oct  7 06:27:24 PDT 2009
-changes:
-- Add --ghpublish option for pushing out a gh-pages branch to github.
----
-version: 0.17
-date:    Mon Oct  5 02:48:33 PDT 2009
-changes:
-- Fairly major refactoring.
-- Update the docs with all the latest features
-- Add support for gvim (macvim)
-- Promote github and gh-pages in the docs
-- Merge negative indent support from jlavallee++
----
-version: 0.16
-date:    Tue Jun  9 22:44:20 PDT 2009
-changes:
-- Allow lines that start '==='
-- Add a 'skip' CLI option
----
-version: 0.15
-date:    Sat Apr 18 06:36:39 PDT 2009
-changes:
-- Fixed js bug. rafl++
-- Fixed MANIFEST.SKIP to ignore git
----
-version: 0.14
-date:    Sat Apr 18 00:16:58 PDT 2009
-changes:
-- Support 'R'un for YAML
-- Output slides as html
-- Add an example slideshow
----
-version: 0.13
-date:    Sun Jun  1 23:27:02 PDT 2008
-changes:
-- Support a .vroom/vimrc
-- Don't overwrite a .vimrc not created by vroom
-- Updated the docs
----
-version: 0.12
-date:    Sat May 17 12:15:59 JST 2008
-changes: Update docs.
----
-version: 0.11
-date:    Thu May 15 15:30:18 JST 2008
-changes: Move Vroom.pm to Vroom::Vroom
----
-version: 0.10
-date:    Sun Apr 13 15:34:56 CST 2008
-changes: Initial Release
+0.36 Sat Aug 16 12:52:50 PDT 2014
+ - Meta 0.0.2
+
+0.35 Fri Aug 15 21:00:48 PDT 2014
+ - Add t/000-compile-modules.t
+
+0.34 Sat Aug  9 00:28:19 PDT 2014
+ - Fix swim errors
+
+0.33 Fri Aug  8 12:59:46 PDT 2014
+ - Switch hashbang to '#!/usr/bin/env perl'
+
+0.32 Wed Jul 30 12:01:30 PDT 2014
+ - Change doc to swim
+ - Update Meta and add Contributing
+
+0.31 Mon Jun 16 22:51:56 PDT 2014
+ - Try new travis excludes
+ - Use manual VERSION
+
+0.30 Sat Jun 14 14:26:02 PDT 2014
+ - Update to Zilla::Dist
+
+0.29 Wed Jun 12 09:29:51 PDT 2013
+ - Tests fixed by svennieboy++
+
+0.28 Wed May 29 12:36:28 PDT 2013
+ - Buddy Burden++ added notes support!
+
+0.27 Tue Jul 17 09:43:41 PDT 2012
+ - Support for running shell slides -- mikegrb++
+
+0.26 Tue Oct 11 21:47:43 EDT 2011
+ - Add inline script support for running external programs for things like
+   images and browser.
+ - Support for auto-sizing slides (wolfsage++)
+ - Switch from Gloom to Mo.
+
+0.25 Tue Oct  5 22:18:50 PDT 2010
+ - Use Gloom
+ - Add M:I Makefile.PL stuffs.
+
+0.23 Tue Jun 22 14:55:10 PDT 2010
+ - Add 'vroom -text' to publish text.
+
+0.22 Mon Jun  7 19:23:39 PDT 2010
+ - Move Vroom::Vroom back to Vroom.pm
+
+0.21 Sat Apr 10 11:02:45 PDT 2010
+ - 0.20 botched getting to CPAN
+
+0.20 Thu Apr  8 16:22:55 PDT 2010
+ - 0.19 botched getting to CPAN
+
+0.19 Thu Apr  8 09:58:43 PDT 2010
+ - Make .g?vimrc easier to config
+
+0.18 Wed Oct  7 06:27:24 PDT 2009
+ - Add --ghpublish option for pushing out a gh-pages branch to github.
+
+0.17 Mon Oct  5 02:48:33 PDT 2009
+ - Fairly major refactoring.
+ - Update the docs with all the latest features
+ - Add support for gvim (macvim)
+ - Promote github and gh-pages in the docs
+ - Merge negative indent support from jlavallee++
+
+0.16 Tue Jun  9 22:44:20 PDT 2009
+ - Allow lines that start '==='
+ - Add a 'skip' CLI option
+
+0.15 Sat Apr 18 06:36:39 PDT 2009
+ - Fixed js bug. rafl++
+ - Fixed MANIFEST.SKIP to ignore git
+
+0.14 Sat Apr 18 00:16:58 PDT 2009
+ - Support 'R'un for YAML
+ - Output slides as html
+ - Add an example slideshow
+
+0.13 Sun Jun  1 23:27:02 PDT 2008
+ - Support a .vroom/vimrc
+ - Don't overwrite a .vimrc not created by vroom
+ - Updated the docs
+
+0.12 Sat May 17 12:15:59 JST 2008
+ - Update docs.
+
+0.11 Thu May 15 15:30:18 JST 2008
+ - Move Vroom.pm to Vroom::Vroom
+
+0.10 Sun Apr 13 15:34:56 CST 2008
+ - Initial Release
+
@@ -1,4 +1,4 @@
-This software is copyright (c) 2013 by Ingy döt Net <ingy@ingy.net>.
+This software is copyright (c) 2014 by Ingy döt Net.
 
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
@@ -12,7 +12,7 @@ b) the "Artistic License"
 
 --- The GNU General Public License, Version 1, February 1989 ---
 
-This software is Copyright (c) 2013 by Ingy döt Net <ingy@ingy.net>.
+This software is Copyright (c) 2014 by Ingy döt Net.
 
 This is free software, licensed under:
 
@@ -272,7 +272,7 @@ That's all there is to it!
 
 --- The Artistic License 1.0 ---
 
-This software is Copyright (c) 2013 by Ingy döt Net <ingy@ingy.net>.
+This software is Copyright (c) 2014 by Ingy döt Net.
 
 This is free software, licensed under:
 
@@ -1,23 +1,15 @@
-bin/vroom
+# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.019.
+CONTRIBUTING
 Changes
-inc/Module/Install.pm
-inc/Module/Install/Base.pm
-inc/Module/Install/Can.pm
-inc/Module/Install/Fetch.pm
-inc/Module/Install/GithubMeta.pm
-inc/Module/Install/Makefile.pm
-inc/Module/Install/Metadata.pm
-inc/Module/Install/Package.pm
-inc/Module/Install/Scripts.pm
-inc/Module/Install/Win32.pm
-inc/Module/Install/WriteAll.pm
-inc/Module/Package.pm
-lib/Vroom.pm
-lib/Vroom.pod
-lib/Vroom/Mo.pm
 LICENSE
-Makefile.PL
-MANIFEST			This list of files
+MANIFEST
+META.json
 META.yml
+Makefile.PL
 README
+bin/vroom
+lib/Vroom.pm
+lib/Vroom.pod
+lib/Vroom/Mo.pm
+t/release-pod-syntax.t
 t/test.t
@@ -0,0 +1,59 @@
+{
+   "abstract" : "Slide Shows in Vim",
+   "author" : [
+      "Ingy döt Net <ingy@cpan.org>"
+   ],
+   "dynamic_config" : 0,
+   "generated_by" : "Dist::Zilla version 5.019, CPAN::Meta::Converter version 2.132830",
+   "license" : [
+      "perl_5"
+   ],
+   "meta-spec" : {
+      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+      "version" : "2"
+   },
+   "name" : "Vroom",
+   "no_index" : {
+      "directory" : [
+         "inc",
+         "t",
+         "xt",
+         "example"
+      ]
+   },
+   "prereqs" : {
+      "configure" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "6.30"
+         }
+      },
+      "develop" : {
+         "requires" : {
+            "Test::Pod" : "1.41"
+         }
+      },
+      "runtime" : {
+         "requires" : {
+            "File::HomeDir" : "0",
+            "IO::All" : "0",
+            "Template::Toolkit::Simple" : "0",
+            "Term::Size" : "0",
+            "YAML::XS" : "0"
+         }
+      }
+   },
+   "release_status" : "stable",
+   "resources" : {
+      "bugtracker" : {
+         "web" : "https://github.com/ingydotnet/vroom-pm/issues"
+      },
+      "homepage" : "https://github.com/ingydotnet/vroom-pm",
+      "repository" : {
+         "type" : "git",
+         "url" : "https://github.com/ingydotnet/vroom-pm.git",
+         "web" : "https://github.com/ingydotnet/vroom-pm"
+      }
+   },
+   "version" : "0.36"
+}
+
@@ -1,36 +1,31 @@
 ---
 abstract: 'Slide Shows in Vim'
 author:
-  - 'Ingy döt Net <ingy@ingy.net>'
-build_requires:
-  ExtUtils::MakeMaker: 6.59
+  - 'Ingy döt Net <ingy@cpan.org>'
+build_requires: {}
 configure_requires:
-  ExtUtils::MakeMaker: 6.59
-distribution_type: module
-dynamic_config: 1
-generated_by: 'Module::Install version 1.06'
+  ExtUtils::MakeMaker: '6.30'
+dynamic_config: 0
+generated_by: 'Dist::Zilla version 5.019, CPAN::Meta::Converter version 2.132830'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
-  version: 1.4
-module_name: Vroom
+  version: '1.4'
 name: Vroom
 no_index:
   directory:
     - inc
     - t
+    - xt
+    - example
 requires:
-  File::HomeDir: 0.99
-  IO::All: 0.44
-  Template::Toolkit::Simple: 0.16
-  Term::Size: 0.207
-  YAML::XS: 0.38
-  perl: 5.6.1
+  File::HomeDir: '0'
+  IO::All: '0'
+  Template::Toolkit::Simple: '0'
+  Term::Size: '0'
+  YAML::XS: '0'
 resources:
-  homepage: https://github.com/ingydotnet/vroom-pm/tree
-  license: http://dev.perl.org/licenses/
-  repository:
-    type: git
-    url: git://github.com/ingydotnet/vroom-pm.git
-    web: https://github.com/ingydotnet/vroom-pm/tree
-version: 0.29
+  bugtracker: https://github.com/ingydotnet/vroom-pm/issues
+  homepage: https://github.com/ingydotnet/vroom-pm
+  repository: https://github.com/ingydotnet/vroom-pm.git
+version: '0.36'
@@ -1 +1,59 @@
-use inc::Module::Package 'Ingy:modern 0.20';
+
+# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v5.019.
+use strict;
+use warnings;
+
+
+
+use ExtUtils::MakeMaker 6.30;
+
+
+
+my %WriteMakefileArgs = (
+  "ABSTRACT" => "Slide Shows in Vim",
+  "AUTHOR" => "Ingy d\x{f6}t Net <ingy\@cpan.org>",
+  "CONFIGURE_REQUIRES" => {
+    "ExtUtils::MakeMaker" => "6.30"
+  },
+  "DISTNAME" => "Vroom",
+  "EXE_FILES" => [
+    "bin/vroom"
+  ],
+  "LICENSE" => "perl",
+  "NAME" => "Vroom",
+  "PREREQ_PM" => {
+    "File::HomeDir" => 0,
+    "IO::All" => 0,
+    "Template::Toolkit::Simple" => 0,
+    "Term::Size" => 0,
+    "YAML::XS" => 0
+  },
+  "VERSION" => "0.36",
+  "test" => {
+    "TESTS" => "t/*.t"
+  }
+);
+
+
+my %FallbackPrereqs = (
+  "File::HomeDir" => 0,
+  "IO::All" => 0,
+  "Template::Toolkit::Simple" => 0,
+  "Term::Size" => 0,
+  "YAML::XS" => 0
+);
+
+
+unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
+  delete $WriteMakefileArgs{TEST_REQUIRES};
+  delete $WriteMakefileArgs{BUILD_REQUIRES};
+  $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs;
+}
+
+delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
+  unless eval { ExtUtils::MakeMaker->VERSION(6.52) };
+
+WriteMakefile(%WriteMakefileArgs);
+
+
+
@@ -25,7 +25,7 @@ DESCRIPTION
 
     You can do things like advance to the next slide with the spacebar.
     Vroom creates a file called "./.vimrc" with helpful key mappings for
-    navigating a slideshow. See "KEY MAPPINGS" below.
+    navigating a slideshow. See [KEY MAPPINGS] below.
 
     Vroom takes advantage of Vim's syntax highlighting. It also lets you run
     slides that contain code.
@@ -33,41 +33,41 @@ DESCRIPTION
     Since Vim is an editor, you can change your slides during the show.
 
 COMMAND USAGE
-    Vroom has a few command line options:
+    "vroom" has a few command line options:
 
-    vroom new
+    "vroom new"
         Write an example "slides.vroom" file. This example contains all the
         config options and also examples of all the Vroom syntax features.
 
-    vroom vroom
+    "vroom vroom"
         Compile (create) the slides files from the input file and start vim
         show.
 
-    vroom compile
+    "vroom compile"
         Just compile the slides.
 
-    vroom html
+    "vroom html"
         Publish the slides to HTML, with embedded JavaScript to navigate
         with the spacebar and backspace keys. Created in the "html/"
         subdirectory.
 
-    vroom text
+    "vroom text"
         Publish the slides to plain text. This action uses all the text
         slides in their unsplit form. Created in the "text/" subdirectory.
 
-    vroom clean
+    "vroom clean"
         Clean up all the compiled output files.
 
-    vroom ghpublish
+    "vroom ghpublish"
         Creates a shell script in the current directory, that is intended to
         publish your slides to the special GitHub branch called gh-pages.
-        See "GITHUB NOTES" below.
+        See [GITHUB NOTES] below.
 
         This command does NOT run the script. It merely creates it for you.
         It is up to you to review the script and run it (if it makes sense
         on your system).
 
-    vroom <action> --skip=#
+    "vroom <action> --skip=#"
         The skip option takes a number as its input and skips that number of
         files during compilation. This is useful when you are polishing your
         slides and are finished with the first 50. You can say:
@@ -76,7 +76,7 @@ COMMAND USAGE
 
         and it will start on slide #51.
 
-    vroom <action> --input=<file_name>
+    "vroom <action> --input=<file_name>"
         This option lets you specify an alternate input file name, instead
         of the default one, "slides.vroom".
 
@@ -108,23 +108,23 @@ INPUT FORMAT
         ---- center
         THE END
 
-    A line that starts with '==' is a header line. It will be centered.
+    A line that starts with "==" is a header line. It will be centered.
 
-    Lines that begin with a '+' cause vroom to split the slide there,
+    Lines that begin with a "+" cause vroom to split the slide there,
     causing an animation effect.
 
-    Lines that begin with a '%' are slide titles. Titles are completely
+    Lines that begin with a "%" are slide titles. Titles are completely
     optional. They are used with notes files, and also for the index page if
     you convert to HTML. You can have only one of these per slide.
 
-    A line consisting of nothing but '====' indicates that what follows are
+    A line consisting of nothing but "====" indicates that what follows are
     notes for this slide. Notes are also optional. They are primarily used
     for notes files, but are also included if you convert your presentation
-    to HTML. See "SLIDE NOTES" below.
+    to HTML. See [SLIDE NOTES] below.
 
 CONFIGURATION OPTIONS
-    Each slide can have one or more configuration options. Options are a
-    comma separated list that follow the '----' header for a slide. Like
+    each slide can have one or more configuration options. Options are a
+    comma separated list that follow the "----" header for a slide. Like
     this:
 
         ---- config
@@ -145,10 +145,11 @@ CONFIGURATION OPTIONS
     center
         Center the contents of the slide.
 
-    i## 'i' followed by a number means to indent the contents by the number
+    "i##"
+        'i' followed by a number means to indent the contents by the number
         of characters.
 
-    i-##
+    "i-##"
         'i' followed by a negative number means to strip that number of
         leading characters from the contents of the slide. This can be
         useful if you need to have characters special to Vroom at the
@@ -173,32 +174,32 @@ CONFIGURATION OPTIONS
     skip
         Ignore the following slide completely.
 
-  CONFIG SLIDE OPTIONS
+  Config Slide Options
     You can specify the following configuration options in a config slide:
 
-    title: <text>
+    "title: <text>"
         The title of your presentation.
 
-    height: <number>
+    "height: <number>"
         The number of lines in the terminal you plan to use when presenting
         the show. Used for centering the content.
 
-    width: <number>
+    "width: <number>"
         The number of columns in the terminal you plan to use when
         presenting the show. Used for centering the content.
 
-    auto_size: <0|1>
+    "auto_size: <0|1>"
         When set to 1, the height/width options above will be ignored and
         determined each time you start the slideshow.
 
-    indent: <number>
+    "indent: <number>"
         All slides will be indented by this number of spaces by default.
 
-    list_indent: <number>
+    "list_indent: <number>"
         Auto detect slides that have lists in them, and indent them by the
         specified number of columns.
 
-    vim: <name>
+    "vim: <name>"
         You can specify the name of the vim executable to use. If you set
         this to "gvim" special gvim support will be provided.
 
@@ -233,30 +234,35 @@ SLIDE NOTES
 KEY MAPPINGS
     These are the standard key mappings specified in the local ".vimrc".
 
-    <SPACE>
+    "<SPACE>"
         Advance one slide.
 
-    <BACKSPACE>
+    "<BACKSPACE>"
         Go back one slide.
 
-    ??  Bring up the help screen.
+    "??"
+        Bring up the help screen.
 
-    RR (or R -- deprecated)
+    "RR" (or R -- deprecated)
         If the current slide is declared Perl, Python, Ruby, PHP, Haskell or
         JavaScript, then run it accordingly.
 
-    QQ  Quit Vroom.
+    "QQ"
+        Quit Vroom.
 
-    VV  Since these vim options apply while editing the "slides.vroom" file
+    "VV"
+        Since these vim options apply while editing the "slides.vroom" file
         (yes, beware), you can use this shortcut to launch Vroom on the
         current contents whilst writing your slides.
 
-    EE  Edit the file that the cursor is on the filename of.
+    "EE"
+        Edit the file that the cursor is on the filename of.
 
         You can put file path names in your slides, and then easily bring
         them up during your presentation.
 
-    OO  On a Mac, run the OS X "open" command on the argument that your
+    "OO"
+        On a Mac, run the OS X "open" command on the argument that your
         cursor is on.
 
         For instance, if you want to display an image, you could put the
@@ -273,7 +279,7 @@ CUSTOM CONFIGURATION
     You can also create a file called ".vroom/gvimrc" for gvim overrides, if
     you are using gvim.
 
-USING MacVim OR gvim
+USING MACVIM OR GVIM
     If you have a Mac, you really should try using MacVim for Vroom slide
     shows. You can run it in fullscreen mode, and it looks kinda
     professional.
@@ -291,51 +297,39 @@ GITHUB NOTES
     to publish your slides and give people a url to review them. Here are
     the things I do to make this work well:
 
-    1) I create a repository for every presentation I give. The name of the
-    repo is of the form <topic>-<event/time>-talk. You can go to
-    <http://github.com/ingydotnet/> and look for the repos ending with
-    "-talk".
-
-    2) GitHub has a feature called gh-pages that you can use to create a
-    website for each github repo. I use this feature to publish the html
-    output of my talk. I do something like this:
-
-        vroom html
-        mv html /tmp
-        git branch gh-pages
-        git checkout gh-pages
-        rm -r *.html
-        mv /tmp/html/* .
-        rmdir /tmp/html
-        git add .
-        git commit -m 'Publish my slides'
-        git push origin gh-pages
-        git checkout master
-
-    2B) Vroom comes with a "ghpublish" option. If you run:
-
-        > vroom ghpublish
-
-    it will generate a script called "ghpublish" that contains commands like
-    the ones above, to publish your slides to a gh-pages branch.
-
-    3) If my repo is called "vroom-yapcna2009-talk", then after I publish
-    the talk to the gh-pages branch, it will be available as
-    <http://ingydotnet.github.com/vroom-yapcna2009-talk>. I then link this
-    url from <http://github.com/ingydotnet/vroom-yapcna2009-talk> as the
-    Homepage url.
+    *   I create a repository for every presentation I give. The name of the
+        repo is of the form <topic>-<event/time>-talk. You can go to
+        <http://github.com/ingydotnet/> and look for the repos ending with
+        "-talk".
+
+    *   GitHub has a feature called gh-pages that you can use to create a
+        website for each github repo. I use this feature to publish the html
+        output of my talk. I do something like this:
+
+            vroom html
+            mv html /tmp
+            git branch gh-pages
+            git checkout gh-pages
+            rm -r *.html
+            mv /tmp/html/* .
+            rmdir /tmp/html
+            git add .
+            git commit -m 'Publish my slides'
+            git push origin gh-pages
+            git checkout master
+
+    *   Vroom comes with a "ghpublish" option. If you run:
+
+            > vroom ghpublish
+        it will generate a script called C<ghpublish> that contains commands like the
+        ones above, to publish your slides to a gh-pages branch.
+
+    *   If my repo is called "vroom-yapcna2009-talk", then after I publish
+        the talk to the gh-pages branch, it will be available as
+        <http://ingydotnet.github.com/vroom-yapcna2009-talk>. I then link
+        this url from <http://github.com/ingydotnet/vroom-yapcna2009-talk>
+        as the Homepage url.
 
     You can see an example of a talk published to HTML and posted via
     gh-pages at <http://ingydotnet.github.com/vroom-pm/>.
 
-AUTHOR
-    Ingy döt Net <ingy@ingy.net>
-
-COPYRIGHT AND LICENSE
-    Copyright (c) 2008-2013. Ingy döt Net.
-
-    This program is free software; you can redistribute it and/or modify it
-    under the same terms as Perl itself.
-
-    See http://www.perl.com/perl/misc/Artistic.html
-
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!/usr/bin/env perl
 
 use Vroom;
 Vroom->vroom;
@@ -1,83 +0,0 @@
-#line 1
-package Module::Install::Base;
-
-use strict 'vars';
-use vars qw{$VERSION};
-BEGIN {
-	$VERSION = '1.06';
-}
-
-# Suspend handler for "redefined" warnings
-BEGIN {
-	my $w = $SIG{__WARN__};
-	$SIG{__WARN__} = sub { $w };
-}
-
-#line 42
-
-sub new {
-	my $class = shift;
-	unless ( defined &{"${class}::call"} ) {
-		*{"${class}::call"} = sub { shift->_top->call(@_) };
-	}
-	unless ( defined &{"${class}::load"} ) {
-		*{"${class}::load"} = sub { shift->_top->load(@_) };
-	}
-	bless { @_ }, $class;
-}
-
-#line 61
-
-sub AUTOLOAD {
-	local $@;
-	my $func = eval { shift->_top->autoload } or return;
-	goto &$func;
-}
-
-#line 75
-
-sub _top {
-	$_[0]->{_top};
-}
-
-#line 90
-
-sub admin {
-	$_[0]->_top->{admin}
-	or
-	Module::Install::Base::FakeAdmin->new;
-}
-
-#line 106
-
-sub is_admin {
-	! $_[0]->admin->isa('Module::Install::Base::FakeAdmin');
-}
-
-sub DESTROY {}
-
-package Module::Install::Base::FakeAdmin;
-
-use vars qw{$VERSION};
-BEGIN {
-	$VERSION = $Module::Install::Base::VERSION;
-}
-
-my $fake;
-
-sub new {
-	$fake ||= bless(\@_, $_[0]);
-}
-
-sub AUTOLOAD {}
-
-sub DESTROY {}
-
-# Restore warning handler
-BEGIN {
-	$SIG{__WARN__} = $SIG{__WARN__}->();
-}
-
-1;
-
-#line 159
@@ -1,154 +0,0 @@
-#line 1
-package Module::Install::Can;
-
-use strict;
-use Config                ();
-use ExtUtils::MakeMaker   ();
-use Module::Install::Base ();
-
-use vars qw{$VERSION @ISA $ISCORE};
-BEGIN {
-	$VERSION = '1.06';
-	@ISA     = 'Module::Install::Base';
-	$ISCORE  = 1;
-}
-
-# check if we can load some module
-### Upgrade this to not have to load the module if possible
-sub can_use {
-	my ($self, $mod, $ver) = @_;
-	$mod =~ s{::|\\}{/}g;
-	$mod .= '.pm' unless $mod =~ /\.pm$/i;
-
-	my $pkg = $mod;
-	$pkg =~ s{/}{::}g;
-	$pkg =~ s{\.pm$}{}i;
-
-	local $@;
-	eval { require $mod; $pkg->VERSION($ver || 0); 1 };
-}
-
-# Check if we can run some command
-sub can_run {
-	my ($self, $cmd) = @_;
-
-	my $_cmd = $cmd;
-	return $_cmd if (-x $_cmd or $_cmd = MM->maybe_command($_cmd));
-
-	for my $dir ((split /$Config::Config{path_sep}/, $ENV{PATH}), '.') {
-		next if $dir eq '';
-		require File::Spec;
-		my $abs = File::Spec->catfile($dir, $cmd);
-		return $abs if (-x $abs or $abs = MM->maybe_command($abs));
-	}
-
-	return;
-}
-
-# Can our C compiler environment build XS files
-sub can_xs {
-	my $self = shift;
-
-	# Ensure we have the CBuilder module
-	$self->configure_requires( 'ExtUtils::CBuilder' => 0.27 );
-
-	# Do we have the configure_requires checker?
-	local $@;
-	eval "require ExtUtils::CBuilder;";
-	if ( $@ ) {
-		# They don't obey configure_requires, so it is
-		# someone old and delicate. Try to avoid hurting
-		# them by falling back to an older simpler test.
-		return $self->can_cc();
-	}
-
-	# Do we have a working C compiler
-	my $builder = ExtUtils::CBuilder->new(
-		quiet => 1,
-	);
-	unless ( $builder->have_compiler ) {
-		# No working C compiler
-		return 0;
-	}
-
-	# Write a C file representative of what XS becomes
-	require File::Temp;
-	my ( $FH, $tmpfile ) = File::Temp::tempfile(
-		"compilexs-XXXXX",
-		SUFFIX => '.c',
-	);
-	binmode $FH;
-	print $FH <<'END_C';
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-int main(int argc, char **argv) {
-    return 0;
-}
-
-int boot_sanexs() {
-    return 1;
-}
-
-END_C
-	close $FH;
-
-	# Can the C compiler access the same headers XS does
-	my @libs   = ();
-	my $object = undef;
-	eval {
-		local $^W = 0;
-		$object = $builder->compile(
-			source => $tmpfile,
-		);
-		@libs = $builder->link(
-			objects     => $object,
-			module_name => 'sanexs',
-		);
-	};
-	my $result = $@ ? 0 : 1;
-
-	# Clean up all the build files
-	foreach ( $tmpfile, $object, @libs ) {
-		next unless defined $_;
-		1 while unlink;
-	}
-
-	return $result;
-}
-
-# Can we locate a (the) C compiler
-sub can_cc {
-	my $self   = shift;
-	my @chunks = split(/ /, $Config::Config{cc}) or return;
-
-	# $Config{cc} may contain args; try to find out the program part
-	while (@chunks) {
-		return $self->can_run("@chunks") || (pop(@chunks), next);
-	}
-
-	return;
-}
-
-# Fix Cygwin bug on maybe_command();
-if ( $^O eq 'cygwin' ) {
-	require ExtUtils::MM_Cygwin;
-	require ExtUtils::MM_Win32;
-	if ( ! defined(&ExtUtils::MM_Cygwin::maybe_command) ) {
-		*ExtUtils::MM_Cygwin::maybe_command = sub {
-			my ($self, $file) = @_;
-			if ($file =~ m{^/cygdrive/}i and ExtUtils::MM_Win32->can('maybe_command')) {
-				ExtUtils::MM_Win32->maybe_command($file);
-			} else {
-				ExtUtils::MM_Unix->maybe_command($file);
-			}
-		}
-	}
-}
-
-1;
-
-__END__
-
-#line 236
@@ -1,93 +0,0 @@
-#line 1
-package Module::Install::Fetch;
-
-use strict;
-use Module::Install::Base ();
-
-use vars qw{$VERSION @ISA $ISCORE};
-BEGIN {
-	$VERSION = '1.06';
-	@ISA     = 'Module::Install::Base';
-	$ISCORE  = 1;
-}
-
-sub get_file {
-    my ($self, %args) = @_;
-    my ($scheme, $host, $path, $file) =
-        $args{url} =~ m|^(\w+)://([^/]+)(.+)/(.+)| or return;
-
-    if ( $scheme eq 'http' and ! eval { require LWP::Simple; 1 } ) {
-        $args{url} = $args{ftp_url}
-            or (warn("LWP support unavailable!\n"), return);
-        ($scheme, $host, $path, $file) =
-            $args{url} =~ m|^(\w+)://([^/]+)(.+)/(.+)| or return;
-    }
-
-    $|++;
-    print "Fetching '$file' from $host... ";
-
-    unless (eval { require Socket; Socket::inet_aton($host) }) {
-        warn "'$host' resolve failed!\n";
-        return;
-    }
-
-    return unless $scheme eq 'ftp' or $scheme eq 'http';
-
-    require Cwd;
-    my $dir = Cwd::getcwd();
-    chdir $args{local_dir} or return if exists $args{local_dir};
-
-    if (eval { require LWP::Simple; 1 }) {
-        LWP::Simple::mirror($args{url}, $file);
-    }
-    elsif (eval { require Net::FTP; 1 }) { eval {
-        # use Net::FTP to get past firewall
-        my $ftp = Net::FTP->new($host, Passive => 1, Timeout => 600);
-        $ftp->login("anonymous", 'anonymous@example.com');
-        $ftp->cwd($path);
-        $ftp->binary;
-        $ftp->get($file) or (warn("$!\n"), return);
-        $ftp->quit;
-    } }
-    elsif (my $ftp = $self->can_run('ftp')) { eval {
-        # no Net::FTP, fallback to ftp.exe
-        require FileHandle;
-        my $fh = FileHandle->new;
-
-        local $SIG{CHLD} = 'IGNORE';
-        unless ($fh->open("|$ftp -n")) {
-            warn "Couldn't open ftp: $!\n";
-            chdir $dir; return;
-        }
-
-        my @dialog = split(/\n/, <<"END_FTP");
-open $host
-user anonymous anonymous\@example.com
-cd $path
-binary
-get $file $file
-quit
-END_FTP
-        foreach (@dialog) { $fh->print("$_\n") }
-        $fh->close;
-    } }
-    else {
-        warn "No working 'ftp' program available!\n";
-        chdir $dir; return;
-    }
-
-    unless (-f $file) {
-        warn "Fetching failed: $@\n";
-        chdir $dir; return;
-    }
-
-    return if exists $args{size} and -s $file != $args{size};
-    system($args{run}) if exists $args{run};
-    unlink($file) if $args{remove};
-
-    print(((!exists $args{check_for} or -e $args{check_for})
-        ? "done!" : "failed! ($!)"), "\n");
-    chdir $dir; return !$?;
-}
-
-1;
@@ -1,57 +0,0 @@
-#line 1
-package Module::Install::GithubMeta;
-
-use strict;
-use warnings;
-use Cwd;
-use base qw(Module::Install::Base);
-use vars qw($VERSION);
-
-$VERSION = '0.16';
-
-sub githubmeta {
-  my $self = shift;
-  return unless $Module::Install::AUTHOR;
-  return unless _under_git();
-  return unless $self->can_run('git');
-  my $remote = shift || 'origin';
-  return unless my ($git_url) = `git remote show -n $remote` =~ /URL: (.*)$/m;
-  return unless $git_url =~ /github\.com/; # Not a Github repository
-  my $http_url = $git_url;
-  $git_url =~ s![\w\-]+\@([^:]+):!git://$1/!;
-  $http_url =~ s![\w\-]+\@([^:]+):!https://$1/!;
-  $http_url =~ s!\.git$!/tree!;
-  $self->repository(
-      {
-          type => 'git',
-          url  => $git_url,
-          web  => $http_url,
-      },
-  );
-  $self->homepage( $http_url ) unless $self->homepage();
-  return 1;
-}
-
-sub _under_git {
-  return 1 if -e '.git';
-  my $cwd = getcwd;
-  my $last = $cwd;
-  my $found = 0;
-  while (1) {
-    chdir '..' or last;
-    my $current = getcwd;
-    last if $last eq $current;
-    $last = $current;
-    if ( -e '.git' ) {
-       $found = 1;
-       last;
-    }
-  }
-  chdir $cwd;
-  return $found;
-}
-
-'Github';
-__END__
-
-#line 117
@@ -1,418 +0,0 @@
-#line 1
-package Module::Install::Makefile;
-
-use strict 'vars';
-use ExtUtils::MakeMaker   ();
-use Module::Install::Base ();
-use Fcntl qw/:flock :seek/;
-
-use vars qw{$VERSION @ISA $ISCORE};
-BEGIN {
-	$VERSION = '1.06';
-	@ISA     = 'Module::Install::Base';
-	$ISCORE  = 1;
-}
-
-sub Makefile { $_[0] }
-
-my %seen = ();
-
-sub prompt {
-	shift;
-
-	# Infinite loop protection
-	my @c = caller();
-	if ( ++$seen{"$c[1]|$c[2]|$_[0]"} > 3 ) {
-		die "Caught an potential prompt infinite loop ($c[1]|$c[2]|$_[0])";
-	}
-
-	# In automated testing or non-interactive session, always use defaults
-	if ( ($ENV{AUTOMATED_TESTING} or -! -t STDIN) and ! $ENV{PERL_MM_USE_DEFAULT} ) {
-		local $ENV{PERL_MM_USE_DEFAULT} = 1;
-		goto &ExtUtils::MakeMaker::prompt;
-	} else {
-		goto &ExtUtils::MakeMaker::prompt;
-	}
-}
-
-# Store a cleaned up version of the MakeMaker version,
-# since we need to behave differently in a variety of
-# ways based on the MM version.
-my $makemaker = eval $ExtUtils::MakeMaker::VERSION;
-
-# If we are passed a param, do a "newer than" comparison.
-# Otherwise, just return the MakeMaker version.
-sub makemaker {
-	( @_ < 2 or $makemaker >= eval($_[1]) ) ? $makemaker : 0
-}
-
-# Ripped from ExtUtils::MakeMaker 6.56, and slightly modified
-# as we only need to know here whether the attribute is an array
-# or a hash or something else (which may or may not be appendable).
-my %makemaker_argtype = (
- C                  => 'ARRAY',
- CONFIG             => 'ARRAY',
-# CONFIGURE          => 'CODE', # ignore
- DIR                => 'ARRAY',
- DL_FUNCS           => 'HASH',
- DL_VARS            => 'ARRAY',
- EXCLUDE_EXT        => 'ARRAY',
- EXE_FILES          => 'ARRAY',
- FUNCLIST           => 'ARRAY',
- H                  => 'ARRAY',
- IMPORTS            => 'HASH',
- INCLUDE_EXT        => 'ARRAY',
- LIBS               => 'ARRAY', # ignore ''
- MAN1PODS           => 'HASH',
- MAN3PODS           => 'HASH',
- META_ADD           => 'HASH',
- META_MERGE         => 'HASH',
- PL_FILES           => 'HASH',
- PM                 => 'HASH',
- PMLIBDIRS          => 'ARRAY',
- PMLIBPARENTDIRS    => 'ARRAY',
- PREREQ_PM          => 'HASH',
- CONFIGURE_REQUIRES => 'HASH',
- SKIP               => 'ARRAY',
- TYPEMAPS           => 'ARRAY',
- XS                 => 'HASH',
-# VERSION            => ['version',''],  # ignore
-# _KEEP_AFTER_FLUSH  => '',
-
- clean      => 'HASH',
- depend     => 'HASH',
- dist       => 'HASH',
- dynamic_lib=> 'HASH',
- linkext    => 'HASH',
- macro      => 'HASH',
- postamble  => 'HASH',
- realclean  => 'HASH',
- test       => 'HASH',
- tool_autosplit => 'HASH',
-
- # special cases where you can use makemaker_append
- CCFLAGS   => 'APPENDABLE',
- DEFINE    => 'APPENDABLE',
- INC       => 'APPENDABLE',
- LDDLFLAGS => 'APPENDABLE',
- LDFROM    => 'APPENDABLE',
-);
-
-sub makemaker_args {
-	my ($self, %new_args) = @_;
-	my $args = ( $self->{makemaker_args} ||= {} );
-	foreach my $key (keys %new_args) {
-		if ($makemaker_argtype{$key}) {
-			if ($makemaker_argtype{$key} eq 'ARRAY') {
-				$args->{$key} = [] unless defined $args->{$key};
-				unless (ref $args->{$key} eq 'ARRAY') {
-					$args->{$key} = [$args->{$key}]
-				}
-				push @{$args->{$key}},
-					ref $new_args{$key} eq 'ARRAY'
-						? @{$new_args{$key}}
-						: $new_args{$key};
-			}
-			elsif ($makemaker_argtype{$key} eq 'HASH') {
-				$args->{$key} = {} unless defined $args->{$key};
-				foreach my $skey (keys %{ $new_args{$key} }) {
-					$args->{$key}{$skey} = $new_args{$key}{$skey};
-				}
-			}
-			elsif ($makemaker_argtype{$key} eq 'APPENDABLE') {
-				$self->makemaker_append($key => $new_args{$key});
-			}
-		}
-		else {
-			if (defined $args->{$key}) {
-				warn qq{MakeMaker attribute "$key" is overriden; use "makemaker_append" to append values\n};
-			}
-			$args->{$key} = $new_args{$key};
-		}
-	}
-	return $args;
-}
-
-# For mm args that take multiple space-seperated args,
-# append an argument to the current list.
-sub makemaker_append {
-	my $self = shift;
-	my $name = shift;
-	my $args = $self->makemaker_args;
-	$args->{$name} = defined $args->{$name}
-		? join( ' ', $args->{$name}, @_ )
-		: join( ' ', @_ );
-}
-
-sub build_subdirs {
-	my $self    = shift;
-	my $subdirs = $self->makemaker_args->{DIR} ||= [];
-	for my $subdir (@_) {
-		push @$subdirs, $subdir;
-	}
-}
-
-sub clean_files {
-	my $self  = shift;
-	my $clean = $self->makemaker_args->{clean} ||= {};
-	  %$clean = (
-		%$clean,
-		FILES => join ' ', grep { length $_ } ($clean->{FILES} || (), @_),
-	);
-}
-
-sub realclean_files {
-	my $self      = shift;
-	my $realclean = $self->makemaker_args->{realclean} ||= {};
-	  %$realclean = (
-		%$realclean,
-		FILES => join ' ', grep { length $_ } ($realclean->{FILES} || (), @_),
-	);
-}
-
-sub libs {
-	my $self = shift;
-	my $libs = ref $_[0] ? shift : [ shift ];
-	$self->makemaker_args( LIBS => $libs );
-}
-
-sub inc {
-	my $self = shift;
-	$self->makemaker_args( INC => shift );
-}
-
-sub _wanted_t {
-}
-
-sub tests_recursive {
-	my $self = shift;
-	my $dir = shift || 't';
-	unless ( -d $dir ) {
-		die "tests_recursive dir '$dir' does not exist";
-	}
-	my %tests = map { $_ => 1 } split / /, ($self->tests || '');
-	require File::Find;
-	File::Find::find(
-        sub { /\.t$/ and -f $_ and $tests{"$File::Find::dir/*.t"} = 1 },
-        $dir
-    );
-	$self->tests( join ' ', sort keys %tests );
-}
-
-sub write {
-	my $self = shift;
-	die "&Makefile->write() takes no arguments\n" if @_;
-
-	# Check the current Perl version
-	my $perl_version = $self->perl_version;
-	if ( $perl_version ) {
-		eval "use $perl_version; 1"
-			or die "ERROR: perl: Version $] is installed, "
-			. "but we need version >= $perl_version";
-	}
-
-	# Make sure we have a new enough MakeMaker
-	require ExtUtils::MakeMaker;
-
-	if ( $perl_version and $self->_cmp($perl_version, '5.006') >= 0 ) {
-		# This previous attempted to inherit the version of
-		# ExtUtils::MakeMaker in use by the module author, but this
-		# was found to be untenable as some authors build releases
-		# using future dev versions of EU:MM that nobody else has.
-		# Instead, #toolchain suggests we use 6.59 which is the most
-		# stable version on CPAN at time of writing and is, to quote
-		# ribasushi, "not terminally fucked, > and tested enough".
-		# TODO: We will now need to maintain this over time to push
-		# the version up as new versions are released.
-		$self->build_requires(     'ExtUtils::MakeMaker' => 6.59 );
-		$self->configure_requires( 'ExtUtils::MakeMaker' => 6.59 );
-	} else {
-		# Allow legacy-compatibility with 5.005 by depending on the
-		# most recent EU:MM that supported 5.005.
-		$self->build_requires(     'ExtUtils::MakeMaker' => 6.36 );
-		$self->configure_requires( 'ExtUtils::MakeMaker' => 6.36 );
-	}
-
-	# Generate the MakeMaker params
-	my $args = $self->makemaker_args;
-	$args->{DISTNAME} = $self->name;
-	$args->{NAME}     = $self->module_name || $self->name;
-	$args->{NAME}     =~ s/-/::/g;
-	$args->{VERSION}  = $self->version or die <<'EOT';
-ERROR: Can't determine distribution version. Please specify it
-explicitly via 'version' in Makefile.PL, or set a valid $VERSION
-in a module, and provide its file path via 'version_from' (or
-'all_from' if you prefer) in Makefile.PL.
-EOT
-
-	if ( $self->tests ) {
-		my @tests = split ' ', $self->tests;
-		my %seen;
-		$args->{test} = {
-			TESTS => (join ' ', grep {!$seen{$_}++} @tests),
-		};
-    } elsif ( $Module::Install::ExtraTests::use_extratests ) {
-        # Module::Install::ExtraTests doesn't set $self->tests and does its own tests via harness.
-        # So, just ignore our xt tests here.
-	} elsif ( -d 'xt' and ($Module::Install::AUTHOR or $ENV{RELEASE_TESTING}) ) {
-		$args->{test} = {
-			TESTS => join( ' ', map { "$_/*.t" } grep { -d $_ } qw{ t xt } ),
-		};
-	}
-	if ( $] >= 5.005 ) {
-		$args->{ABSTRACT} = $self->abstract;
-		$args->{AUTHOR}   = join ', ', @{$self->author || []};
-	}
-	if ( $self->makemaker(6.10) ) {
-		$args->{NO_META}   = 1;
-		#$args->{NO_MYMETA} = 1;
-	}
-	if ( $self->makemaker(6.17) and $self->sign ) {
-		$args->{SIGN} = 1;
-	}
-	unless ( $self->is_admin ) {
-		delete $args->{SIGN};
-	}
-	if ( $self->makemaker(6.31) and $self->license ) {
-		$args->{LICENSE} = $self->license;
-	}
-
-	my $prereq = ($args->{PREREQ_PM} ||= {});
-	%$prereq = ( %$prereq,
-		map { @$_ } # flatten [module => version]
-		map { @$_ }
-		grep $_,
-		($self->requires)
-	);
-
-	# Remove any reference to perl, PREREQ_PM doesn't support it
-	delete $args->{PREREQ_PM}->{perl};
-
-	# Merge both kinds of requires into BUILD_REQUIRES
-	my $build_prereq = ($args->{BUILD_REQUIRES} ||= {});
-	%$build_prereq = ( %$build_prereq,
-		map { @$_ } # flatten [module => version]
-		map { @$_ }
-		grep $_,
-		($self->configure_requires, $self->build_requires)
-	);
-
-	# Remove any reference to perl, BUILD_REQUIRES doesn't support it
-	delete $args->{BUILD_REQUIRES}->{perl};
-
-	# Delete bundled dists from prereq_pm, add it to Makefile DIR
-	my $subdirs = ($args->{DIR} || []);
-	if ($self->bundles) {
-		my %processed;
-		foreach my $bundle (@{ $self->bundles }) {
-			my ($mod_name, $dist_dir) = @$bundle;
-			delete $prereq->{$mod_name};
-			$dist_dir = File::Basename::basename($dist_dir); # dir for building this module
-			if (not exists $processed{$dist_dir}) {
-				if (-d $dist_dir) {
-					# List as sub-directory to be processed by make
-					push @$subdirs, $dist_dir;
-				}
-				# Else do nothing: the module is already present on the system
-				$processed{$dist_dir} = undef;
-			}
-		}
-	}
-
-	unless ( $self->makemaker('6.55_03') ) {
-		%$prereq = (%$prereq,%$build_prereq);
-		delete $args->{BUILD_REQUIRES};
-	}
-
-	if ( my $perl_version = $self->perl_version ) {
-		eval "use $perl_version; 1"
-			or die "ERROR: perl: Version $] is installed, "
-			. "but we need version >= $perl_version";
-
-		if ( $self->makemaker(6.48) ) {
-			$args->{MIN_PERL_VERSION} = $perl_version;
-		}
-	}
-
-	if ($self->installdirs) {
-		warn qq{old INSTALLDIRS (probably set by makemaker_args) is overriden by installdirs\n} if $args->{INSTALLDIRS};
-		$args->{INSTALLDIRS} = $self->installdirs;
-	}
-
-	my %args = map {
-		( $_ => $args->{$_} ) } grep {defined($args->{$_} )
-	} keys %$args;
-
-	my $user_preop = delete $args{dist}->{PREOP};
-	if ( my $preop = $self->admin->preop($user_preop) ) {
-		foreach my $key ( keys %$preop ) {
-			$args{dist}->{$key} = $preop->{$key};
-		}
-	}
-
-	my $mm = ExtUtils::MakeMaker::WriteMakefile(%args);
-	$self->fix_up_makefile($mm->{FIRST_MAKEFILE} || 'Makefile');
-}
-
-sub fix_up_makefile {
-	my $self          = shift;
-	my $makefile_name = shift;
-	my $top_class     = ref($self->_top) || '';
-	my $top_version   = $self->_top->VERSION || '';
-
-	my $preamble = $self->preamble
-		? "# Preamble by $top_class $top_version\n"
-			. $self->preamble
-		: '';
-	my $postamble = "# Postamble by $top_class $top_version\n"
-		. ($self->postamble || '');
-
-	local *MAKEFILE;
-	open MAKEFILE, "+< $makefile_name" or die "fix_up_makefile: Couldn't open $makefile_name: $!";
-	eval { flock MAKEFILE, LOCK_EX };
-	my $makefile = do { local $/; <MAKEFILE> };
-
-	$makefile =~ s/\b(test_harness\(\$\(TEST_VERBOSE\), )/$1'inc', /;
-	$makefile =~ s/( -I\$\(INST_ARCHLIB\))/ -Iinc$1/g;
-	$makefile =~ s/( "-I\$\(INST_LIB\)")/ "-Iinc"$1/g;
-	$makefile =~ s/^(FULLPERL = .*)/$1 "-Iinc"/m;
-	$makefile =~ s/^(PERL = .*)/$1 "-Iinc"/m;
-
-	# Module::Install will never be used to build the Core Perl
-	# Sometimes PERL_LIB and PERL_ARCHLIB get written anyway, which breaks
-	# PREFIX/PERL5LIB, and thus, install_share. Blank them if they exist
-	$makefile =~ s/^PERL_LIB = .+/PERL_LIB =/m;
-	#$makefile =~ s/^PERL_ARCHLIB = .+/PERL_ARCHLIB =/m;
-
-	# Perl 5.005 mentions PERL_LIB explicitly, so we have to remove that as well.
-	$makefile =~ s/(\"?)-I\$\(PERL_LIB\)\1//g;
-
-	# XXX - This is currently unused; not sure if it breaks other MM-users
-	# $makefile =~ s/^pm_to_blib\s+:\s+/pm_to_blib :: /mg;
-
-	seek MAKEFILE, 0, SEEK_SET;
-	truncate MAKEFILE, 0;
-	print MAKEFILE  "$preamble$makefile$postamble" or die $!;
-	close MAKEFILE  or die $!;
-
-	1;
-}
-
-sub preamble {
-	my ($self, $text) = @_;
-	$self->{preamble} = $text . $self->{preamble} if defined $text;
-	$self->{preamble};
-}
-
-sub postamble {
-	my ($self, $text) = @_;
-	$self->{postamble} ||= $self->admin->postamble;
-	$self->{postamble} .= $text if defined $text;
-	$self->{postamble}
-}
-
-1;
-
-__END__
-
-#line 544
@@ -1,722 +0,0 @@
-#line 1
-package Module::Install::Metadata;
-
-use strict 'vars';
-use Module::Install::Base ();
-
-use vars qw{$VERSION @ISA $ISCORE};
-BEGIN {
-	$VERSION = '1.06';
-	@ISA     = 'Module::Install::Base';
-	$ISCORE  = 1;
-}
-
-my @boolean_keys = qw{
-	sign
-};
-
-my @scalar_keys = qw{
-	name
-	module_name
-	abstract
-	version
-	distribution_type
-	tests
-	installdirs
-};
-
-my @tuple_keys = qw{
-	configure_requires
-	build_requires
-	requires
-	recommends
-	bundles
-	resources
-};
-
-my @resource_keys = qw{
-	homepage
-	bugtracker
-	repository
-};
-
-my @array_keys = qw{
-	keywords
-	author
-};
-
-*authors = \&author;
-
-sub Meta              { shift          }
-sub Meta_BooleanKeys  { @boolean_keys  }
-sub Meta_ScalarKeys   { @scalar_keys   }
-sub Meta_TupleKeys    { @tuple_keys    }
-sub Meta_ResourceKeys { @resource_keys }
-sub Meta_ArrayKeys    { @array_keys    }
-
-foreach my $key ( @boolean_keys ) {
-	*$key = sub {
-		my $self = shift;
-		if ( defined wantarray and not @_ ) {
-			return $self->{values}->{$key};
-		}
-		$self->{values}->{$key} = ( @_ ? $_[0] : 1 );
-		return $self;
-	};
-}
-
-foreach my $key ( @scalar_keys ) {
-	*$key = sub {
-		my $self = shift;
-		return $self->{values}->{$key} if defined wantarray and !@_;
-		$self->{values}->{$key} = shift;
-		return $self;
-	};
-}
-
-foreach my $key ( @array_keys ) {
-	*$key = sub {
-		my $self = shift;
-		return $self->{values}->{$key} if defined wantarray and !@_;
-		$self->{values}->{$key} ||= [];
-		push @{$self->{values}->{$key}}, @_;
-		return $self;
-	};
-}
-
-foreach my $key ( @resource_keys ) {
-	*$key = sub {
-		my $self = shift;
-		unless ( @_ ) {
-			return () unless $self->{values}->{resources};
-			return map  { $_->[1] }
-			       grep { $_->[0] eq $key }
-			       @{ $self->{values}->{resources} };
-		}
-		return $self->{values}->{resources}->{$key} unless @_;
-		my $uri = shift or die(
-			"Did not provide a value to $key()"
-		);
-		$self->resources( $key => $uri );
-		return 1;
-	};
-}
-
-foreach my $key ( grep { $_ ne "resources" } @tuple_keys) {
-	*$key = sub {
-		my $self = shift;
-		return $self->{values}->{$key} unless @_;
-		my @added;
-		while ( @_ ) {
-			my $module  = shift or last;
-			my $version = shift || 0;
-			push @added, [ $module, $version ];
-		}
-		push @{ $self->{values}->{$key} }, @added;
-		return map {@$_} @added;
-	};
-}
-
-# Resource handling
-my %lc_resource = map { $_ => 1 } qw{
-	homepage
-	license
-	bugtracker
-	repository
-};
-
-sub resources {
-	my $self = shift;
-	while ( @_ ) {
-		my $name  = shift or last;
-		my $value = shift or next;
-		if ( $name eq lc $name and ! $lc_resource{$name} ) {
-			die("Unsupported reserved lowercase resource '$name'");
-		}
-		$self->{values}->{resources} ||= [];
-		push @{ $self->{values}->{resources} }, [ $name, $value ];
-	}
-	$self->{values}->{resources};
-}
-
-# Aliases for build_requires that will have alternative
-# meanings in some future version of META.yml.
-sub test_requires     { shift->build_requires(@_) }
-sub install_requires  { shift->build_requires(@_) }
-
-# Aliases for installdirs options
-sub install_as_core   { $_[0]->installdirs('perl')   }
-sub install_as_cpan   { $_[0]->installdirs('site')   }
-sub install_as_site   { $_[0]->installdirs('site')   }
-sub install_as_vendor { $_[0]->installdirs('vendor') }
-
-sub dynamic_config {
-	my $self  = shift;
-	my $value = @_ ? shift : 1;
-	if ( $self->{values}->{dynamic_config} ) {
-		# Once dynamic we never change to static, for safety
-		return 0;
-	}
-	$self->{values}->{dynamic_config} = $value ? 1 : 0;
-	return 1;
-}
-
-# Convenience command
-sub static_config {
-	shift->dynamic_config(0);
-}
-
-sub perl_version {
-	my $self = shift;
-	return $self->{values}->{perl_version} unless @_;
-	my $version = shift or die(
-		"Did not provide a value to perl_version()"
-	);
-
-	# Normalize the version
-	$version = $self->_perl_version($version);
-
-	# We don't support the really old versions
-	unless ( $version >= 5.005 ) {
-		die "Module::Install only supports 5.005 or newer (use ExtUtils::MakeMaker)\n";
-	}
-
-	$self->{values}->{perl_version} = $version;
-}
-
-sub all_from {
-	my ( $self, $file ) = @_;
-
-	unless ( defined($file) ) {
-		my $name = $self->name or die(
-			"all_from called with no args without setting name() first"
-		);
-		$file = join('/', 'lib', split(/-/, $name)) . '.pm';
-		$file =~ s{.*/}{} unless -e $file;
-		unless ( -e $file ) {
-			die("all_from cannot find $file from $name");
-		}
-	}
-	unless ( -f $file ) {
-		die("The path '$file' does not exist, or is not a file");
-	}
-
-	$self->{values}{all_from} = $file;
-
-	# Some methods pull from POD instead of code.
-	# If there is a matching .pod, use that instead
-	my $pod = $file;
-	$pod =~ s/\.pm$/.pod/i;
-	$pod = $file unless -e $pod;
-
-	# Pull the different values
-	$self->name_from($file)         unless $self->name;
-	$self->version_from($file)      unless $self->version;
-	$self->perl_version_from($file) unless $self->perl_version;
-	$self->author_from($pod)        unless @{$self->author || []};
-	$self->license_from($pod)       unless $self->license;
-	$self->abstract_from($pod)      unless $self->abstract;
-
-	return 1;
-}
-
-sub provides {
-	my $self     = shift;
-	my $provides = ( $self->{values}->{provides} ||= {} );
-	%$provides = (%$provides, @_) if @_;
-	return $provides;
-}
-
-sub auto_provides {
-	my $self = shift;
-	return $self unless $self->is_admin;
-	unless (-e 'MANIFEST') {
-		warn "Cannot deduce auto_provides without a MANIFEST, skipping\n";
-		return $self;
-	}
-	# Avoid spurious warnings as we are not checking manifest here.
-	local $SIG{__WARN__} = sub {1};
-	require ExtUtils::Manifest;
-	local *ExtUtils::Manifest::manicheck = sub { return };
-
-	require Module::Build;
-	my $build = Module::Build->new(
-		dist_name    => $self->name,
-		dist_version => $self->version,
-		license      => $self->license,
-	);
-	$self->provides( %{ $build->find_dist_packages || {} } );
-}
-
-sub feature {
-	my $self     = shift;
-	my $name     = shift;
-	my $features = ( $self->{values}->{features} ||= [] );
-	my $mods;
-
-	if ( @_ == 1 and ref( $_[0] ) ) {
-		# The user used ->feature like ->features by passing in the second
-		# argument as a reference.  Accomodate for that.
-		$mods = $_[0];
-	} else {
-		$mods = \@_;
-	}
-
-	my $count = 0;
-	push @$features, (
-		$name => [
-			map {
-				ref($_) ? ( ref($_) eq 'HASH' ) ? %$_ : @$_ : $_
-			} @$mods
-		]
-	);
-
-	return @$features;
-}
-
-sub features {
-	my $self = shift;
-	while ( my ( $name, $mods ) = splice( @_, 0, 2 ) ) {
-		$self->feature( $name, @$mods );
-	}
-	return $self->{values}->{features}
-		? @{ $self->{values}->{features} }
-		: ();
-}
-
-sub no_index {
-	my $self = shift;
-	my $type = shift;
-	push @{ $self->{values}->{no_index}->{$type} }, @_ if $type;
-	return $self->{values}->{no_index};
-}
-
-sub read {
-	my $self = shift;
-	$self->include_deps( 'YAML::Tiny', 0 );
-
-	require YAML::Tiny;
-	my $data = YAML::Tiny::LoadFile('META.yml');
-
-	# Call methods explicitly in case user has already set some values.
-	while ( my ( $key, $value ) = each %$data ) {
-		next unless $self->can($key);
-		if ( ref $value eq 'HASH' ) {
-			while ( my ( $module, $version ) = each %$value ) {
-				$self->can($key)->($self, $module => $version );
-			}
-		} else {
-			$self->can($key)->($self, $value);
-		}
-	}
-	return $self;
-}
-
-sub write {
-	my $self = shift;
-	return $self unless $self->is_admin;
-	$self->admin->write_meta;
-	return $self;
-}
-
-sub version_from {
-	require ExtUtils::MM_Unix;
-	my ( $self, $file ) = @_;
-	$self->version( ExtUtils::MM_Unix->parse_version($file) );
-
-	# for version integrity check
-	$self->makemaker_args( VERSION_FROM => $file );
-}
-
-sub abstract_from {
-	require ExtUtils::MM_Unix;
-	my ( $self, $file ) = @_;
-	$self->abstract(
-		bless(
-			{ DISTNAME => $self->name },
-			'ExtUtils::MM_Unix'
-		)->parse_abstract($file)
-	);
-}
-
-# Add both distribution and module name
-sub name_from {
-	my ($self, $file) = @_;
-	if (
-		Module::Install::_read($file) =~ m/
-		^ \s*
-		package \s*
-		([\w:]+)
-		\s* ;
-		/ixms
-	) {
-		my ($name, $module_name) = ($1, $1);
-		$name =~ s{::}{-}g;
-		$self->name($name);
-		unless ( $self->module_name ) {
-			$self->module_name($module_name);
-		}
-	} else {
-		die("Cannot determine name from $file\n");
-	}
-}
-
-sub _extract_perl_version {
-	if (
-		$_[0] =~ m/
-		^\s*
-		(?:use|require) \s*
-		v?
-		([\d_\.]+)
-		\s* ;
-		/ixms
-	) {
-		my $perl_version = $1;
-		$perl_version =~ s{_}{}g;
-		return $perl_version;
-	} else {
-		return;
-	}
-}
-
-sub perl_version_from {
-	my $self = shift;
-	my $perl_version=_extract_perl_version(Module::Install::_read($_[0]));
-	if ($perl_version) {
-		$self->perl_version($perl_version);
-	} else {
-		warn "Cannot determine perl version info from $_[0]\n";
-		return;
-	}
-}
-
-sub author_from {
-	my $self    = shift;
-	my $content = Module::Install::_read($_[0]);
-	if ($content =~ m/
-		=head \d \s+ (?:authors?)\b \s*
-		([^\n]*)
-		|
-		=head \d \s+ (?:licen[cs]e|licensing|copyright|legal)\b \s*
-		.*? copyright .*? \d\d\d[\d.]+ \s* (?:\bby\b)? \s*
-		([^\n]*)
-	/ixms) {
-		my $author = $1 || $2;
-
-		# XXX: ugly but should work anyway...
-		if (eval "require Pod::Escapes; 1") {
-			# Pod::Escapes has a mapping table.
-			# It's in core of perl >= 5.9.3, and should be installed
-			# as one of the Pod::Simple's prereqs, which is a prereq
-			# of Pod::Text 3.x (see also below).
-			$author =~ s{ E<( (\d+) | ([A-Za-z]+) )> }
-			{
-				defined $2
-				? chr($2)
-				: defined $Pod::Escapes::Name2character_number{$1}
-				? chr($Pod::Escapes::Name2character_number{$1})
-				: do {
-					warn "Unknown escape: E<$1>";
-					"E<$1>";
-				};
-			}gex;
-		}
-		elsif (eval "require Pod::Text; 1" && $Pod::Text::VERSION < 3) {
-			# Pod::Text < 3.0 has yet another mapping table,
-			# though the table name of 2.x and 1.x are different.
-			# (1.x is in core of Perl < 5.6, 2.x is in core of
-			# Perl < 5.9.3)
-			my $mapping = ($Pod::Text::VERSION < 2)
-				? \%Pod::Text::HTML_Escapes
-				: \%Pod::Text::ESCAPES;
-			$author =~ s{ E<( (\d+) | ([A-Za-z]+) )> }
-			{
-				defined $2
-				? chr($2)
-				: defined $mapping->{$1}
-				? $mapping->{$1}
-				: do {
-					warn "Unknown escape: E<$1>";
-					"E<$1>";
-				};
-			}gex;
-		}
-		else {
-			$author =~ s{E<lt>}{<}g;
-			$author =~ s{E<gt>}{>}g;
-		}
-		$self->author($author);
-	} else {
-		warn "Cannot determine author info from $_[0]\n";
-	}
-}
-
-#Stolen from M::B
-my %license_urls = (
-    perl         => 'http://dev.perl.org/licenses/',
-    apache       => 'http://apache.org/licenses/LICENSE-2.0',
-    apache_1_1   => 'http://apache.org/licenses/LICENSE-1.1',
-    artistic     => 'http://opensource.org/licenses/artistic-license.php',
-    artistic_2   => 'http://opensource.org/licenses/artistic-license-2.0.php',
-    lgpl         => 'http://opensource.org/licenses/lgpl-license.php',
-    lgpl2        => 'http://opensource.org/licenses/lgpl-2.1.php',
-    lgpl3        => 'http://opensource.org/licenses/lgpl-3.0.html',
-    bsd          => 'http://opensource.org/licenses/bsd-license.php',
-    gpl          => 'http://opensource.org/licenses/gpl-license.php',
-    gpl2         => 'http://opensource.org/licenses/gpl-2.0.php',
-    gpl3         => 'http://opensource.org/licenses/gpl-3.0.html',
-    mit          => 'http://opensource.org/licenses/mit-license.php',
-    mozilla      => 'http://opensource.org/licenses/mozilla1.1.php',
-    open_source  => undef,
-    unrestricted => undef,
-    restrictive  => undef,
-    unknown      => undef,
-);
-
-sub license {
-	my $self = shift;
-	return $self->{values}->{license} unless @_;
-	my $license = shift or die(
-		'Did not provide a value to license()'
-	);
-	$license = __extract_license($license) || lc $license;
-	$self->{values}->{license} = $license;
-
-	# Automatically fill in license URLs
-	if ( $license_urls{$license} ) {
-		$self->resources( license => $license_urls{$license} );
-	}
-
-	return 1;
-}
-
-sub _extract_license {
-	my $pod = shift;
-	my $matched;
-	return __extract_license(
-		($matched) = $pod =~ m/
-			(=head \d \s+ L(?i:ICEN[CS]E|ICENSING)\b.*?)
-			(=head \d.*|=cut.*|)\z
-		/xms
-	) || __extract_license(
-		($matched) = $pod =~ m/
-			(=head \d \s+ (?:C(?i:OPYRIGHTS?)|L(?i:EGAL))\b.*?)
-			(=head \d.*|=cut.*|)\z
-		/xms
-	);
-}
-
-sub __extract_license {
-	my $license_text = shift or return;
-	my @phrases      = (
-		'(?:under )?the same (?:terms|license) as (?:perl|the perl (?:\d )?programming language)' => 'perl', 1,
-		'(?:under )?the terms of (?:perl|the perl programming language) itself' => 'perl', 1,
-		'Artistic and GPL'                   => 'perl',         1,
-		'GNU general public license'         => 'gpl',          1,
-		'GNU public license'                 => 'gpl',          1,
-		'GNU lesser general public license'  => 'lgpl',         1,
-		'GNU lesser public license'          => 'lgpl',         1,
-		'GNU library general public license' => 'lgpl',         1,
-		'GNU library public license'         => 'lgpl',         1,
-		'GNU Free Documentation license'     => 'unrestricted', 1,
-		'GNU Affero General Public License'  => 'open_source',  1,
-		'(?:Free)?BSD license'               => 'bsd',          1,
-		'Artistic license 2\.0'              => 'artistic_2',   1,
-		'Artistic license'                   => 'artistic',     1,
-		'Apache (?:Software )?license'       => 'apache',       1,
-		'GPL'                                => 'gpl',          1,
-		'LGPL'                               => 'lgpl',         1,
-		'BSD'                                => 'bsd',          1,
-		'Artistic'                           => 'artistic',     1,
-		'MIT'                                => 'mit',          1,
-		'Mozilla Public License'             => 'mozilla',      1,
-		'Q Public License'                   => 'open_source',  1,
-		'OpenSSL License'                    => 'unrestricted', 1,
-		'SSLeay License'                     => 'unrestricted', 1,
-		'zlib License'                       => 'open_source',  1,
-		'proprietary'                        => 'proprietary',  0,
-	);
-	while ( my ($pattern, $license, $osi) = splice(@phrases, 0, 3) ) {
-		$pattern =~ s#\s+#\\s+#gs;
-		if ( $license_text =~ /\b$pattern\b/i ) {
-			return $license;
-		}
-	}
-	return '';
-}
-
-sub license_from {
-	my $self = shift;
-	if (my $license=_extract_license(Module::Install::_read($_[0]))) {
-		$self->license($license);
-	} else {
-		warn "Cannot determine license info from $_[0]\n";
-		return 'unknown';
-	}
-}
-
-sub _extract_bugtracker {
-	my @links   = $_[0] =~ m#L<(
-	 https?\Q://rt.cpan.org/\E[^>]+|
-	 https?\Q://github.com/\E[\w_]+/[\w_]+/issues|
-	 https?\Q://code.google.com/p/\E[\w_\-]+/issues/list
-	 )>#gx;
-	my %links;
-	@links{@links}=();
-	@links=keys %links;
-	return @links;
-}
-
-sub bugtracker_from {
-	my $self    = shift;
-	my $content = Module::Install::_read($_[0]);
-	my @links   = _extract_bugtracker($content);
-	unless ( @links ) {
-		warn "Cannot determine bugtracker info from $_[0]\n";
-		return 0;
-	}
-	if ( @links > 1 ) {
-		warn "Found more than one bugtracker link in $_[0]\n";
-		return 0;
-	}
-
-	# Set the bugtracker
-	bugtracker( $links[0] );
-	return 1;
-}
-
-sub requires_from {
-	my $self     = shift;
-	my $content  = Module::Install::_readperl($_[0]);
-	my @requires = $content =~ m/^use\s+([^\W\d]\w*(?:::\w+)*)\s+(v?[\d\.]+)/mg;
-	while ( @requires ) {
-		my $module  = shift @requires;
-		my $version = shift @requires;
-		$self->requires( $module => $version );
-	}
-}
-
-sub test_requires_from {
-	my $self     = shift;
-	my $content  = Module::Install::_readperl($_[0]);
-	my @requires = $content =~ m/^use\s+([^\W\d]\w*(?:::\w+)*)\s+([\d\.]+)/mg;
-	while ( @requires ) {
-		my $module  = shift @requires;
-		my $version = shift @requires;
-		$self->test_requires( $module => $version );
-	}
-}
-
-# Convert triple-part versions (eg, 5.6.1 or 5.8.9) to
-# numbers (eg, 5.006001 or 5.008009).
-# Also, convert double-part versions (eg, 5.8)
-sub _perl_version {
-	my $v = $_[-1];
-	$v =~ s/^([1-9])\.([1-9]\d?\d?)$/sprintf("%d.%03d",$1,$2)/e;
-	$v =~ s/^([1-9])\.([1-9]\d?\d?)\.(0|[1-9]\d?\d?)$/sprintf("%d.%03d%03d",$1,$2,$3 || 0)/e;
-	$v =~ s/(\.\d\d\d)000$/$1/;
-	$v =~ s/_.+$//;
-	if ( ref($v) ) {
-		# Numify
-		$v = $v + 0;
-	}
-	return $v;
-}
-
-sub add_metadata {
-    my $self = shift;
-    my %hash = @_;
-    for my $key (keys %hash) {
-        warn "add_metadata: $key is not prefixed with 'x_'.\n" .
-             "Use appopriate function to add non-private metadata.\n" unless $key =~ /^x_/;
-        $self->{values}->{$key} = $hash{$key};
-    }
-}
-
-
-######################################################################
-# MYMETA Support
-
-sub WriteMyMeta {
-	die "WriteMyMeta has been deprecated";
-}
-
-sub write_mymeta_yaml {
-	my $self = shift;
-
-	# We need YAML::Tiny to write the MYMETA.yml file
-	unless ( eval { require YAML::Tiny; 1; } ) {
-		return 1;
-	}
-
-	# Generate the data
-	my $meta = $self->_write_mymeta_data or return 1;
-
-	# Save as the MYMETA.yml file
-	print "Writing MYMETA.yml\n";
-	YAML::Tiny::DumpFile('MYMETA.yml', $meta);
-}
-
-sub write_mymeta_json {
-	my $self = shift;
-
-	# We need JSON to write the MYMETA.json file
-	unless ( eval { require JSON; 1; } ) {
-		return 1;
-	}
-
-	# Generate the data
-	my $meta = $self->_write_mymeta_data or return 1;
-
-	# Save as the MYMETA.yml file
-	print "Writing MYMETA.json\n";
-	Module::Install::_write(
-		'MYMETA.json',
-		JSON->new->pretty(1)->canonical->encode($meta),
-	);
-}
-
-sub _write_mymeta_data {
-	my $self = shift;
-
-	# If there's no existing META.yml there is nothing we can do
-	return undef unless -f 'META.yml';
-
-	# We need Parse::CPAN::Meta to load the file
-	unless ( eval { require Parse::CPAN::Meta; 1; } ) {
-		return undef;
-	}
-
-	# Merge the perl version into the dependencies
-	my $val  = $self->Meta->{values};
-	my $perl = delete $val->{perl_version};
-	if ( $perl ) {
-		$val->{requires} ||= [];
-		my $requires = $val->{requires};
-
-		# Canonize to three-dot version after Perl 5.6
-		if ( $perl >= 5.006 ) {
-			$perl =~ s{^(\d+)\.(\d\d\d)(\d*)}{join('.', $1, int($2||0), int($3||0))}e
-		}
-		unshift @$requires, [ perl => $perl ];
-	}
-
-	# Load the advisory META.yml file
-	my @yaml = Parse::CPAN::Meta::LoadFile('META.yml');
-	my $meta = $yaml[0];
-
-	# Overwrite the non-configure dependency hashs
-	delete $meta->{requires};
-	delete $meta->{build_requires};
-	delete $meta->{recommends};
-	if ( exists $val->{requires} ) {
-		$meta->{requires} = { map { @$_ } @{ $val->{requires} } };
-	}
-	if ( exists $val->{build_requires} ) {
-		$meta->{build_requires} = { map { @$_ } @{ $val->{build_requires} } };
-	}
-
-	return $meta;
-}
-
-1;
@@ -1,323 +0,0 @@
-#line 1
-##
-# name:      Module::Install::Package
-# abstract:  Module::Install support for Module::Package
-# author:    Ingy döt Net <ingy@cpan.org>
-# license:   perl
-# copyright: 2011
-# see:
-# - Module::Package
-
-# This module contains the Module::Package logic that must be available to
-# both the Author and the End User. Author-only logic goes in a
-# Module::Package::Plugin subclass.
-package Module::Install::Package;
-use strict;
-use Module::Install::Base;
-use vars qw'@ISA $VERSION';
-@ISA = 'Module::Install::Base';
-$VERSION = '0.30';
-
-#-----------------------------------------------------------------------------#
-# XXX BOOTBUGHACK
-# This is here to try to get us out of Module-Package-0.11 cpantesters hell...
-# Remove this when the situation has blown over.
-sub pkg {
-    *inc::Module::Package::VERSION = sub { $VERSION };
-    my $self = shift;
-    $self->module_package_internals_init($@);
-}
-
-#-----------------------------------------------------------------------------#
-# We allow the author to specify key/value options after the plugin. These
-# options need to be available both at author time and install time.
-#-----------------------------------------------------------------------------#
-# OO accessor for command line options:
-sub package_options {
-    @_>1?($_[0]->{package_options}=$_[1]):$_[0]->{package_options}}
-
-my $default_options = {
-    deps_list => 1,
-    install_bin => 1,
-    install_share => 1,
-    manifest_skip => 1,
-    requires_from => 1,
-};
-
-#-----------------------------------------------------------------------------#
-# Module::Install plugin directives. Use long, ugly names to not pollute the
-# Module::Install plugin namespace. These are only intended to be called from
-# Module::Package.
-#-----------------------------------------------------------------------------#
-
-# Module::Package starts off life as a normal call to this Module::Install
-# plugin directive:
-my $module_install_plugin;
-my $module_package_plugin;
-my $module_package_dist_plugin;
-# XXX ARGVHACK This @argv thing is a temporary fix for an ugly bug somewhere in the
-# Wikitext module usage.
-my @argv;
-sub module_package_internals_init {
-    my $self = $module_install_plugin = shift;
-    my ($plugin_spec, %options) = @_;
-    $self->package_options({%$default_options, %options});
-
-    if ($module_install_plugin->is_admin) {
-        $module_package_plugin = $self->_load_plugin($plugin_spec);
-        $module_package_plugin->mi($module_install_plugin);
-        $module_package_plugin->version_check($VERSION);
-    }
-    else {
-        $module_package_dist_plugin = $self->_load_dist_plugin($plugin_spec);
-        $module_package_dist_plugin->mi($module_install_plugin) if ref $module_package_dist_plugin;
-    }
-    # NOTE - This is the point in time where the body of Makefile.PL runs...
-    return;
-
-    sub INIT {
-        return unless $module_install_plugin;
-        return if $Module::Package::ERROR;
-        eval {
-            if ($module_install_plugin->is_admin) {
-                $module_package_plugin->initial();
-                $module_package_plugin->main();
-            }
-            else {
-                $module_install_plugin->_initial();
-                $module_package_dist_plugin->_initial() if ref $module_package_dist_plugin;
-                $module_install_plugin->_main();
-                $module_package_dist_plugin->_main() if ref $module_package_dist_plugin;
-            }
-        };
-        if ($@) {
-            $Module::Package::ERROR = $@;
-            die $@;
-        }
-        @argv = @ARGV; # XXX ARGVHACK
-    }
-
-    # If this Module::Install plugin was used (by Module::Package) then wrap
-    # up any loose ends. This will get called after Makefile.PL has completed.
-    sub END {
-        @ARGV = @argv; # XXX ARGVHACK
-        return unless $module_install_plugin;
-        return if $Module::Package::ERROR;
-        $module_package_plugin
-            ? do {
-                $module_package_plugin->final;
-                $module_package_plugin->replicate_module_package;
-            }
-            : do {
-                $module_install_plugin->_final;
-                $module_package_dist_plugin->_final() if ref $module_package_dist_plugin;
-            }
-    }
-}
-
-# Module::Package, Module::Install::Package and Module::Package::Plugin
-# must all have the same version. Seems wise.
-sub module_package_internals_version_check {
-    my ($self, $version) = @_;
-    return if $version < 0.1800001;   # XXX BOOTBUGHACK!!
-    die <<"..." unless $version == $VERSION;
-
-Error! Something has gone awry:
-    Module::Package version=$version is using 
-    Module::Install::Package version=$VERSION
-If you are the author of this module, try upgrading Module::Package.
-Otherwise, please notify the author of this error.
-
-...
-}
-
-# Find and load the author side plugin:
-sub _load_plugin {
-    my ($self, $spec, $namespace) = @_;
-    $spec ||= '';
-    $namespace ||= 'Module::Package';
-    my $version = '';
-    $Module::Package::plugin_version = 0;
-    if ($spec =~ s/\s+(\S+)\s*//) {
-        $version = $1;
-        $Module::Package::plugin_version = $version;
-    }
-    my ($module, $plugin) =
-        not($spec) ? ('Plugin', "Plugin::basic") :
-        ($spec =~ /^\w(\w|::)*$/) ? ($spec, $spec) :
-        ($spec =~ /^:(\w+)$/) ? ('Plugin', "Plugin::$1") :
-        ($spec =~ /^(\S*\w):(\w+)$/) ? ($1, "$1::$2") :
-        die "$spec is invalid";
-    $module = "${namespace}::${module}";
-    $plugin = "${namespace}::${plugin}";
-    eval "use $module $version (); 1" or die $@;
-    return $plugin->new();
-}
-
-# Find and load the user side plugin:
-sub _load_dist_plugin {
-    my ($self, $spec, $namespace) = @_;
-    $spec ||= '';
-    $namespace ||= 'Module::Package::Dist';
-    my $r = eval { $self->_load_plugin($spec, $namespace); };
-    return $r if ref $r;
-    return;
-}
-
-#-----------------------------------------------------------------------------#
-# These are the user side analogs to the author side plugin API calls.
-# Prefix with '_' to not pollute Module::Install plugin space.
-#-----------------------------------------------------------------------------#
-sub _initial {
-    my ($self) = @_;
-}
-
-sub _main {
-    my ($self) = @_;
-}
-
-# NOTE These must match Module::Package::Plugin::final.
-sub _final {
-    my ($self) = @_;
-    $self->_all_from;
-    $self->_requires_from;
-    $self->_install_bin;
-    $self->_install_share;
-    $self->_WriteAll;
-}
-
-#-----------------------------------------------------------------------------#
-# This section is where all the useful code bits go. These bits are needed by
-# both Author and User side runs.
-#-----------------------------------------------------------------------------#
-
-my $all_from = 0;
-sub _all_from {
-    my $self = shift;
-    return if $all_from++;
-    return if $self->name;
-    my $file = shift || "$main::PM" or die "all_from has no file";
-    $self->all_from($file);
-}
-
-my $requires_from = 0;
-sub _requires_from {
-    my $self = shift;
-    return if $requires_from++;
-    return unless $self->package_options->{requires_from};
-    my $file = shift || "$main::PM" or die "requires_from has no file";
-    $self->requires_from($main::PM)
-}
-
-my $install_bin = 0;
-sub _install_bin {
-    my $self = shift;
-    return if $install_bin++;
-    return unless $self->package_options->{install_bin};
-    return unless -d 'bin';
-    my @bin;
-    File::Find::find(sub {
-        return unless -f $_;
-        push @bin, $File::Find::name;
-    }, 'bin');
-    $self->install_script($_) for @bin;
-}
-
-my $install_share = 0;
-sub _install_share {
-    my $self = shift;
-    return if $install_share++;
-    return unless $self->package_options->{install_share};
-    return unless -d 'share';
-    $self->install_share;
-}
-
-my $WriteAll = 0;
-sub _WriteAll {
-    my $self = shift;
-    return if $WriteAll++;
-    $self->WriteAll(@_);
-}
-
-# Base package for Module::Package plugin distributed components.
-package Module::Package::Dist;
-
-sub new {
-    my ($class, %args) = @_;
-    bless \%args, $class;
-}
-
-sub mi {
-    @_ > 1 ? ($_[0]->{mi}=$_[1]) : $_[0]->{mi};
-}
-
-sub _initial {
-    my ($self) = @_;
-}
-
-sub _main {
-    my ($self) = @_;
-}
-
-sub _final {
-    my ($self) = @_;
-}
-
-1;
-
-#-----------------------------------------------------------------------------#
-# Take a guess at the primary .pm and .pod files for 'all_from', and friends.
-# Put them in global magical vars in the main:: namespace.
-#-----------------------------------------------------------------------------#
-package Module::Package::PM;
-use overload '""' => sub {
-    $_[0]->guess_pm unless @{$_[0]};
-    return $_[0]->[0];
-};
-sub set { $_[0]->[0] = $_[1] }
-sub guess_pm {
-    my $pm = '';
-    my $self = shift;
-    if (-e 'META.yml') {
-        open META, 'META.yml' or die "Can't open 'META.yml' for input:\n$!";
-        my $meta = do { local $/; <META> };
-        close META;
-        $meta =~ /^module_name: (\S+)$/m
-            or die "Can't get module_name from META.yml";
-        $pm = $1;
-        $pm =~ s!::!/!g;
-        $pm = "lib/$pm.pm";
-    }
-    else {
-        require File::Find;
-        my @array = ();
-        File::Find::find(sub {
-            return unless /\.pm$/;
-            my $name = $File::Find::name;
-            my $num = ($name =~ s!/+!/!g);
-            my $ary = $array[$num] ||= [];
-            push @$ary, $name;
-        }, 'lib');
-        shift @array while @array and not defined $array[0];
-        die "Can't guess main module" unless @array;
-        (($pm) = sort @{$array[0]}) or
-            die "Can't guess main module";
-    }
-    my $pmc = $pm . 'c';
-    $pm = $pmc if -e $pmc;
-    $self->set($pm);
-}
-$main::PM = bless [$main::PM ? ($main::PM) : ()], __PACKAGE__;
-
-package Module::Package::POD;
-use overload '""' => sub {
-    return $_[0]->[0] if @{$_[0]};
-    (my $pod = "$main::PM") =~ s/\.pm/.pod/
-        or die "Module::Package's \$main::PM value should end in '.pm'";
-    return -e $pod ? $pod : '';
-};
-sub set { $_[0][0] = $_[1] }
-$main::POD = bless [$main::POD ? ($main::POD) : ()], __PACKAGE__;
-
-1;
-
@@ -1,29 +0,0 @@
-#line 1
-package Module::Install::Scripts;
-
-use strict 'vars';
-use Module::Install::Base ();
-
-use vars qw{$VERSION @ISA $ISCORE};
-BEGIN {
-	$VERSION = '1.06';
-	@ISA     = 'Module::Install::Base';
-	$ISCORE  = 1;
-}
-
-sub install_script {
-	my $self = shift;
-	my $args = $self->makemaker_args;
-	my $exe  = $args->{EXE_FILES} ||= [];
-        foreach ( @_ ) {
-		if ( -f $_ ) {
-			push @$exe, $_;
-		} elsif ( -d 'script' and -f "script/$_" ) {
-			push @$exe, "script/$_";
-		} else {
-			die("Cannot find script '$_'");
-		}
-	}
-}
-
-1;
@@ -1,64 +0,0 @@
-#line 1
-package Module::Install::Win32;
-
-use strict;
-use Module::Install::Base ();
-
-use vars qw{$VERSION @ISA $ISCORE};
-BEGIN {
-	$VERSION = '1.06';
-	@ISA     = 'Module::Install::Base';
-	$ISCORE  = 1;
-}
-
-# determine if the user needs nmake, and download it if needed
-sub check_nmake {
-	my $self = shift;
-	$self->load('can_run');
-	$self->load('get_file');
-
-	require Config;
-	return unless (
-		$^O eq 'MSWin32'                     and
-		$Config::Config{make}                and
-		$Config::Config{make} =~ /^nmake\b/i and
-		! $self->can_run('nmake')
-	);
-
-	print "The required 'nmake' executable not found, fetching it...\n";
-
-	require File::Basename;
-	my $rv = $self->get_file(
-		url       => 'http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe',
-		ftp_url   => 'ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe',
-		local_dir => File::Basename::dirname($^X),
-		size      => 51928,
-		run       => 'Nmake15.exe /o > nul',
-		check_for => 'Nmake.exe',
-		remove    => 1,
-	);
-
-	die <<'END_MESSAGE' unless $rv;
-
--------------------------------------------------------------------------------
-
-Since you are using Microsoft Windows, you will need the 'nmake' utility
-before installation. It's available at:
-
-  http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe
-      or
-  ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe
-
-Please download the file manually, save it to a directory in %PATH% (e.g.
-C:\WINDOWS\COMMAND\), then launch the MS-DOS command line shell, "cd" to
-that directory, and run "Nmake15.exe" from there; that will create the
-'nmake.exe' file needed by this module.
-
-You may then resume the installation process described in README.
-
--------------------------------------------------------------------------------
-END_MESSAGE
-
-}
-
-1;
@@ -1,63 +0,0 @@
-#line 1
-package Module::Install::WriteAll;
-
-use strict;
-use Module::Install::Base ();
-
-use vars qw{$VERSION @ISA $ISCORE};
-BEGIN {
-	$VERSION = '1.06';
-	@ISA     = qw{Module::Install::Base};
-	$ISCORE  = 1;
-}
-
-sub WriteAll {
-	my $self = shift;
-	my %args = (
-		meta        => 1,
-		sign        => 0,
-		inline      => 0,
-		check_nmake => 1,
-		@_,
-	);
-
-	$self->sign(1)                if $args{sign};
-	$self->admin->WriteAll(%args) if $self->is_admin;
-
-	$self->check_nmake if $args{check_nmake};
-	unless ( $self->makemaker_args->{PL_FILES} ) {
-		# XXX: This still may be a bit over-defensive...
-		unless ($self->makemaker(6.25)) {
-			$self->makemaker_args( PL_FILES => {} ) if -f 'Build.PL';
-		}
-	}
-
-	# Until ExtUtils::MakeMaker support MYMETA.yml, make sure
-	# we clean it up properly ourself.
-	$self->realclean_files('MYMETA.yml');
-
-	if ( $args{inline} ) {
-		$self->Inline->write;
-	} else {
-		$self->Makefile->write;
-	}
-
-	# The Makefile write process adds a couple of dependencies,
-	# so write the META.yml files after the Makefile.
-	if ( $args{meta} ) {
-		$self->Meta->write;
-	}
-
-	# Experimental support for MYMETA
-	if ( $ENV{X_MYMETA} ) {
-		if ( $ENV{X_MYMETA} eq 'JSON' ) {
-			$self->Meta->write_mymeta_json;
-		} else {
-			$self->Meta->write_mymeta_yaml;
-		}
-	}
-
-	return 1;
-}
-
-1;
@@ -1,470 +0,0 @@
-#line 1
-package Module::Install;
-
-# For any maintainers:
-# The load order for Module::Install is a bit magic.
-# It goes something like this...
-#
-# IF ( host has Module::Install installed, creating author mode ) {
-#     1. Makefile.PL calls "use inc::Module::Install"
-#     2. $INC{inc/Module/Install.pm} set to installed version of inc::Module::Install
-#     3. The installed version of inc::Module::Install loads
-#     4. inc::Module::Install calls "require Module::Install"
-#     5. The ./inc/ version of Module::Install loads
-# } ELSE {
-#     1. Makefile.PL calls "use inc::Module::Install"
-#     2. $INC{inc/Module/Install.pm} set to ./inc/ version of Module::Install
-#     3. The ./inc/ version of Module::Install loads
-# }
-
-use 5.005;
-use strict 'vars';
-use Cwd        ();
-use File::Find ();
-use File::Path ();
-
-use vars qw{$VERSION $MAIN};
-BEGIN {
-	# All Module::Install core packages now require synchronised versions.
-	# This will be used to ensure we don't accidentally load old or
-	# different versions of modules.
-	# This is not enforced yet, but will be some time in the next few
-	# releases once we can make sure it won't clash with custom
-	# Module::Install extensions.
-	$VERSION = '1.06';
-
-	# Storage for the pseudo-singleton
-	$MAIN    = undef;
-
-	*inc::Module::Install::VERSION = *VERSION;
-	@inc::Module::Install::ISA     = __PACKAGE__;
-
-}
-
-sub import {
-	my $class = shift;
-	my $self  = $class->new(@_);
-	my $who   = $self->_caller;
-
-	#-------------------------------------------------------------
-	# all of the following checks should be included in import(),
-	# to allow "eval 'require Module::Install; 1' to test
-	# installation of Module::Install. (RT #51267)
-	#-------------------------------------------------------------
-
-	# Whether or not inc::Module::Install is actually loaded, the
-	# $INC{inc/Module/Install.pm} is what will still get set as long as
-	# the caller loaded module this in the documented manner.
-	# If not set, the caller may NOT have loaded the bundled version, and thus
-	# they may not have a MI version that works with the Makefile.PL. This would
-	# result in false errors or unexpected behaviour. And we don't want that.
-	my $file = join( '/', 'inc', split /::/, __PACKAGE__ ) . '.pm';
-	unless ( $INC{$file} ) { die <<"END_DIE" }
-
-Please invoke ${\__PACKAGE__} with:
-
-	use inc::${\__PACKAGE__};
-
-not:
-
-	use ${\__PACKAGE__};
-
-END_DIE
-
-	# This reportedly fixes a rare Win32 UTC file time issue, but
-	# as this is a non-cross-platform XS module not in the core,
-	# we shouldn't really depend on it. See RT #24194 for detail.
-	# (Also, this module only supports Perl 5.6 and above).
-	eval "use Win32::UTCFileTime" if $^O eq 'MSWin32' && $] >= 5.006;
-
-	# If the script that is loading Module::Install is from the future,
-	# then make will detect this and cause it to re-run over and over
-	# again. This is bad. Rather than taking action to touch it (which
-	# is unreliable on some platforms and requires write permissions)
-	# for now we should catch this and refuse to run.
-	if ( -f $0 ) {
-		my $s = (stat($0))[9];
-
-		# If the modification time is only slightly in the future,
-		# sleep briefly to remove the problem.
-		my $a = $s - time;
-		if ( $a > 0 and $a < 5 ) { sleep 5 }
-
-		# Too far in the future, throw an error.
-		my $t = time;
-		if ( $s > $t ) { die <<"END_DIE" }
-
-Your installer $0 has a modification time in the future ($s > $t).
-
-This is known to create infinite loops in make.
-
-Please correct this, then run $0 again.
-
-END_DIE
-	}
-
-
-	# Build.PL was formerly supported, but no longer is due to excessive
-	# difficulty in implementing every single feature twice.
-	if ( $0 =~ /Build.PL$/i ) { die <<"END_DIE" }
-
-Module::Install no longer supports Build.PL.
-
-It was impossible to maintain duel backends, and has been deprecated.
-
-Please remove all Build.PL files and only use the Makefile.PL installer.
-
-END_DIE
-
-	#-------------------------------------------------------------
-
-	# To save some more typing in Module::Install installers, every...
-	# use inc::Module::Install
-	# ...also acts as an implicit use strict.
-	$^H |= strict::bits(qw(refs subs vars));
-
-	#-------------------------------------------------------------
-
-	unless ( -f $self->{file} ) {
-		foreach my $key (keys %INC) {
-			delete $INC{$key} if $key =~ /Module\/Install/;
-		}
-
-		local $^W;
-		require "$self->{path}/$self->{dispatch}.pm";
-		File::Path::mkpath("$self->{prefix}/$self->{author}");
-		$self->{admin} = "$self->{name}::$self->{dispatch}"->new( _top => $self );
-		$self->{admin}->init;
-		@_ = ($class, _self => $self);
-		goto &{"$self->{name}::import"};
-	}
-
-	local $^W;
-	*{"${who}::AUTOLOAD"} = $self->autoload;
-	$self->preload;
-
-	# Unregister loader and worker packages so subdirs can use them again
-	delete $INC{'inc/Module/Install.pm'};
-	delete $INC{'Module/Install.pm'};
-
-	# Save to the singleton
-	$MAIN = $self;
-
-	return 1;
-}
-
-sub autoload {
-	my $self = shift;
-	my $who  = $self->_caller;
-	my $cwd  = Cwd::cwd();
-	my $sym  = "${who}::AUTOLOAD";
-	$sym->{$cwd} = sub {
-		my $pwd = Cwd::cwd();
-		if ( my $code = $sym->{$pwd} ) {
-			# Delegate back to parent dirs
-			goto &$code unless $cwd eq $pwd;
-		}
-		unless ($$sym =~ s/([^:]+)$//) {
-			# XXX: it looks like we can't retrieve the missing function
-			# via $$sym (usually $main::AUTOLOAD) in this case.
-			# I'm still wondering if we should slurp Makefile.PL to
-			# get some context or not ...
-			my ($package, $file, $line) = caller;
-			die <<"EOT";
-Unknown function is found at $file line $line.
-Execution of $file aborted due to runtime errors.
-
-If you're a contributor to a project, you may need to install
-some Module::Install extensions from CPAN (or other repository).
-If you're a user of a module, please contact the author.
-EOT
-		}
-		my $method = $1;
-		if ( uc($method) eq $method ) {
-			# Do nothing
-			return;
-		} elsif ( $method =~ /^_/ and $self->can($method) ) {
-			# Dispatch to the root M:I class
-			return $self->$method(@_);
-		}
-
-		# Dispatch to the appropriate plugin
-		unshift @_, ( $self, $1 );
-		goto &{$self->can('call')};
-	};
-}
-
-sub preload {
-	my $self = shift;
-	unless ( $self->{extensions} ) {
-		$self->load_extensions(
-			"$self->{prefix}/$self->{path}", $self
-		);
-	}
-
-	my @exts = @{$self->{extensions}};
-	unless ( @exts ) {
-		@exts = $self->{admin}->load_all_extensions;
-	}
-
-	my %seen;
-	foreach my $obj ( @exts ) {
-		while (my ($method, $glob) = each %{ref($obj) . '::'}) {
-			next unless $obj->can($method);
-			next if $method =~ /^_/;
-			next if $method eq uc($method);
-			$seen{$method}++;
-		}
-	}
-
-	my $who = $self->_caller;
-	foreach my $name ( sort keys %seen ) {
-		local $^W;
-		*{"${who}::$name"} = sub {
-			${"${who}::AUTOLOAD"} = "${who}::$name";
-			goto &{"${who}::AUTOLOAD"};
-		};
-	}
-}
-
-sub new {
-	my ($class, %args) = @_;
-
-	delete $INC{'FindBin.pm'};
-	{
-		# to suppress the redefine warning
-		local $SIG{__WARN__} = sub {};
-		require FindBin;
-	}
-
-	# ignore the prefix on extension modules built from top level.
-	my $base_path = Cwd::abs_path($FindBin::Bin);
-	unless ( Cwd::abs_path(Cwd::cwd()) eq $base_path ) {
-		delete $args{prefix};
-	}
-	return $args{_self} if $args{_self};
-
-	$args{dispatch} ||= 'Admin';
-	$args{prefix}   ||= 'inc';
-	$args{author}   ||= ($^O eq 'VMS' ? '_author' : '.author');
-	$args{bundle}   ||= 'inc/BUNDLES';
-	$args{base}     ||= $base_path;
-	$class =~ s/^\Q$args{prefix}\E:://;
-	$args{name}     ||= $class;
-	$args{version}  ||= $class->VERSION;
-	unless ( $args{path} ) {
-		$args{path}  = $args{name};
-		$args{path}  =~ s!::!/!g;
-	}
-	$args{file}     ||= "$args{base}/$args{prefix}/$args{path}.pm";
-	$args{wrote}      = 0;
-
-	bless( \%args, $class );
-}
-
-sub call {
-	my ($self, $method) = @_;
-	my $obj = $self->load($method) or return;
-        splice(@_, 0, 2, $obj);
-	goto &{$obj->can($method)};
-}
-
-sub load {
-	my ($self, $method) = @_;
-
-	$self->load_extensions(
-		"$self->{prefix}/$self->{path}", $self
-	) unless $self->{extensions};
-
-	foreach my $obj (@{$self->{extensions}}) {
-		return $obj if $obj->can($method);
-	}
-
-	my $admin = $self->{admin} or die <<"END_DIE";
-The '$method' method does not exist in the '$self->{prefix}' path!
-Please remove the '$self->{prefix}' directory and run $0 again to load it.
-END_DIE
-
-	my $obj = $admin->load($method, 1);
-	push @{$self->{extensions}}, $obj;
-
-	$obj;
-}
-
-sub load_extensions {
-	my ($self, $path, $top) = @_;
-
-	my $should_reload = 0;
-	unless ( grep { ! ref $_ and lc $_ eq lc $self->{prefix} } @INC ) {
-		unshift @INC, $self->{prefix};
-		$should_reload = 1;
-	}
-
-	foreach my $rv ( $self->find_extensions($path) ) {
-		my ($file, $pkg) = @{$rv};
-		next if $self->{pathnames}{$pkg};
-
-		local $@;
-		my $new = eval { local $^W; require $file; $pkg->can('new') };
-		unless ( $new ) {
-			warn $@ if $@;
-			next;
-		}
-		$self->{pathnames}{$pkg} =
-			$should_reload ? delete $INC{$file} : $INC{$file};
-		push @{$self->{extensions}}, &{$new}($pkg, _top => $top );
-	}
-
-	$self->{extensions} ||= [];
-}
-
-sub find_extensions {
-	my ($self, $path) = @_;
-
-	my @found;
-	File::Find::find( sub {
-		my $file = $File::Find::name;
-		return unless $file =~ m!^\Q$path\E/(.+)\.pm\Z!is;
-		my $subpath = $1;
-		return if lc($subpath) eq lc($self->{dispatch});
-
-		$file = "$self->{path}/$subpath.pm";
-		my $pkg = "$self->{name}::$subpath";
-		$pkg =~ s!/!::!g;
-
-		# If we have a mixed-case package name, assume case has been preserved
-		# correctly.  Otherwise, root through the file to locate the case-preserved
-		# version of the package name.
-		if ( $subpath eq lc($subpath) || $subpath eq uc($subpath) ) {
-			my $content = Module::Install::_read($subpath . '.pm');
-			my $in_pod  = 0;
-			foreach ( split //, $content ) {
-				$in_pod = 1 if /^=\w/;
-				$in_pod = 0 if /^=cut/;
-				next if ($in_pod || /^=cut/);  # skip pod text
-				next if /^\s*#/;               # and comments
-				if ( m/^\s*package\s+($pkg)\s*;/i ) {
-					$pkg = $1;
-					last;
-				}
-			}
-		}
-
-		push @found, [ $file, $pkg ];
-	}, $path ) if -d $path;
-
-	@found;
-}
-
-
-
-
-
-#####################################################################
-# Common Utility Functions
-
-sub _caller {
-	my $depth = 0;
-	my $call  = caller($depth);
-	while ( $call eq __PACKAGE__ ) {
-		$depth++;
-		$call = caller($depth);
-	}
-	return $call;
-}
-
-# Done in evals to avoid confusing Perl::MinimumVersion
-eval( $] >= 5.006 ? <<'END_NEW' : <<'END_OLD' ); die $@ if $@;
-sub _read {
-	local *FH;
-	open( FH, '<', $_[0] ) or die "open($_[0]): $!";
-	my $string = do { local $/; <FH> };
-	close FH or die "close($_[0]): $!";
-	return $string;
-}
-END_NEW
-sub _read {
-	local *FH;
-	open( FH, "< $_[0]"  ) or die "open($_[0]): $!";
-	my $string = do { local $/; <FH> };
-	close FH or die "close($_[0]): $!";
-	return $string;
-}
-END_OLD
-
-sub _readperl {
-	my $string = Module::Install::_read($_[0]);
-	$string =~ s/(?:\015{1,2}\012|\015|\012)/\n/sg;
-	$string =~ s/(\n)\n*__(?:DATA|END)__\b.*\z/$1/s;
-	$string =~ s/\n\n=\w+.+?\n\n=cut\b.+?\n+/\n\n/sg;
-	return $string;
-}
-
-sub _readpod {
-	my $string = Module::Install::_read($_[0]);
-	$string =~ s/(?:\015{1,2}\012|\015|\012)/\n/sg;
-	return $string if $_[0] =~ /\.pod\z/;
-	$string =~ s/(^|\n=cut\b.+?\n+)[^=\s].+?\n(\n=\w+|\z)/$1$2/sg;
-	$string =~ s/\n*=pod\b[^\n]*\n+/\n\n/sg;
-	$string =~ s/\n*=cut\b[^\n]*\n+/\n\n/sg;
-	$string =~ s/^\n+//s;
-	return $string;
-}
-
-# Done in evals to avoid confusing Perl::MinimumVersion
-eval( $] >= 5.006 ? <<'END_NEW' : <<'END_OLD' ); die $@ if $@;
-sub _write {
-	local *FH;
-	open( FH, '>', $_[0] ) or die "open($_[0]): $!";
-	foreach ( 1 .. $#_ ) {
-		print FH $_[$_] or die "print($_[0]): $!";
-	}
-	close FH or die "close($_[0]): $!";
-}
-END_NEW
-sub _write {
-	local *FH;
-	open( FH, "> $_[0]"  ) or die "open($_[0]): $!";
-	foreach ( 1 .. $#_ ) {
-		print FH $_[$_] or die "print($_[0]): $!";
-	}
-	close FH or die "close($_[0]): $!";
-}
-END_OLD
-
-# _version is for processing module versions (eg, 1.03_05) not
-# Perl versions (eg, 5.8.1).
-sub _version ($) {
-	my $s = shift || 0;
-	my $d =()= $s =~ /(\.)/g;
-	if ( $d >= 2 ) {
-		# Normalise multipart versions
-		$s =~ s/(\.)(\d{1,3})/sprintf("$1%03d",$2)/eg;
-	}
-	$s =~ s/^(\d+)\.?//;
-	my $l = $1 || 0;
-	my @v = map {
-		$_ . '0' x (3 - length $_)
-	} $s =~ /(\d{1,3})\D?/g;
-	$l = $l . '.' . join '', @v if @v;
-	return $l + 0;
-}
-
-sub _cmp ($$) {
-	_version($_[1]) <=> _version($_[2]);
-}
-
-# Cloned from Params::Util::_CLASS
-sub _CLASS ($) {
-	(
-		defined $_[0]
-		and
-		! ref $_[0]
-		and
-		$_[0] =~ m/^[^\W\d]\w*(?:::\w+)*\z/s
-	) ? $_[0] : undef;
-}
-
-1;
-
-# Copyright 2008 - 2012 Adam Kennedy.
@@ -1,71 +0,0 @@
-#line 1
-##
-# name:      Module::Package
-# abstract:  Postmodern Perl Module Packaging
-# author:    Ingy döt Net <ingy@cpan.org>
-# license:   perl
-# copyright: 2011
-# see:
-# - Module::Package::Plugin
-# - Module::Install::Package
-# - Module::Package::Tutorial
-
-package Module::Package;
-use 5.005;
-use strict;
-
-BEGIN {
-    $Module::Package::VERSION = '0.30';
-    $inc::Module::Package::VERSION ||= $Module::Package::VERSION;
-    @inc::Module::Package::ISA = __PACKAGE__;
-}
-
-sub import {
-    my $class = shift;
-    $INC{'inc/Module/Install.pm'} = __FILE__;
-    unshift @INC, 'inc' unless $INC[0] eq 'inc';
-    eval "use Module::Install 1.01 (); 1" or $class->error($@);
-
-    package main;
-    Module::Install->import();
-    eval {
-        module_package_internals_version_check($Module::Package::VERSION);
-        module_package_internals_init(@_);
-    };
-    if ($@) {
-        $Module::Package::ERROR = $@;
-        die $@;
-    }
-}
-
-# XXX Remove this when things are stable.
-sub error {
-    my ($class, $error) = @_;
-    if (-e 'inc' and not -e 'inc/.author') {
-        require Data::Dumper;
-        $Data::Dumper::Sortkeys = 1;
-        my $dump1 = Data::Dumper::Dumper(\%INC);
-        my $dump2 = Data::Dumper::Dumper(\@INC);
-        die <<"...";
-This should not have happened. Hopefully this dump will explain the problem:
-
-inc::Module::Package: $inc::Module::Package::VERSION
-Module::Package: $Module::Package::VERSION
-inc::Module::Install: $inc::Module::Install::VERSION
-Module::Install: $Module::Install::VERSION
-
-Error: $error
-
-%INC:
-$dump1
-\@INC:
-$dump2
-...
-    }
-    else {
-        die $error;
-    }
-}
-
-1;
-
@@ -1,4 +1,5 @@
 package Vroom::Mo;
+
 # use Mo qw'default import';
 #   The following line of code was produced from the previous line by
 #   Mo::Inline version 0.34
@@ -1,21 +1,13 @@
-##
-# name:      Vroom
-# abstract:  Slide Shows in Vim
-# author:    Ingy döt Net <ingy@ingy.net>
-# license:   perl
-# copyright: 2008-2013
-
-use 5.006001;
+use strict; use warnings;
 package Vroom;
+our $VERSION = '0.36';
 use Vroom::Mo;
 
-our $VERSION = '0.29';
-
-use File::HomeDir 0.99;
-use IO::All 0.44;
-use Template::Toolkit::Simple 0.16;
-use Term::Size 0.207;
-use YAML::XS 0.38;
+use File::HomeDir;
+use IO::All;
+use Template::Toolkit::Simple;
+use Term::Size;
+use YAML::XS;
 
 use Getopt::Long;
 use Cwd;
@@ -773,8 +765,9 @@ time, and rerun vroom. You should not get this message again.
 
     my $title = "%-20f " . $self->config->{title};
     $title =~ s/\s/\\ /g;
+    no strict 'refs';
     io(".vimrc")->print(<<"...");
-" This .vimrc file was created by Vroom-$VERSION
+" This .vimrc file was created by Vroom-${"VERSION"}
 set nocompatible
 syntax on
 $script_functions
@@ -1003,392 +996,4 @@ If it makes sense to you, run it. (at your own risk :)
 ...
 }
 
-=head1 SYNOPSIS
-
-    > mkdir MySlides    # Make a Directory for Your Slides
-    > cd MySlides       # Go In There
-    > vroom new         # Create Example Slides File
-    > vim slides.vroom  # Edit the File and Add Your Own Slides
-    > vroom vroom       # Show Your Slides
-    > vroom html        # Publish Your Slides as HTML
-
-=head1 DESCRIPTION
-
-Ever given a Slide Show and needed to switch over to Vim?
-
-Now you don't ever have to switch again. You're already there.
-
-Vroom lets you create your slides in a single file using a Wiki-like
-style, much like Spork and Sporx do. The difference is that your slides
-don't compile to HTML or JavaScript or XUL. They get turned into a set
-of files that begin with '0', like '03' or '07c' or '05b.pl'.
-
-The slides are named in alphabetic order. That means you can bring them
-all into a Vim session with the command: C<vim 0*>. C<vroom vroom>
-does exactly that.
-
-You can do things like advance to the next slide with the spacebar.
-Vroom creates a file called C<./.vimrc> with helpful key mappings for
-navigating a slideshow. See L<KEY MAPPINGS> below.
-
-Vroom takes advantage of Vim's syntax highlighting. It also lets you run
-slides that contain code.
-
-Since Vim is an editor, you can change your slides during the show.
-
-=head1 COMMAND USAGE
-
-Vroom has a few command line options:
-
-=over
-
-=item vroom new
-
-Write an example C<slides.vroom> file. This example contains all the
-config options and also examples of all the Vroom syntax features.
-
-=item vroom vroom
-
-Compile (create) the slides files from the input file and start vim
-show.
-
-=item vroom compile
-
-Just compile the slides.
-
-=item vroom html
-
-Publish the slides to HTML, with embedded JavaScript to navigate with
-the spacebar and backspace keys. Created in the C<html/> subdirectory.
-
-=item vroom text
-
-Publish the slides to plain text. This action uses all the text slides in
-their unsplit form.  Created in the C<text/> subdirectory.
-
-=item vroom clean
-
-Clean up all the compiled output files.
-
-=item vroom ghpublish
-
-Creates a shell script in the current directory, that is intended to
-publish your slides to the special GitHub branch called gh-pages. See
-L<GITHUB NOTES> below.
-
-This command does NOT run the script. It merely creates it for you. It is up
-to you to review the script and run it (if it makes sense on your system).
-
-=item vroom <action> --skip=#
-
-The skip option takes a number as its input and skips that number of
-files during compilation. This is useful when you are polishing your slides
-and are finished with the first 50. You can say:
-
-    vroom vroom --skip=50
-
-and it will start on slide #51.
-
-=item vroom <action> --input=<file_name>
-
-This option lets you specify an alternate input file name, instead of the
-default one, C<slides.vroom>.
-
-=back
-
-=head1 INPUT FORMAT
-
-Here is an example slides.vroom file:
-
-    ---- config
-    # These are YAML settings for Vroom
-    title: My Spiffy Slideshow
-    # height: 84
-    # width: 20
-    auto_size: 1  # Determines height/width automatically
-    # skip: 12      # Skip 12 slides. Useful when making slides.
-    ---- center
-    My Presentation
-
-    by Ingy
-    ----
-    == Stuff I care about:
-
-    * Foo
-    +* Bar
-    +* Baz
-    ---- perl,i10
-    # Perl code indented 10 spaces
-    use Vroom;
-
-    print "Hello World";
-    ---- center
-    THE END
-
-A line that starts with '==' is a header line. It will be centered.
-
-Lines that begin with a '+' cause vroom to split the slide there,
-causing an animation effect.
-
-Lines that begin with a '%' are slide titles.  Titles are completely
-optional.  They are used with notes files, and also for the index
-page if you convert to HTML.  You can have only one of these per
-slide.
-
-A line consisting of nothing but '====' indicates that what follows
-are notes for this slide.  Notes are also optional.  They are
-primarily used for notes files, but are also included if you convert
-your presentation to HTML.  See L<SLIDE NOTES> below.
-
-=head1 CONFIGURATION OPTIONS
-
-Each slide can have one or more configuration options. Options are
-a comma separated list that follow the '----' header for a slide.
-Like this:
-
-    ---- config
-    ---- center
-    ---- perl,i20
-    ---- include file-name
-    ---- replace
-    ---- skip
-
-=over
-
-=item config
-
-The slide is really a yaml configuration. It will not be displayed
-in the presentation, but will tell vroom what to do from that point
-forward.
-
-Usually, a C<config> slide is the first thing in your input file, but
-you can use more than one config slide.
-
-=item center
-
-Center the contents of the slide.
-
-=item i##
-
-'i' followed by a number means to indent the contents by the number of
-characters.
-
-=item i-##
-
-'i' followed by a negative number means to strip that number of leading
-characters from the contents of the slide.  This can be useful if you need
-to have characters special to Vroom at the beginning of your lines,
-for example if the contents of your slide is unified diff output.
-
-=item perl,ruby,python,php,javascript,haskell,actionscript,html,yaml,xml,json,make,shell,diff
-
-Specifies that the slide is one of those syntaxen, and that the
-appropriate file extension will be used, thus causing vim to syntax
-highlight the slide.
-
-=item include file-path-name
-
-Replace the line with the contents of the specified file. Useful to
-include long files that would make your slides file unruly.
-
-=item replace
-
-With the C<replace> option, the '+' animations in the slide cause the
-content to replace the previous partial slide, rather than append to it.
-
-=item skip
-
-Ignore the following slide completely.
-
-=back
-
-=head2 CONFIG SLIDE OPTIONS
-
-You can specify the following configuration options in a config slide:
-
-=over
-
-=item title: <text>
-
-The title of your presentation.
-
-=item height: <number>
-
-The number of lines in the terminal you plan to use when presenting the
-show. Used for centering the content.
-
-=item width: <number>
-
-The number of columns in the terminal you plan to use when presenting
-the show. Used for centering the content.
-
-=item auto_size: <0|1>
-
-When set to 1, the height/width options above will be ignored and
-determined each time you start the slideshow.
-
-=item indent: <number>
-
-All slides will be indented by this number of spaces by default.
-
-=item list_indent: <number>
-
-Auto detect slides that have lists in them, and indent them by the
-specified number of columns.
-
-=item vim: <name>
-
-You can specify the name of the vim executable to use. If you set this to
-C<gvim> special gvim support will be provided.
-
-=item GVim options
-
-The following options are available, if your vim option is set to gvim.
-
-    fuopt: maxhorz,maxvert
-    guioptions: egmLtT
-    guicursor: a:blinkon0-ver25-Cursor
-    guifont: Bitstream_Vera_Sans_Mono:h18
-
-These are all documented by gvim's help system. Please see that for more
-information.
-
-=back
-
-=head1 SLIDE NOTES
-
-You can add notes to each slide, if you like.  When you create your
-presentation (with C<vroom compile> or C<vroom vroom>), a file
-called C<notes.txt> will be created containing all your notes, along
-with indications of when to proceed to the next slide.  If you give
-any of your slides titles, they will also be put into the notes file
-in order to help you keep track of where you are in the
-presentation.
-
-You can print out your notes file, or simply bring it up on a
-separate device (such as your smartphone).  The notes are not part
-of the presentation; they are just for you.
-
-However, if you convert your presentation to HTML, the notes will be
-included in a smaller font below each slide.  This is useful when
-sharing your slides with others who were not present at the
-presentation.
-
-=head1 KEY MAPPINGS
-
-These are the standard key mappings specified in the local C<.vimrc>.
-
-=over
-
-=item <SPACE>
-
-Advance one slide.
-
-=item <BACKSPACE>
-
-Go back one slide.
-
-=item ??
-
-Bring up the help screen.
-
-=item RR (or R -- deprecated)
-
-If the current slide is declared Perl, Python, Ruby, PHP, Haskell or
-JavaScript, then run it accordingly.
-
-=item QQ
-
-Quit Vroom.
-
-=item VV
-
-Since these vim options apply while editing the C<slides.vroom> file
-(yes, beware), you can use this shortcut to launch Vroom on the current
-contents whilst writing your slides.
-
-=item EE
-
-Edit the file that the cursor is on the filename of.
-
-You can put file path names in your slides, and then easily bring them
-up during your presentation.
-
-=item OO
-
-On a Mac, run the OS X C<open> command on the argument that your cursor is on.
-
-For instance, if you want to display an image, you could put the file
-path of the image in your slide, then use OO to launch it.
-
-=back
-
-=head1 CUSTOM CONFIGURATION
-
-You can create a file called C<.vroom/vimrc> in your home directory. If
-vroom sees this file, it will append it onto every local C<.vimrc> file
-it creates.
-
-Use this file to specify your own custom vim settings for all your vroom
-presentations.
-
-You can also create a file called C<.vroom/gvimrc> for gvim overrides,
-if you are using gvim.
-
-=head1 USING MacVim OR gvim
-
-If you have a Mac, you really should try using MacVim for Vroom slide
-shows. You can run it in fullscreen mode, and it looks kinda
-professional.
-
-To do this, set the vim option in your config section:
-
-    vim: gvim
-
-NOTE: On my Mac, I have gvim symlinked to mvim, which is a smart startup
-      script that ships with MacVim. Ping me, if you have questions
-      about this setup.
-
-=head1 GITHUB NOTES
-
-I(ngy) put all my public talks on github. I think it is an excellent way
-to publish your slides and give people a url to review them. Here are
-the things I do to make this work well:
-
-1) I create a repository for every presentation I give. The name of
-   the repo is of the form <topic>-<event/time>-talk. You can go to
-   L<http://github.com/ingydotnet/> and look for the repos ending
-   with C<-talk>.
-
-2) GitHub has a feature called gh-pages that you can use to create a
-   website for each github repo. I use this feature to publish the html
-   output of my talk. I do something like this:
-
-    vroom html
-    mv html /tmp
-    git branch gh-pages
-    git checkout gh-pages
-    rm -r *.html
-    mv /tmp/html/* .
-    rmdir /tmp/html
-    git add .
-    git commit -m 'Publish my slides'
-    git push origin gh-pages
-    git checkout master
-
-2B) Vroom comes with a C<ghpublish> option. If you run:
-
-    > vroom ghpublish
-
-it will generate a script called C<ghpublish> that contains commands like the
-ones above, to publish your slides to a gh-pages branch.
-
-3) If my repo is called C<vroom-yapcna2009-talk>, then after I publish
-   the talk to the gh-pages branch, it will be available as
-   L<http://ingydotnet.github.com/vroom-yapcna2009-talk>.
-   I then link this url from
-   L<http://github.com/ingydotnet/vroom-yapcna2009-talk> as the Homepage
-   url.
-
-You can see an example of a talk published to HTML and posted via gh-pages
-at L<http://ingydotnet.github.com/vroom-pm/>.
+1;
@@ -1,9 +1,19 @@
+=pod
+
+=for comment
+DO NOT EDIT. This Pod was generated by Swim.
+See http://github.com/ingydotnet/swim-pm#readme
+
 =encoding utf8
 
 =head1 NAME
 
 Vroom - Slide Shows in Vim
 
+=for html
+<a href="https://travis-ci.org/ingydotnet/vroom-pm"><img src="https://travis-ci.org/ingydotnet/vroom-pm.png" alt="vroom-pm"></a>
+<a href="https://coveralls.io/r/ingydotnet/vroom-pm?branch=master"><img src="https://coveralls.io/repos/ingydotnet/vroom-pm/badge.png" alt="vroom-pm"></a>
+
 =head1 SYNOPSIS
 
     > mkdir MySlides    # Make a Directory for Your Slides
@@ -19,18 +29,18 @@ Ever given a Slide Show and needed to switch over to Vim?
 
 Now you don't ever have to switch again. You're already there.
 
-Vroom lets you create your slides in a single file using a Wiki-like
-style, much like Spork and Sporx do. The difference is that your slides
-don't compile to HTML or JavaScript or XUL. They get turned into a set
-of files that begin with '0', like '03' or '07c' or '05b.pl'.
+Vroom lets you create your slides in a single file using a Wiki-like style,
+much like Spork and Sporx do. The difference is that your slides don't compile
+to HTML or JavaScript or XUL. They get turned into a set of files that begin
+with '0', like '03' or '07c' or '05b.pl'.
 
 The slides are named in alphabetic order. That means you can bring them
-all into a Vim session with the command: C<vim 0*>. C<vroom vroom>
-does exactly that.
+all into a Vim session with the command: C<vim 0*>. C<vroom vroom> does
+exactly that.
 
-You can do things like advance to the next slide with the spacebar.
-Vroom creates a file called C<./.vimrc> with helpful key mappings for
-navigating a slideshow. See L<KEY MAPPINGS> below.
+You can do things like advance to the next slide with the spacebar. Vroom
+creates a file called C<./.vimrc> with helpful key mappings for navigating a
+slideshow. See [KEY MAPPINGS] below.
 
 Vroom takes advantage of Vim's syntax highlighting. It also lets you run
 slides that contain code.
@@ -39,58 +49,57 @@ Since Vim is an editor, you can change your slides during the show.
 
 =head1 COMMAND USAGE
 
-Vroom has a few command line options:
+C<vroom> has a few command line options:
 
 =over
 
-=item vroom new
+=item C<vroom new>
 
-Write an example C<slides.vroom> file. This example contains all the
-config options and also examples of all the Vroom syntax features.
+Write an example C<slides.vroom> file. This example contains all the config
+options and also examples of all the Vroom syntax features.
 
-=item vroom vroom
+=item C<vroom vroom>
 
-Compile (create) the slides files from the input file and start vim
-show.
+Compile (create) the slides files from the input file and start vim show.
 
-=item vroom compile
+=item C<vroom compile>
 
 Just compile the slides.
 
-=item vroom html
+=item C<vroom html>
 
-Publish the slides to HTML, with embedded JavaScript to navigate with
-the spacebar and backspace keys. Created in the C<html/> subdirectory.
+Publish the slides to HTML, with embedded JavaScript to navigate with the
+spacebar and backspace keys. Created in the C<html/> subdirectory.
 
-=item vroom text
+=item C<vroom text>
 
 Publish the slides to plain text. This action uses all the text slides in
-their unsplit form.  Created in the C<text/> subdirectory.
+their unsplit form. Created in the C<text/> subdirectory.
 
-=item vroom clean
+=item C<vroom clean>
 
 Clean up all the compiled output files.
 
-=item vroom ghpublish
+=item C<vroom ghpublish>
 
 Creates a shell script in the current directory, that is intended to
 publish your slides to the special GitHub branch called gh-pages. See
-L<GITHUB NOTES> below.
+[GITHUB NOTES] below.
 
 This command does NOT run the script. It merely creates it for you. It is up
 to you to review the script and run it (if it makes sense on your system).
 
-=item vroom <action> --skip=#
+=item C<< vroom <action> --skip=# >>
 
-The skip option takes a number as its input and skips that number of
-files during compilation. This is useful when you are polishing your slides
-and are finished with the first 50. You can say:
+The skip option takes a number as its input and skips that number of files
+during compilation. This is useful when you are polishing your slides and are
+finished with the first 50. You can say:
 
     vroom vroom --skip=50
 
 and it will start on slide #51.
 
-=item vroom <action> --input=<file_name>
+=item C<< vroom <action> --input=<file_name> >>
 
 This option lets you specify an alternate input file name, instead of the
 default one, C<slides.vroom>.
@@ -126,26 +135,24 @@ Here is an example slides.vroom file:
     ---- center
     THE END
 
-A line that starts with '==' is a header line. It will be centered.
+A line that starts with C<==> is a header line. It will be centered.
 
-Lines that begin with a '+' cause vroom to split the slide there,
-causing an animation effect.
+Lines that begin with a C<+> cause vroom to split the slide there, causing an
+animation effect.
 
-Lines that begin with a '%' are slide titles.  Titles are completely
-optional.  They are used with notes files, and also for the index
-page if you convert to HTML.  You can have only one of these per
-slide.
+Lines that begin with a C<%> are slide titles. Titles are completely optional.
+They are used with notes files, and also for the index page if you convert to
+HTML. You can have only one of these per slide.
 
-A line consisting of nothing but '====' indicates that what follows
-are notes for this slide.  Notes are also optional.  They are
-primarily used for notes files, but are also included if you convert
-your presentation to HTML.  See L<SLIDE NOTES> below.
+A line consisting of nothing but C<====> indicates that what follows are notes
+for this slide. Notes are also optional. They are primarily used for notes
+files, but are also included if you convert your presentation to HTML. See
+[SLIDE NOTES] below.
 
 =head1 CONFIGURATION OPTIONS
 
-Each slide can have one or more configuration options. Options are
-a comma separated list that follow the '----' header for a slide.
-Like this:
+each slide can have one or more configuration options. Options are a comma
+separated list that follow the C<----> header for a slide. Like this:
 
     ---- config
     ---- center
@@ -158,44 +165,42 @@ Like this:
 
 =item config
 
-The slide is really a yaml configuration. It will not be displayed
-in the presentation, but will tell vroom what to do from that point
-forward.
+The slide is really a yaml configuration. It will not be displayed in the
+presentation, but will tell vroom what to do from that point forward.
 
-Usually, a C<config> slide is the first thing in your input file, but
-you can use more than one config slide.
+Usually, a C<config> slide is the first thing in your input file, but you can
+use more than one config slide.
 
 =item center
 
 Center the contents of the slide.
 
-=item i##
+=item C<i##>
 
 'i' followed by a number means to indent the contents by the number of
 characters.
 
-=item i-##
+=item C<i-##>
 
 'i' followed by a negative number means to strip that number of leading
-characters from the contents of the slide.  This can be useful if you need
-to have characters special to Vroom at the beginning of your lines,
-for example if the contents of your slide is unified diff output.
+characters from the contents of the slide. This can be useful if you need to
+have characters special to Vroom at the beginning of your lines, for example
+if the contents of your slide is unified diff output.
 
 =item perl,ruby,python,php,javascript,haskell,actionscript,html,yaml,xml,json,make,shell,diff
 
-Specifies that the slide is one of those syntaxen, and that the
-appropriate file extension will be used, thus causing vim to syntax
-highlight the slide.
+Specifies that the slide is one of those syntaxen, and that the appropriate
+file extension will be used, thus causing vim to syntax highlight the slide.
 
 =item include file-path-name
 
-Replace the line with the contents of the specified file. Useful to
-include long files that would make your slides file unruly.
+Replace the line with the contents of the specified file. Useful to include
+long files that would make your slides file unruly.
 
 =item replace
 
-With the C<replace> option, the '+' animations in the slide cause the
-content to replace the previous partial slide, rather than append to it.
+With the C<replace> option, the '+' animations in the slide cause the content
+to replace the previous partial slide, rather than append to it.
 
 =item skip
 
@@ -203,41 +208,41 @@ Ignore the following slide completely.
 
 =back
 
-=head2 CONFIG SLIDE OPTIONS
+=head2 Config Slide Options
 
 You can specify the following configuration options in a config slide:
 
 =over
 
-=item title: <text>
+=item C<< title: <text> >>
 
 The title of your presentation.
 
-=item height: <number>
+=item C<< height: <number> >>
 
-The number of lines in the terminal you plan to use when presenting the
-show. Used for centering the content.
+The number of lines in the terminal you plan to use when presenting the show.
+Used for centering the content.
 
-=item width: <number>
+=item C<< width: <number> >>
 
-The number of columns in the terminal you plan to use when presenting
-the show. Used for centering the content.
+The number of columns in the terminal you plan to use when presenting the
+show. Used for centering the content.
 
-=item auto_size: <0|1>
+=item C<< auto_size: <0|1> >>
 
-When set to 1, the height/width options above will be ignored and
-determined each time you start the slideshow.
+When set to 1, the height/width options above will be ignored and determined
+each time you start the slideshow.
 
-=item indent: <number>
+=item C<< indent: <number> >>
 
 All slides will be indented by this number of spaces by default.
 
-=item list_indent: <number>
+=item C<< list_indent: <number> >>
 
-Auto detect slides that have lists in them, and indent them by the
-specified number of columns.
+Auto detect slides that have lists in them, and indent them by the specified
+number of columns.
 
-=item vim: <name>
+=item C<< vim: <name> >>
 
 You can specify the name of the vim executable to use. If you set this to
 C<gvim> special gvim support will be provided.
@@ -258,22 +263,20 @@ information.
 
 =head1 SLIDE NOTES
 
-You can add notes to each slide, if you like.  When you create your
-presentation (with C<vroom compile> or C<vroom vroom>), a file
-called C<notes.txt> will be created containing all your notes, along
-with indications of when to proceed to the next slide.  If you give
-any of your slides titles, they will also be put into the notes file
-in order to help you keep track of where you are in the
-presentation.
+You can add notes to each slide, if you like. When you create your
+presentation (with C<vroom compile> or C<vroom vroom>), a file called
+C<notes.txt> will be created containing all your notes, along with indications
+of when to proceed to the next slide. If you give any of your slides titles,
+they will also be put into the notes file in order to help you keep track of
+where you are in the presentation.
 
-You can print out your notes file, or simply bring it up on a
-separate device (such as your smartphone).  The notes are not part
-of the presentation; they are just for you.
+You can print out your notes file, or simply bring it up on a separate device
+(such as your smartphone). The notes are not part of the presentation; they
+are just for you.
 
-However, if you convert your presentation to HTML, the notes will be
-included in a smaller font below each slide.  This is useful when
-sharing your slides with others who were not present at the
-presentation.
+However, if you convert your presentation to HTML, the notes will be included
+in a smaller font below each slide. This is useful when sharing your slides
+with others who were not present at the presentation.
 
 =head1 KEY MAPPINGS
 
@@ -281,89 +284,84 @@ These are the standard key mappings specified in the local C<.vimrc>.
 
 =over
 
-=item <SPACE>
+=item C<< <SPACE> >>
 
 Advance one slide.
 
-=item <BACKSPACE>
+=item C<< <BACKSPACE> >>
 
 Go back one slide.
 
-=item ??
+=item C<??>
 
 Bring up the help screen.
 
-=item RR (or R -- deprecated)
+=item C<RR> (or R -- deprecated)
 
 If the current slide is declared Perl, Python, Ruby, PHP, Haskell or
 JavaScript, then run it accordingly.
 
-=item QQ
+=item C<QQ>
 
 Quit Vroom.
 
-=item VV
+=item C<VV>
 
-Since these vim options apply while editing the C<slides.vroom> file
-(yes, beware), you can use this shortcut to launch Vroom on the current
-contents whilst writing your slides.
+Since these vim options apply while editing the C<slides.vroom> file (yes,
+beware), you can use this shortcut to launch Vroom on the current contents
+whilst writing your slides.
 
-=item EE
+=item C<EE>
 
 Edit the file that the cursor is on the filename of.
 
-You can put file path names in your slides, and then easily bring them
-up during your presentation.
+You can put file path names in your slides, and then easily bring them up
+during your presentation.
 
-=item OO
+=item C<OO>
 
 On a Mac, run the OS X C<open> command on the argument that your cursor is on.
 
-For instance, if you want to display an image, you could put the file
-path of the image in your slide, then use OO to launch it.
+For instance, if you want to display an image, you could put the file path of
+the image in your slide, then use OO to launch it.
 
 =back
 
 =head1 CUSTOM CONFIGURATION
 
-You can create a file called C<.vroom/vimrc> in your home directory. If
-vroom sees this file, it will append it onto every local C<.vimrc> file
-it creates.
+You can create a file called C<.vroom/vimrc> in your home directory. If vroom
+sees this file, it will append it onto every local C<.vimrc> file it creates.
 
 Use this file to specify your own custom vim settings for all your vroom
 presentations.
 
-You can also create a file called C<.vroom/gvimrc> for gvim overrides,
-if you are using gvim.
+You can also create a file called C<.vroom/gvimrc> for gvim overrides, if you
+are using gvim.
 
-=head1 USING MacVim OR gvim
+=head1 USING MACVIM OR GVIM
 
-If you have a Mac, you really should try using MacVim for Vroom slide
-shows. You can run it in fullscreen mode, and it looks kinda
-professional.
+If you have a Mac, you really should try using MacVim for Vroom slide shows.
+You can run it in fullscreen mode, and it looks kinda professional.
 
 To do this, set the vim option in your config section:
 
     vim: gvim
 
 NOTE: On my Mac, I have gvim symlinked to mvim, which is a smart startup
-      script that ships with MacVim. Ping me, if you have questions
-      about this setup.
+      script that ships with MacVim. Ping me, if you have questions about
+      this setup.
 
 =head1 GITHUB NOTES
 
-I(ngy) put all my public talks on github. I think it is an excellent way
-to publish your slides and give people a url to review them. Here are
-the things I do to make this work well:
+I(ngy) put all my public talks on github. I think it is an excellent way to
+publish your slides and give people a url to review them. Here are the things
+I do to make this work well:
+
+=over
 
-1) I create a repository for every presentation I give. The name of
-   the repo is of the form <topic>-<event/time>-talk. You can go to
-   L<http://github.com/ingydotnet/> and look for the repos ending
-   with C<-talk>.
+=item * I create a repository for every presentation I give. The name of  the repo is of the form <topic>-<event/time>-talk. You can go to  L<http://github.com/ingydotnet/> and look for the repos ending with C<-talk>.
 
-2) GitHub has a feature called gh-pages that you can use to create a
-   website for each github repo. I use this feature to publish the html
-   output of my talk. I do something like this:
+=item * GitHub has a feature called gh-pages that you can use to create a  website for each github repo. I use this feature to publish the html  output of my talk. I do something like this:
 
     vroom html
     mv html /tmp
@@ -377,34 +375,17 @@ the things I do to make this work well:
     git push origin gh-pages
     git checkout master
 
-2B) Vroom comes with a C<ghpublish> option. If you run:
+=item * Vroom comes with a C<ghpublish> option. If you run:
 
     > vroom ghpublish
-
 it will generate a script called C<ghpublish> that contains commands like the
 ones above, to publish your slides to a gh-pages branch.
 
-3) If my repo is called C<vroom-yapcna2009-talk>, then after I publish
-   the talk to the gh-pages branch, it will be available as
-   L<http://ingydotnet.github.com/vroom-yapcna2009-talk>.
-   I then link this url from
-   L<http://github.com/ingydotnet/vroom-yapcna2009-talk> as the Homepage
-   url.
-
-You can see an example of a talk published to HTML and posted via gh-pages
-at L<http://ingydotnet.github.com/vroom-pm/>.
-
-=head1 AUTHOR
-
-Ingy döt Net <ingy@ingy.net>
+=item * If my repo is called C<vroom-yapcna2009-talk>, then after I publish  the talk to the gh-pages branch, it will be available as  L<http://ingydotnet.github.com/vroom-yapcna2009-talk>.  I then link this url from  L<http://github.com/ingydotnet/vroom-yapcna2009-talk> as the Homepage  url.
 
-=head1 COPYRIGHT AND LICENSE
-
-Copyright (c) 2008-2013. Ingy döt Net.
-
-This program is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
+=back
 
-See http://www.perl.com/perl/misc/Artistic.html
+You can see an example of a talk published to HTML and posted via gh-pages at
+L<http://ingydotnet.github.com/vroom-pm/>.
 
 =cut
@@ -0,0 +1,14 @@
+#!perl
+
+BEGIN {
+  unless ($ENV{RELEASE_TESTING}) {
+    require Test::More;
+    Test::More::plan(skip_all => 'these tests are for release candidate testing');
+  }
+}
+
+# This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests.
+use Test::More;
+use Test::Pod 1.41;
+
+all_pod_files_ok();