(PDOC-3) Rename face to strings instead of yardoc

Since we don't want the name of the tool to reflect the fact that
it is using yard internally (this is an implementation detail), rename
the face to `strings`. Now when one wishes to generate documentation,
`puppet strings` will be used rather than `puppet yardoc`.
This commit is contained in:
Hailee Kenney 2014-09-10 17:07:33 -07:00
parent 376ceb762c
commit ec0e26e339
42 changed files with 64 additions and 64 deletions

View File

@ -1,4 +1,4 @@
Puppet YARDoc Puppet Strings
============= =============
A Puppet Face and plugin built on the [YARD Documentation Tool](http://yardoc.org/) and Puppet Future Parser. A Puppet Face and plugin built on the [YARD Documentation Tool](http://yardoc.org/) and Puppet Future Parser.
@ -23,13 +23,13 @@ Usage
Documenting a module: Documenting a module:
cd /path/to/module cd /path/to/module
puppet yardoc puppet strings
This processes `README` and everything in `manifests/**/*.pp`. This processes `README` and everything in `manifests/**/*.pp`.
Documenting specific manifests: Documenting specific manifests:
puppet yardoc some_manifest.pp [another_if_you_feel_like_it.pp] puppet strings some_manifest.pp [another_if_you_feel_like_it.pp]
Processing is delegated to the `yardoc` tool so some options listed in `yard help doc` are available. Processing is delegated to the `yardoc` tool so some options listed in `yard help doc` are available.
However, Puppet Faces do not support passing arbitrary options through a face so these options must be specified in a `.yardopts` file. However, Puppet Faces do not support passing arbitrary options through a face so these options must be specified in a `.yardopts` file.

View File

@ -0,0 +1,4 @@
require 'puppet/application/face_base'
class Puppet::Application::Strings < Puppet::Application::FaceBase
end

View File

@ -1,4 +0,0 @@
require 'puppet/application/face_base'
class Puppet::Application::Yardoc < Puppet::Application::FaceBase
end

View File

@ -1,6 +1,6 @@
require 'puppet/face' require 'puppet/face'
Puppet::Face.define(:yardoc, '0.0.1') do Puppet::Face.define(:strings, '0.0.1') do
summary "Generate Puppet documentation with YARD." summary "Generate Puppet documentation with YARD."
def check_required_features def check_required_features
@ -54,7 +54,7 @@ Puppet::Face.define(:yardoc, '0.0.1') do
yard_args = (args.empty? ? MODULE_SOURCEFILES : args) yard_args = (args.empty? ? MODULE_SOURCEFILES : args)
merge_puppet_args!(yard_args) merge_puppet_args!(yard_args)
require 'puppetx/yardoc/yard/plugin' require 'puppetx/strings/yard/plugin'
# Hand off to YARD for further processing. # Hand off to YARD for further processing.
YARD::CLI::Yardoc.run(*yard_args) YARD::CLI::Yardoc.run(*yard_args)
@ -71,7 +71,7 @@ Puppet::Face.define(:yardoc, '0.0.1') do
when_invoked do |*args| when_invoked do |*args|
check_required_features check_required_features
require 'puppetx/yardoc/yard/plugin' require 'puppetx/strings/yard/plugin'
opts = args.pop opts = args.pop
# NOTE: The retrun value of the `module` Face seems to have changed in # NOTE: The retrun value of the `module` Face seems to have changed in
@ -105,13 +105,13 @@ Puppet::Face.define(:yardoc, '0.0.1') do
when_invoked do |*args| when_invoked do |*args|
check_required_features check_required_features
require 'puppetx/yardoc/yard/plugin' require 'puppetx/strings/yard/plugin'
opts = args.pop opts = args.pop
# FIXME: This is pretty inefficient as it forcibly re-generates the YARD # FIXME: This is pretty inefficient as it forcibly re-generates the YARD
# indicies each time the server is started. However, it ensures things are # indicies each time the server is started. However, it ensures things are
# generated properly. # generated properly.
module_list = Puppet::Face[:yardoc, :current].modules module_list = Puppet::Face[:strings, :current].modules
module_tuples = module_list.map do |mod| module_tuples = module_list.map do |mod|
name = (mod.forge_name || mod.name).gsub('/', '-') name = (mod.forge_name || mod.name).gsub('/', '-')

View File

@ -1,7 +1,7 @@
require 'puppetx' require 'puppetx'
# Nothing to see here except forward declarations. # Nothing to see here except forward declarations.
module Puppetx::Yardoc module Puppetx::Strings
# This submodule contains bits that interface with the YARD plugin system. # This submodule contains bits that interface with the YARD plugin system.
module YARD module YARD
end end

View File

@ -1,9 +1,9 @@
require 'ostruct' require 'ostruct'
require 'puppet/pops' require 'puppet/pops'
require_relative '../../yardoc' require_relative '../../strings'
module Puppetx::Yardoc::Pops module Puppetx::Strings::Pops
# An adapter class that conforms a Pops model instance + adapters to the # An adapter class that conforms a Pops model instance + adapters to the
# interface expected by YARD handlers. # interface expected by YARD handlers.
# #

View File

@ -1,9 +1,9 @@
require 'puppet/pops' require 'puppet/pops'
require_relative '../../yardoc' require_relative '../../strings'
require_relative 'yard_statement' require_relative 'yard_statement'
module Puppetx::Yardoc::Pops module Puppetx::Strings::Pops
# Loosely based on the TreeDumper classes in Pops::Model. The responsibility of # Loosely based on the TreeDumper classes in Pops::Model. The responsibility of
# this class is to walk a Pops::Model and output objects that can be consumed # this class is to walk a Pops::Model and output objects that can be consumed
# by YARD handlers. # by YARD handlers.

View File

@ -2,7 +2,7 @@ require 'puppet/pops'
require_relative 'puppet_namespace_object' require_relative 'puppet_namespace_object'
module Puppetx::Yardoc::YARD::CodeObjects module Puppetx::Strings::YARD::CodeObjects
class DefinedTypeObject < PuppetNamespaceObject class DefinedTypeObject < PuppetNamespaceObject
# A list of parameters attached to this class. # A list of parameters attached to this class.
# @return [Array<Array(String, String)>] # @return [Array<Array(String, String)>]

View File

@ -1,6 +1,6 @@
require_relative 'defined_type_object' require_relative 'defined_type_object'
module Puppetx::Yardoc::YARD::CodeObjects module Puppetx::Strings::YARD::CodeObjects
class HostClassObject < DefinedTypeObject class HostClassObject < DefinedTypeObject
# The {HostClassObject} that this class inherits from, if any. # The {HostClassObject} that this class inherits from, if any.
# @return [HostClassObject, Proxy, nil] # @return [HostClassObject, Proxy, nil]

View File

@ -1,8 +1,8 @@
require 'yard' require 'yard'
require_relative '../../../yardoc' require_relative '../../../strings'
module Puppetx::Yardoc::YARD::CodeObjects module Puppetx::Strings::YARD::CodeObjects
class PuppetNamespaceObject < YARD::CodeObjects::NamespaceObject class PuppetNamespaceObject < YARD::CodeObjects::NamespaceObject
# NOTE: `YARD::Registry#resolve` requires a method with this signature to # NOTE: `YARD::Registry#resolve` requires a method with this signature to
# be present on all subclasses of `NamespaceObject`. # be present on all subclasses of `NamespaceObject`.

View File

@ -1,15 +1,15 @@
require 'yard' require 'yard'
require 'puppet/pops' require 'puppet/pops'
require_relative '../../../yardoc' require_relative '../../../strings'
require_relative '../code_objects' require_relative '../code_objects'
module Puppetx::Yardoc::YARD::Handlers module Puppetx::Strings::YARD::Handlers
class Base < YARD::Handlers::Base class Base < YARD::Handlers::Base
# Easy access to Pops model objects for handler matching. # Easy access to Pops model objects for handler matching.
include Puppet::Pops::Model include Puppet::Pops::Model
# Easy access to custom code objects from which documentation is generated. # Easy access to custom code objects from which documentation is generated.
include Puppetx::Yardoc::YARD::CodeObjects include Puppetx::Strings::YARD::CodeObjects
def self.handles?(statement) def self.handles?(statement)
handlers.any? {|h| h == statement.type} handlers.any? {|h| h == statement.type}

View File

@ -1,6 +1,6 @@
require_relative 'base' require_relative 'base'
module Puppetx::Yardoc::YARD::Handlers module Puppetx::Strings::YARD::Handlers
class DefinedTypeHandler < Base class DefinedTypeHandler < Base
handles ResourceTypeDefinition handles ResourceTypeDefinition

View File

@ -1,11 +1,11 @@
require_relative '../code_objects' require_relative '../code_objects'
module Puppetx::Yardoc::YARD::Handlers module Puppetx::Strings::YARD::Handlers
# Handles `dispatch` calls within a future parser function declaration. For # Handles `dispatch` calls within a future parser function declaration. For
# now, it just treats any docstring as an `@overlaod` tag and attaches the # now, it just treats any docstring as an `@overlaod` tag and attaches the
# overload to the parent function. # overload to the parent function.
class FutureParserDispatchHandler < YARD::Handlers::Ruby::Base class FutureParserDispatchHandler < YARD::Handlers::Ruby::Base
include Puppetx::Yardoc::YARD::CodeObjects include Puppetx::Strings::YARD::CodeObjects
handles method_call(:dispatch) handles method_call(:dispatch)
@ -22,7 +22,7 @@ module Puppetx::Yardoc::YARD::Handlers
end end
class FutureParserFunctionHandler < YARD::Handlers::Ruby::Base class FutureParserFunctionHandler < YARD::Handlers::Ruby::Base
include Puppetx::Yardoc::YARD::CodeObjects include Puppetx::Strings::YARD::CodeObjects
handles method_call(:create_function) handles method_call(:create_function)

View File

@ -1,6 +1,6 @@
require_relative 'base' require_relative 'base'
module Puppetx::Yardoc::YARD::Handlers module Puppetx::Strings::YARD::Handlers
class HostClassHandler < Base class HostClassHandler < Base
handles HostClassDefinition handles HostClassDefinition

View File

@ -3,9 +3,9 @@ require 'puppet/util/docs'
require_relative '../code_objects' require_relative '../code_objects'
module Puppetx::Yardoc::YARD::Handlers module Puppetx::Strings::YARD::Handlers
class ParserFunctionHandler < YARD::Handlers::Ruby::Base class ParserFunctionHandler < YARD::Handlers::Ruby::Base
include Puppetx::Yardoc::YARD::CodeObjects include Puppetx::Strings::YARD::CodeObjects
handles method_call(:newfunction) handles method_call(:newfunction)

View File

@ -1,10 +1,10 @@
require 'yard' require 'yard'
require 'puppet/pops' require 'puppet/pops'
require_relative '../../yardoc' require_relative '../../strings'
require_relative '../pops/yard_transformer' require_relative '../pops/yard_transformer'
module Puppetx::Yardoc::YARD module Puppetx::Strings::YARD
class PuppetParser < YARD::Parser::Base class PuppetParser < YARD::Parser::Base
attr_reader :file, :source attr_reader :file, :source
@ -13,7 +13,7 @@ module Puppetx::Yardoc::YARD
@file = filename @file = filename
@parser = Puppet::Pops::Parser::Parser.new() @parser = Puppet::Pops::Parser::Parser.new()
@transformer = Puppetx::Yardoc::Pops::YARDTransformer.new() @transformer = Puppetx::Strings::Pops::YARDTransformer.new()
end end
def parse def parse

View File

@ -10,10 +10,10 @@ require_relative 'parser'
require_relative 'handlers' require_relative 'handlers'
YARD::Parser::SourceParser.register_parser_type(:puppet, YARD::Parser::SourceParser.register_parser_type(:puppet,
Puppetx::Yardoc::YARD::PuppetParser, Puppetx::Strings::YARD::PuppetParser,
['pp']) ['pp'])
YARD::Handlers::Processor.register_handler_namespace(:puppet, YARD::Handlers::Processor.register_handler_namespace(:puppet,
Puppetx::Yardoc::YARD::Handlers) Puppetx::Strings::YARD::Handlers)
# FIXME: Might not be the best idea to have the template code on the Ruby # FIXME: Might not be the best idea to have the template code on the Ruby
# LOAD_PATH as the contents of this directory really aren't library code. # LOAD_PATH as the contents of this directory really aren't library code.

View File

@ -1,10 +1,10 @@
{ {
"name": "sharpie-puppet_yardoc", "name": "puppetlabs-strings",
"version": "0.0.1", "version": "0.0.1",
"author": "Charlie Sharpsteen", "author": "Puppet Labs",
"summary": "Puppet documentation via YARD", "summary": "Puppet documentation via YARD",
"license": "Apache 2.0", "license": "Apache 2.0",
"source": "", "source": "https://github.com/puppetlabs/puppetlabs-strings",
"project_page": null, "project_page": null,
"issues_url": null, "issues_url": null,
"requirements": [ "requirements": [

View File

@ -6,7 +6,7 @@ require 'puppet'
require 'rspec' require 'rspec'
# This is neeeded so we can access a Registry if YARD creates one # This is neeeded so we can access a Registry if YARD creates one
require 'puppetx/yardoc/yard/plugin' require 'puppetx/strings/yard/plugin'
include YARD include YARD
RSpec.configure do |config| RSpec.configure do |config|

View File

@ -1,5 +1,5 @@
require 'spec_helper' require 'spec_helper'
require 'puppet/face/yardoc' require 'puppet/face/strings'
require 'rspec-html-matchers' require 'rspec-html-matchers'
require 'tmpdir' require 'tmpdir'
require 'stringio' require 'stringio'
@ -9,26 +9,26 @@ describe Puppet::Face do
describe "YARDoc action" do describe "YARDoc action" do
it "should raise an error if yard is absent" do it "should raise an error if yard is absent" do
Puppet.features.stubs(:yard?).returns(false) Puppet.features.stubs(:yard?).returns(false)
expect{Puppet::Face[:yardoc, :current].yardoc}.to raise_error(RuntimeError, "The 'yard' gem must be installed in order to use this face.") expect{Puppet::Face[:strings, :current].yardoc}.to raise_error(RuntimeError, "The 'yard' gem must be installed in order to use this face.")
end end
it "should raise an error if rgen is absent" do it "should raise an error if rgen is absent" do
Puppet.features.stubs(:rgen?).returns(false) Puppet.features.stubs(:rgen?).returns(false)
expect{Puppet::Face[:yardoc, :current].yardoc}.to raise_error(RuntimeError, "The 'rgen' gem must be installed in order to use this face.") expect{Puppet::Face[:strings, :current].yardoc}.to raise_error(RuntimeError, "The 'rgen' gem must be installed in order to use this face.")
end end
it "should raise an error if the Ruby verion is less than 1.9", :if => RUBY_VERSION.match(/^1\.8/) do it "should raise an error if the Ruby verion is less than 1.9", :if => RUBY_VERSION.match(/^1\.8/) do
expect{Puppet::Face[:yardoc, :current].yardoc}.to raise_error(RuntimeError, "This face requires Ruby 1.9 or greater.") expect{Puppet::Face[:strings, :current].yardoc}.to raise_error(RuntimeError, "This face requires Ruby 1.9 or greater.")
end end
it "should invoke Yardoc with MODULE_SOURCEFILES if no arguments are provided" do it "should invoke Yardoc with MODULE_SOURCEFILES if no arguments are provided" do
YARD::CLI::Yardoc.expects(:run).with('manifests/**/*.pp', 'lib/**/*.rb') YARD::CLI::Yardoc.expects(:run).with('manifests/**/*.pp', 'lib/**/*.rb')
Puppet::Face[:yardoc, :current].yardoc Puppet::Face[:strings, :current].yardoc
end end
it "should invoke Yardoc with provided arguments" do it "should invoke Yardoc with provided arguments" do
YARD::CLI::Yardoc.expects(:run).with('--debug', 'some_file.rb') YARD::CLI::Yardoc.expects(:run).with('--debug', 'some_file.rb')
Puppet::Face[:yardoc, :current].yardoc('--debug', 'some_file.rb') Puppet::Face[:strings, :current].yardoc('--debug', 'some_file.rb')
end end
describe "when generating HTML for documentation" do describe "when generating HTML for documentation" do
@ -39,7 +39,7 @@ describe Puppet::Face do
using_module('test') do |tmp| using_module('test') do |tmp|
Dir.chdir('test') Dir.chdir('test')
Puppet::Face[:yardoc, :current].yardoc Puppet::Face[:strings, :current].yardoc
expect(read_html(tmp, 'test', 'test.html')).to have_tag('.docstring .discussion', :text => /This class/) expect(read_html(tmp, 'test', 'test.html')).to have_tag('.docstring .discussion', :text => /This class/)
end end
@ -49,7 +49,7 @@ describe Puppet::Face do
using_module('test') do |tmp| using_module('test') do |tmp|
Dir.chdir('test') Dir.chdir('test')
Puppet::Face[:yardoc, :current].yardoc Puppet::Face[:strings, :current].yardoc
expect(read_html(tmp, 'test', 'ParserFunctions.html')).to have_tag('.docstring .discussion', :text => /documentation for `function3x`/) expect(read_html(tmp, 'test', 'ParserFunctions.html')).to have_tag('.docstring .discussion', :text => /documentation for `function3x`/)
end end
@ -59,7 +59,7 @@ describe Puppet::Face do
using_module('test') do |tmp| using_module('test') do |tmp|
Dir.chdir('test') Dir.chdir('test')
Puppet::Face[:yardoc, :current].yardoc Puppet::Face[:strings, :current].yardoc
expect(read_html(tmp, 'test', 'test.html')).to have_tag('.docstring .discussion', :text => /This class/) expect(read_html(tmp, 'test', 'test.html')).to have_tag('.docstring .discussion', :text => /This class/)
end end
@ -70,32 +70,32 @@ describe Puppet::Face do
describe "modules action" do describe "modules action" do
it "should raise an error if yard is absent" do it "should raise an error if yard is absent" do
Puppet.features.stubs(:yard?).returns(false) Puppet.features.stubs(:yard?).returns(false)
expect{Puppet::Face[:yardoc, :current].modules}.to raise_error(RuntimeError, "The 'yard' gem must be installed in order to use this face.") expect{Puppet::Face[:strings, :current].modules}.to raise_error(RuntimeError, "The 'yard' gem must be installed in order to use this face.")
end end
it "should raise an error if rgen is absent" do it "should raise an error if rgen is absent" do
Puppet.features.stubs(:rgen?).returns(false) Puppet.features.stubs(:rgen?).returns(false)
expect{Puppet::Face[:yardoc, :current].modules}.to raise_error(RuntimeError, "The 'rgen' gem must be installed in order to use this face.") expect{Puppet::Face[:strings, :current].modules}.to raise_error(RuntimeError, "The 'rgen' gem must be installed in order to use this face.")
end end
it "should raise an error if the Ruby version is less than 1.9", :if => RUBY_VERSION.match(/^1\.8/) do it "should raise an error if the Ruby version is less than 1.9", :if => RUBY_VERSION.match(/^1\.8/) do
expect{Puppet::Face[:yardoc, :current].modules}.to raise_error(RuntimeError, "This face requires Ruby 1.9 or greater.") expect{Puppet::Face[:strings, :current].modules}.to raise_error(RuntimeError, "This face requires Ruby 1.9 or greater.")
end end
end end
describe "server action" do describe "server action" do
it "should raise an error if yard is absent" do it "should raise an error if yard is absent" do
Puppet.features.stubs(:yard?).returns(false) Puppet.features.stubs(:yard?).returns(false)
expect{Puppet::Face[:yardoc, :current].server}.to raise_error(RuntimeError, "The 'yard' gem must be installed in order to use this face.") expect{Puppet::Face[:strings, :current].server}.to raise_error(RuntimeError, "The 'yard' gem must be installed in order to use this face.")
end end
it "should raise an error if rgen is absent" do it "should raise an error if rgen is absent" do
Puppet.features.stubs(:rgen?).returns(false) Puppet.features.stubs(:rgen?).returns(false)
expect{Puppet::Face[:yardoc, :current].server}.to raise_error(RuntimeError, "The 'rgen' gem must be installed in order to use this face.") expect{Puppet::Face[:strings, :current].server}.to raise_error(RuntimeError, "The 'rgen' gem must be installed in order to use this face.")
end end
it "should raise an error if the Ruby version is less than 1.9", :if => RUBY_VERSION.match(/^1\.8/) do it "should raise an error if the Ruby version is less than 1.9", :if => RUBY_VERSION.match(/^1\.8/) do
expect{Puppet::Face[:yardoc, :current].server}.to raise_error(RuntimeError, "This face requires Ruby 1.9 or greater.") expect{Puppet::Face[:strings, :current].server}.to raise_error(RuntimeError, "This face requires Ruby 1.9 or greater.")
end end
end end

View File

@ -1,13 +1,13 @@
require 'spec_helper' require 'spec_helper'
require 'puppetx/yardoc/pops/yard_statement' require 'puppetx/strings/pops/yard_statement'
describe Puppetx::Yardoc::Pops do describe Puppetx::Strings::Pops do
let(:parser) {Puppet::Pops::Parser::Parser.new()} let(:parser) {Puppet::Pops::Parser::Parser.new()}
describe "YARDstatement class" do describe "YARDstatement class" do
let(:manifest) {"#hello world\nclass foo { }"} let(:manifest) {"#hello world\nclass foo { }"}
let(:model) {parser.parse_string(manifest).current.definitions.first} let(:model) {parser.parse_string(manifest).current.definitions.first}
let(:test_statement) {Puppetx::Yardoc::Pops::YARDStatement.new(model)} let(:test_statement) {Puppetx::Strings::Pops::YARDStatement.new(model)}
describe "when creating a new instance of YARDStatement" do describe "when creating a new instance of YARDStatement" do
it "should extract comments from the source code" do it "should extract comments from the source code" do
@ -19,13 +19,13 @@ describe Puppetx::Yardoc::Pops do
describe "YARDTransfomer class" do describe "YARDTransfomer class" do
let(:manifest) {"#hello world\nclass foo($bar) { }"} let(:manifest) {"#hello world\nclass foo($bar) { }"}
let(:manifest_default) {"#hello world\nclass foo($bar = 3) { }"} let(:manifest_default) {"#hello world\nclass foo($bar = 3) { }"}
let(:transformer) {Puppetx::Yardoc::Pops::YARDTransformer.new} let(:transformer) {Puppetx::Strings::Pops::YARDTransformer.new}
describe "transform method" do describe "transform method" do
it "should perform the correct transformation with parameter defaults" do it "should perform the correct transformation with parameter defaults" do
model = parser.parse_string(manifest_default).current.definitions.first model = parser.parse_string(manifest_default).current.definitions.first
statements = transformer.transform(model) statements = transformer.transform(model)
expect(statements.parameters[0][0].class).to be(Puppetx::Yardoc::Pops::YARDStatement) expect(statements.parameters[0][0].class).to be(Puppetx::Strings::Pops::YARDStatement)
end end
it "should perform the correct transofmration without parameter defaults" do it "should perform the correct transofmration without parameter defaults" do

View File

@ -1,5 +1,5 @@
require 'spec_helper' require 'spec_helper'
require 'puppetx/yardoc/yard/handlers/defined_type_handler' require 'puppetx/strings/yard/handlers/defined_type_handler'
require 'strings_spec/parsing' require 'strings_spec/parsing'

View File

@ -1,5 +1,5 @@
require 'spec_helper' require 'spec_helper'
require 'puppetx/yardoc/yard/handlers/future_parser_function_handler' require 'puppetx/strings/yard/handlers/future_parser_function_handler'
require 'strings_spec/parsing' require 'strings_spec/parsing'
describe "FutureParserDispatchHandler" do describe "FutureParserDispatchHandler" do

View File

@ -1,5 +1,5 @@
require 'spec_helper' require 'spec_helper'
require 'puppetx/yardoc/yard/handlers/host_class_handler' require 'puppetx/strings/yard/handlers/host_class_handler'
require 'strings_spec/parsing' require 'strings_spec/parsing'
describe "HostClassDefintion" do describe "HostClassDefintion" do

View File

@ -1,5 +1,5 @@
require 'spec_helper' require 'spec_helper'
require 'puppetx/yardoc/yard/handlers/parser_function_handler' require 'puppetx/strings/yard/handlers/parser_function_handler'
require 'strings_spec/parsing' require 'strings_spec/parsing'
describe "ParserFunctionHanlder" do describe "ParserFunctionHanlder" do