Sha256: b0924dd62a69b6f9bf976d0070592d8debe5e3e5fb3ec3eb568ea177447a6302

Contents?: true

Size: 1.6 KB

Versions: 4

Compression:

Stored size: 1.6 KB

Contents

require 'pdk'

module PDK
  module Generate
    class Function < PuppetObject
      def initialize(*_args)
        super
        object_name_parts = @object_name.split('::')

        @object_name = if object_name_parts.first == module_name
                         object_name
                       else
                         [module_name, object_name].join('::')
                       end
      end

      def friendly_name
        'Function'.freeze
      end

      def template_files
        # Calculate the function tests name
        func_name_parts = object_name.split('::')
        # Drop the module name if the object name contains multiple parts
        func_name_parts.delete_at(0) if func_name_parts.length > 1
        files = {
          File.join('functions', 'function_spec.erb') => "#{File.join('spec', 'functions', *func_name_parts)}_spec.rb"
        }
        return files if spec_only?

        func_name_parts = object_name.split('::')[1..]
        template_file = File.join('functions', "#{options[:type]}_function.erb")

        files[template_file] = if options[:type].eql?('v4')
                                 "#{File.join('lib', 'puppet', 'functions', module_name, *func_name_parts)}.rb"
                               else
                                 "#{File.join('functions', *func_name_parts)}.pp"
                               end
        files
      end

      def template_data
        func_name = object_name.split('::').last
        namespace = object_name.split('::')[0...-1].join('::')
        { name: object_name, func_name: func_name, namespace: namespace }
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
pdk-3.4.0 lib/pdk/generate/function.rb
pdk-3.3.0 lib/pdk/generate/function.rb
pdk-3.0.1 lib/pdk/generate/function.rb
pdk-3.0.0 lib/pdk/generate/function.rb