Yes, that's what I recommend.

You might be able to stub out the FileParsing portions of ParsedFile - that is, the bits that give you 'record_line' and 'text_line', and just leave the reading/writing bits.

However, you're likely better off starting from scratch.

On Apr 18, 2010, at 11:01 PM, Maxim Ianoglo wrote:

Hello,

What are you trying to accomplish that led you down this path?
I am trying to make a simple text line type that will work like:
http://projects.puppetlabs.com/projects/puppet/wiki/Simple_Text_Patterns
But without using external programs.
Also I wanted to add the ability to to search the line by regex.

I thought that using ParsedFile this would be easier, but seems that I
will have to write it using simple puppet type and provider.

Thank you.
--
Maxim Ianoglo

On Apr 18, 8:55 pm, Luke Kanies <[email protected]> wrote:
On Apr 16, 2010, at 10:43 AM, Maxim Ianoglo wrote:





Hello,

Trying to make a custom type

Type:
module Puppet
   newtype(:simple_line) do

       ensurable

       newparam(:name) do
           isnamevar
       end

       newproperty(:target) do
           defaultto {
               if
@resource.class.defaultprovider.ancestors.include?
Puppet::Provider::ParsedFile
                   @resource.class.defaultprovider.default_target
               else
                   nil
               end
           }
       end

       newproperty(:pcre_pattern) do
           validate do |value|
               if value.class != String
                   raise ArgumentError, "Shoult be string"
               else
                   super
               end
           end
       end

       newproperty(:line) do
           validate do |value|
               if value.is_a? String
                   raise ArgumentError, "Shoult be string"
               else
                   super
               end
           end
       end
   end
end

Provider:
require 'puppet/provider/parsedfile'

target = "/tmp/simple_line_dummy_file"

Puppet::Type.type(:simple_line).provide(
   :parsed,
   :parent => Puppet::Provider::ParsedFile,
   :default_target => target,
   :filetype => :flat
) do

   text_line :comment,
             :match => @resource.value(:pcre_pattern)

Here's your problem - @resource is being evaluated in the provider
class, where it resolves to nil.

There isn't really any good way to have ParsedFile dynamically split
files based on a value passed into a resource - the regex in that case
is resource-specific, but the file covers many resources.

What are you trying to accomplish that led you down this path?

   text_line :blank,
             :match => /^\s*$/

   record_line :parsed,
               :fields => %w{line}
end

But I keep getting this error: NoMethodError: undefined method `value'
for nil:NilClass

How can i fix this ?

--
Getting caught is the mother of invention. --Robert Byrne
---------------------------------------------------------------------
Luke Kanies  -|-  http://puppetlabs.com  -|-   +1(615)594-8199

--
You received this message because you are subscribed to the Google Groups "Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected] . For more options, visit this group athttp://groups.google.com/group/puppet-dev?hl=en .

--
You received this message because you are subscribed to the Google Groups "Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected] . For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en .



--
If you would be a real seeker after truth, it is necessary that at
least once in your life you doubt, as far as possible, all things.
    -- Rene Descartes
---------------------------------------------------------------------
Luke Kanies  -|-   http://puppetlabs.com   -|-   +1(615)594-8199

--
You received this message because you are subscribed to the Google Groups "Puppet 
Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to