Sha256: ef7439fdd133c5621412941a3636b21cb3c06a5a0468884fe3e7845507437947

Contents?: true

Size: 1.7 KB

Versions: 112

Compression:

Stored size: 1.7 KB

Contents

class Specinfra::Command::Freebsd::V8::Package < Specinfra::Command::Freebsd::Base::Package
  class << self
    def pkg_info_pattern(package)
      # allow portorigin (origin/portname) as package argument, so that we get
      # similar answers from either "pkg info" and "pkg_info"
      "^#{package.split('/', 2)[-1]}-[0-9][0-9a-zA-Z_\.,]*$"
    end

    def shell_check_pkgng
      # See manpage of pkg(8), the paragraph devoted to -N flag
      # https://www.freebsd.org/cgi/man.cgi?query=pkg
      'TMPDIR=/dev/null ASSUME_ALWAYS_YES=1 PACKAGESITE=file:///nonexist ' \
      'pkg info -x \'pkg(-devel)?$\' > /dev/null 2>&1'
    end

    def shell_ifelse(cond, stmt_t, stmt_f)
      "if #{cond}; then #{stmt_t}; else #{stmt_f}; fi"
    end

    def check_is_installed(package, version = nil)
      if version
        shell_ifelse(
          shell_check_pkgng(),
          "pkg query %v #{escape(package)} | grep -- #{escape(version)}",
          "pkg_info -I #{escape(package)}-#{escape(version)}"
        )
      else
        pattern = pkg_info_pattern(package)
        shell_ifelse(
          shell_check_pkgng(),
          "pkg info -e #{escape(package)}",
          "pkg_info -Ix #{escape(pattern)}"
        )
      end
    end

    def install(package, _version = nil, option = '')
      shell_ifelse(
        shell_check_pkgng(),
        "pkg install -y #{option} #{package}",
        "pkg_add -r #{option} #{package}"
      )
    end

    def get_version(package, _options = nil)
      pattern = pkg_info_pattern(package)
      shell_ifelse(
        shell_check_pkgng(),
        "pkg query %v #{escape(package)}",
        "pkg_info -Ix #{escape(pattern)} | cut -f 1 -w | sed -n 's/^#{escape(package)}-//p'"
      )
    end
  end
end

Version data entries

112 entries across 112 versions & 1 rubygems

Version Path
specinfra-2.82.25 lib/specinfra/command/freebsd/v8/package.rb
specinfra-2.82.24 lib/specinfra/command/freebsd/v8/package.rb
specinfra-2.82.23 lib/specinfra/command/freebsd/v8/package.rb
specinfra-2.82.22 lib/specinfra/command/freebsd/v8/package.rb
specinfra-2.82.21 lib/specinfra/command/freebsd/v8/package.rb
specinfra-2.82.20 lib/specinfra/command/freebsd/v8/package.rb
specinfra-2.82.19 lib/specinfra/command/freebsd/v8/package.rb
specinfra-2.82.18 lib/specinfra/command/freebsd/v8/package.rb
specinfra-2.82.17 lib/specinfra/command/freebsd/v8/package.rb
specinfra-2.82.16 lib/specinfra/command/freebsd/v8/package.rb
specinfra-2.82.15 lib/specinfra/command/freebsd/v8/package.rb
specinfra-2.82.14 lib/specinfra/command/freebsd/v8/package.rb
specinfra-2.82.13 lib/specinfra/command/freebsd/v8/package.rb
specinfra-2.82.12 lib/specinfra/command/freebsd/v8/package.rb
specinfra-2.82.11 lib/specinfra/command/freebsd/v8/package.rb
specinfra-2.82.10 lib/specinfra/command/freebsd/v8/package.rb
specinfra-2.82.9 lib/specinfra/command/freebsd/v8/package.rb
specinfra-2.82.8 lib/specinfra/command/freebsd/v8/package.rb
specinfra-2.82.7 lib/specinfra/command/freebsd/v8/package.rb
specinfra-2.82.6 lib/specinfra/command/freebsd/v8/package.rb