class InstanceAgent::Plugins::CodeDeployPlugin::ApplicationSpecification::LinuxPermissionInfo
Helper Class for storing data parsed from permissions list
Attributes
acls[R]
context[R]
except[R]
group[R]
mode[R]
object[R]
owner[R]
pattern[R]
type[R]
Public Class Methods
new(object, opts = {})
click to toggle source
# File lib/instance_agent/plugins/codedeploy/application_specification/linux_permission_info.rb, line 9 def initialize(object, opts = {}) object = object.to_s if (object.empty?) raise AppSpecValidationException, 'Permission needs a object value' end @object = object @pattern = opts[:pattern] || "**" @except = opts[:except] || [] @type = opts[:type] || ["file", "directory"] @owner = opts[:owner] @group = opts[:group] @mode = opts[:mode] @acls = opts[:acls] @context = opts[:context] end
Public Instance Methods
matches_except?(name)
click to toggle source
# File lib/instance_agent/plugins/codedeploy/application_specification/linux_permission_info.rb, line 61 def matches_except?(name) name = name.chomp(File::SEPARATOR) base_object = sanitize_dir_path(@object) if !base_object.end_with?(File::SEPARATOR) base_object = base_object + File::SEPARATOR end if name.start_with?(base_object) rel_name = name[base_object.length..name.length] @except.each do |item| if matches_simple_glob(rel_name, item) return true end end end false end
matches_pattern?(name)
click to toggle source
# File lib/instance_agent/plugins/codedeploy/application_specification/linux_permission_info.rb, line 45 def matches_pattern?(name) name = name.chomp(File::SEPARATOR) base_object = sanitize_dir_path(@object) if !base_object.end_with?(File::SEPARATOR) base_object = base_object + File::SEPARATOR end if name.start_with?(base_object) if ("**".eql?(@pattern)) return true end rel_name = name[base_object.length..name.length] return matches_simple_glob(rel_name, @pattern) end false end
validate_file_acl(object)
click to toggle source
# File lib/instance_agent/plugins/codedeploy/application_specification/linux_permission_info.rb, line 36 def validate_file_acl(object) if !@acls.nil? default_acl = @acls.get_default_ace if !default_acl.nil? raise "Attempt to set default acl #{default_acl} on file #{object}" end end end
validate_file_permission()
click to toggle source
# File lib/instance_agent/plugins/codedeploy/application_specification/linux_permission_info.rb, line 25 def validate_file_permission() if @type.include?("file") if !"**".eql?(@pattern) raise AppSpecValidationException, "Attempt to use pattern #{@pattern} when assigning permissions to file #{@object}" end if !@except.empty? raise AppSpecValidationException, "Attempt to use except #{@except} when assigning permissions to file #{@object}" end end end
Private Instance Methods
expand(option)
click to toggle source
# File lib/instance_agent/plugins/codedeploy/application_specification/linux_permission_info.rb, line 103 def expand(option) previous_option = nil while "*".eql?(option[0]) do previous_option = Array.new(option) option.shift end previous_option.nil? ? [option] : [previous_option, option] end
matches_simple_glob(name, pattern)
click to toggle source
# File lib/instance_agent/plugins/codedeploy/application_specification/linux_permission_info.rb, line 79 def matches_simple_glob(name, pattern) if name.include?(File::SEPARATOR) return false end options = expand(pattern.chars.entries) name.chars.each do |char| new_options = [] options.each do |option| if option[0].eql?("*") new_options.concat(expand(option)) elsif option[0].eql?(char) option.shift new_options.concat(expand(option)) end end options = new_options if (options.include?(["*"])) return true end end options.include?([]) end
sanitize_dir_path(path)
click to toggle source
# File lib/instance_agent/plugins/codedeploy/application_specification/linux_permission_info.rb, line 113 def sanitize_dir_path(path) File.expand_path(path) end