module Unix::File

Public Instance Methods

cat(path) click to toggle source
# File lib/beaker/host/unix/file.rb, line 61
def cat(path)
  execute("cat #{path}")
end
chgrp(group, path, recursive = false) click to toggle source

Change group ownership of a path

@see pubs.opengroup.org/onlinepubs/9699919799/utilities/chgrp.html

@param [String] group Group to chgrp to @param [String] path Path to chgrp @param [Boolean] recursive Whether to pass the recursive flag

@return [Beaker::Result] result of command execution

# File lib/beaker/host/unix/file.rb, line 46
def chgrp(group, path, recursive = false)
  execute("chgrp #{recursive ? '-R ' : ''}#{group} #{path}")
end
chmod(mod, path, recursive = false) click to toggle source
# File lib/beaker/host/unix/file.rb, line 33
def chmod(mod, path, recursive = false)
  execute("chmod #{recursive ? '-R ' : ''}#{mod} #{path}")
end
chown(user, path, recursive = false) click to toggle source

Change user ownership of a path

@see pubs.opengroup.org/onlinepubs/9699919799/utilities/chown.html

@note To maintain argument order consistency with the underlying

syscall, avoid having to specify nil arguments, and not do
anything hacky with the arguments list, this method does not
allow you to modify group ownership. Use Host::chgrp instead.

@param [String] user User to chown to @param [String] path Path to chown @param [Boolean] recursive Whether to pass the recursive flag

@return [Beaker::Result] result of command execution

# File lib/beaker/host/unix/file.rb, line 29
def chown(user, path, recursive = false)
  execute("chown #{recursive ? '-R ' : ''}#{user} #{path}")
end
file_exist?(path) click to toggle source
# File lib/beaker/host/unix/file.rb, line 79
def file_exist?(path)
  result = exec(Beaker::Command.new("test -e #{path}"), :acceptable_exit_codes => [0, 1])
  result.exit_code == 0
end
ls_ld(path) click to toggle source

List long output of a path

@see pubs.opengroup.org/onlinepubs/9699919799/utilities/ls.html

@param [String] path Path to list properties of

@return [Beaker::Result] result of command execution

# File lib/beaker/host/unix/file.rb, line 57
def ls_ld(path)
  execute("ls -ld #{path}")
end
noask_file_text() click to toggle source

Returns the noask file text for Solaris hosts

@raise [ArgumentError] If called on a host with a platform that’s not Solaris

@return [String] the text of the noask file

# File lib/beaker/host/unix/file.rb, line 158
  def noask_file_text
    if self['platform'].variant == 'solaris' && self['platform'].version == '10'
      noask = <<~NOASK
        # Write the noask file to a temporary directory
        # please see man -s 4 admin for details about this file:
        # http://www.opensolarisforum.org/man/man4/admin.html
        #
        # The key thing we don't want to prompt for are conflicting files.
        # The other nocheck settings are mostly defensive to prevent prompts
        # We _do_ want to check for available free space and abort if there is
        # not enough
        mail=
        # Overwrite already installed instances
        instance=overwrite
        # Do not bother checking for partially installed packages
        partial=nocheck
        # Do not bother checking the runlevel
        runlevel=nocheck
        # Do not bother checking package dependencies (We take care of this)
        idepend=nocheck
        rdepend=nocheck
        # DO check for available free space and abort if there isn't enough
        space=quit
        # Do not check for setuid files.
        setuid=nocheck
        # Do not check if files conflict with other packages
        conflict=nocheck
        # We have no action scripts.  Do not check for them.
        action=nocheck
        # Install to the default base directory.
        basedir=default
      NOASK
    else
      msg = "noask file text unknown for platform '#{self['platform']}'"
      raise ArgumentError, msg
    end
    noask
  end
package_config_dir() click to toggle source

Gets the config dir location for package information

@raise [ArgumentError] For an unknown platform

@return [String] Path to package config dir

# File lib/beaker/host/unix/file.rb, line 89
def package_config_dir
  case self['platform']
  when /amazon|fedora|el-|redhat|centos/
    '/etc/yum.repos.d/'
  when /opensuse|sles/
    '/etc/zypp/repos.d/'
  when /debian|ubuntu/
    '/etc/apt/sources.list.d'
  else
    msg = "package config dir unknown for platform '#{self['platform']}'"
    raise ArgumentError, msg
  end
end
path_split(paths) click to toggle source
# File lib/beaker/host/unix/file.rb, line 75
def path_split(paths)
  paths.split(':')
end
repo_filename(package_name, build_version) click to toggle source

Returns the repo filename for a given package & version for a platform

@param [String] package_name Name of the package @param [String] build_version Version string of the package

@raise [ArgumentError] For an unknown platform

@return [String] Filename of the repo

# File lib/beaker/host/unix/file.rb, line 111
def repo_filename(package_name, build_version)
  variant, version, arch, codename = self['platform'].to_array
  repo_filename = format("pl-%s-%s-", package_name, build_version)

  case variant
  when /amazon|fedora|el|redhat|centos|opensuse|sles/
    variant = 'el' if %w[centos redhat].include?(variant)

    variant = 'redhatfips' if self['packaging_platform']&.include?('redhatfips')

    fedora_prefix = (variant == 'fedora' ? 'f' : '')

    pattern = "%s-%s%s-%s.repo"

    repo_filename << (format(pattern, variant, fedora_prefix, version, arch))
  when /debian|ubuntu/
    repo_filename << (format("%s.list", codename))
  else
    msg = "#repo_filename: repo filename pattern not known for platform '#{self['platform']}'"
    raise ArgumentError, msg
  end

  repo_filename
end
repo_type() click to toggle source

Gets the repo type for the given platform

@raise [ArgumentError] For an unknown platform

@return [String] Type of repo (rpm|deb)

# File lib/beaker/host/unix/file.rb, line 141
def repo_type
  case self['platform']
  when /amazon|fedora|el-|redhat|centos|opensuse|sles/
    'rpm'
  when /debian|ubuntu/
    'deb'
  else
    msg = "#repo_type: repo type not known for platform '#{self['platform']}'"
    raise ArgumentError, msg
  end
end
scp_path(path) click to toggle source

Handles any changes needed in a path for SCP

@param [String] path File path to SCP to

@return [String] path, changed if needed due to host

constraints
# File lib/beaker/host/unix/file.rb, line 71
def scp_path(path)
  path
end
system_temp_path() click to toggle source
# File lib/beaker/host/unix/file.rb, line 12
def system_temp_path
  '/tmp'
end
tmpdir(name = '') click to toggle source
# File lib/beaker/host/unix/file.rb, line 8
def tmpdir(name = '')
  execute("mktemp -dt #{name}.XXXXXX")
end
tmpfile(name = '', extension = nil) click to toggle source
# File lib/beaker/host/unix/file.rb, line 4
def tmpfile(name = '', extension = nil)
  execute("mktemp -t #{name}.XXXXXX#{extension}")
end

Protected Instance Methods

scp_post_operations(_scp_file_actual, _scp_file_target) click to toggle source

Handles host operations needed after an SCP takes place

@param [String] scp_file_actual File path to actual SCP’d file on host @param [String] scp_file_target File path to target SCP location on host

@return nil

# File lib/beaker/host/unix/file.rb, line 205
def scp_post_operations(_scp_file_actual, _scp_file_target)
  nil
end