Sha256: 19083fd03678a9b9771aabf551c1972c0aad21ac88f479a0080fd8fd9db56d58

Contents?: true

Size: 1.3 KB

Versions: 2

Compression:

Stored size: 1.3 KB

Contents

# frozen_string_literal: true

require 'etc'
require 'facets/file/atomic_write'
require 'facets/string/word_wrap'
require 'open3'
require 'uri'
require 'yaml'
require 'xezat'

module Xezat
  def variables(cygport)
    cygport_dir = File.dirname(File.absolute_path(cygport))
    cache_file = File.expand_path(File.join(cygport_dir, "#{File.basename(cygport, '.cygport')}.#{Etc.uname[:machine]}.yml"))

    Xezat.logger.debug('  Extract variables')

    if File.exist?(cache_file) && File.ctime(cache_file) > File.ctime(cygport)
      Xezat.logger.debug('    Read cache for variables')
      return YAML.safe_load(File.open(cache_file), [Symbol]).each do |k, v|
        v.strip! if v.respond_to?(:strip) && k != :DESCRIPTION
      end
    end

    command = ['bash', File.expand_path(File.join(DATA_DIR, 'show_cygport_variable.sh')), cygport]
    result, error, status = Open3.capture3(command.join(' '))
    raise CygportProcessError, error unless status.success?

    result.gsub!(/^.*\*\*\*.*$/, '')

    variables = YAML.safe_load(result, [Symbol]).each_value do |v|
      v.strip! if v.respond_to?(:strip)
    end
    variables[:DESCRIPTION].word_wrap!(79)

    File.atomic_write(cache_file) do |f|
      Xezat.logger.debug('    Write cache for variables')
      f.write(YAML.dump(variables))
    end

    variables
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
xezat-0.2.2 lib/xezat/variables.rb
xezat-0.2.1 lib/xezat/variables.rb