Class BoxGrinder::FSObserver
In: lib/boxgrinder-build/util/permissions/fs-observer.rb
lib/boxgrinder-build/util/permissions/fs-observer.rb
Parent: Object

Methods

new   new   update   update  

Attributes

filter_set  [RW] 
filter_set  [RW] 
path_set  [RW] 
path_set  [RW] 

Public Class methods

@param [Integer] user The uid to switch from root to @param [Integer] group The gid to switch from root to @param [Hash] opts The options to create a observer with @option opts [Array<String>] :paths Additional paths to change

  ownership of.

@option opts [String] :paths Additional path to to change ownership of

[Source]

    # File lib/boxgrinder-build/util/permissions/fs-observer.rb, line 34
34:     def initialize(user, group, opts={})
35:       @path_set = Set.new(Array(opts[:paths]))
36:       # Filter some default directories, plus any subdirectories of
37:       # paths we discover at runtime
38:       @filter_set = Set.new([%r(^/(etc|dev|sys|bin|sbin|etc|lib|lib64|boot|run|proc|selinux|tmp)(/|$))])
39:       @user = user
40:       @group = group
41:     end

@param [Integer] user The uid to switch from root to @param [Integer] group The gid to switch from root to @param [Hash] opts The options to create a observer with @option opts [Array<String>] :paths Additional paths to change

  ownership of.

@option opts [String] :paths Additional path to to change ownership of

[Source]

    # File lib/boxgrinder-build/util/permissions/fs-observer.rb, line 34
34:     def initialize(user, group, opts={})
35:       @path_set = Set.new(Array(opts[:paths]))
36:       # Filter some default directories, plus any subdirectories of
37:       # paths we discover at runtime
38:       @filter_set = Set.new([%r(^/(etc|dev|sys|bin|sbin|etc|lib|lib64|boot|run|proc|selinux|tmp)(/|$))])
39:       @user = user
40:       @group = group
41:     end

Public Instance methods

Receives updates from FSMonitor#add_path

@param [Hash] opts The options to update the observer @option opts [:symbol] :command The command to instruct the

  observer to execute.
  * +:add_path+ Indicates the +:data+ field contains a path.
  * +:stop_capture+ indicates that capturing has ceased. The
      observer will change ownership of the files, and switch
      to the user specified at #initialize.

@option opts [String] :data Contains a resource path when the

  * +:add_path+ Command is called, otherwise ignored.

[Source]

    # File lib/boxgrinder-build/util/permissions/fs-observer.rb, line 54
54:     def update(update={})
55:       case update[:command]
56:         when :add_path
57:           unless match_filter?(update[:data])
58:             @path_set.add(update[:data])
59:             @filter_set.merge(subdirectory_regex(update[:data]))
60:           end
61:         when :stop_capture, :chown
62:           do_chown
63:       end
64:     end

Receives updates from FSMonitor#add_path

@param [Hash] opts The options to update the observer @option opts [:symbol] :command The command to instruct the

  observer to execute.
  * +:add_path+ Indicates the +:data+ field contains a path.
  * +:stop_capture+ indicates that capturing has ceased. The
      observer will change ownership of the files, and switch
      to the user specified at #initialize.

@option opts [String] :data Contains a resource path when the

  * +:add_path+ Command is called, otherwise ignored.

[Source]

    # File lib/boxgrinder-build/util/permissions/fs-observer.rb, line 54
54:     def update(update={})
55:       case update[:command]
56:         when :add_path
57:           unless match_filter?(update[:data])
58:             @path_set.add(update[:data])
59:             @filter_set.merge(subdirectory_regex(update[:data]))
60:           end
61:         when :stop_capture, :chown
62:           do_chown
63:       end
64:     end

[Validate]