class Wright::Util::FileOwner

Helper class to support user:group notation in file owner strings.

Attributes

group[RW]

@return [String, Integer] the group's name or gid

user[RW]

@return [String, Integer] the user's name or uid

Public Class Methods

new(user_and_group = nil, group = nil) click to toggle source
# File lib/wright/util/file_owner.rb, line 12
def initialize(user_and_group = nil, group = nil)
  self.user_and_group = user_and_group
  self.group = group if group
end

Public Instance Methods

user_and_group=(user_and_group) click to toggle source

Sets user and group simultaneously.

@param user_and_group [String, Integer] a user in user:group

notation or a uid

@example

owner = FileOwner.new

owner.user_and_group = 'user:group'
owner.user
# => "user"
owner.group
# => "group"

owner.user_and_group = 'newuser'
owner.user
# => "newuser"
owner.group
# => "group"

owner.user_and_group = 42
owner.user
# => 42

@return [void] @raise [ArgumentError] if the owner string contains more than

one colon
# File lib/wright/util/file_owner.rb, line 44
def user_and_group=(user_and_group)
  user, group = split_user_and_group(user_and_group)
  self.user = user
  self.group = group if group
end

Private Instance Methods

split_user_and_group(user_and_group) click to toggle source
# File lib/wright/util/file_owner.rb, line 52
def split_user_and_group(user_and_group)
  user = user_and_group
  group = nil
  return [user, group] unless user_and_group.is_a?(String)

  if user_and_group.count(':') > 1
    fail ArgumentError, "Invalid owner: '#{user_and_group}'"
  end

  user, group = user_and_group.split(':')
  [user, group]
end