Class: Snapshot::SnapshotFile

Inherits:
Object
  • Object
show all
Defined in:
lib/snapshot/snapshot_file.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path, config) ⇒ SnapshotFile

Returns a new instance of SnapshotFile.

Parameters:

  • path (String)

    the path to the config file to use (including the file name)



8
9
10
11
12
13
14
15
16
# File 'lib/snapshot/snapshot_file.rb', line 8

def initialize(path, config)
  raise "Config file not found at path '#{path}'".red unless File.exists?(path.to_s)

  self.path = path

  @config = config

  eval(File.read(self.path))
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_sym, *arguments, &block) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/snapshot/snapshot_file.rb', line 18

def method_missing(method_sym, *arguments, &block)
  if ["setup", "teardown"].any?{|a| method_sym.to_s.include?a }
    value = nil # this is a block
  else
    value = arguments.first || (block.call if block_given?) # this is either a block or a value
  end

  case method_sym
    when :devices
      self.verify_devices(value)
    when :languages
      @config.languages = value
    when :ios_version
      raise "ios_version has to be an String".red unless value.kind_of?String
      @config.ios_version = value
    when :scheme
      raise "scheme has to be an String".red unless value.kind_of?String
      @config.manual_scheme = value
    when :js_file
      raise "js_file has to be an String".red unless value.kind_of?String
      raise "js_file at path '#{value}' not found".red unless File.exists?value
      @config.manual_js_file = value.gsub("~", ENV['HOME'])
    when :screenshots_path
      raise "screenshots_path has to be an String".red unless value.kind_of?String
      @config.screenshots_path = value.gsub("~", ENV['HOME'])
    when :html_path
      raise "html_path has to be an String".red unless value.kind_of?String
      @config.html_path = value.gsub("~", ENV['HOME'])
      @config.html_path = @config.html_path + "/screenshots.html" unless @config.html_path.include?".html"
    when :build_command
      raise "build_command has to be an String".red unless value.kind_of?String
      @config.build_command = value
    when :skip_alpha_removal
      @config.skip_alpha_removal = true
    when :project_path
      raise "project_path has to be an String".red unless value.kind_of?String

      if File.exists?value and (value.end_with?".xcworkspace" or value.end_with?".xcodeproj")
        @config.project_path = value.gsub("~", ENV['HOME'])
      else
        raise "The given project_path '#{value}' could not be found. Make sure to include the extension as well.".red
      end

    # Blocks
    when :setup_for_device_change, :teardown_device, :setup_for_language_change, :teardown_language
      raise "#{method_sym} needs to have a block provided." unless block_given?
      @config.blocks[method_sym] = block
    else
      Helper.log.error "Unknown method #{method_sym}"
    end
end

Instance Attribute Details

#pathString

Returns The path to the used Deliverfile.

Returns:

  • (String)

    The path to the used Deliverfile.



5
6
7
# File 'lib/snapshot/snapshot_file.rb', line 5

def path
  @path
end

Instance Method Details

#verify_devices(value) ⇒ Object



70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/snapshot/snapshot_file.rb', line 70

def verify_devices(value)
  raise "Devices has to be an array".red unless value.kind_of?Array
  @config.devices = []
  value.each do |current|
    current += " (#{@config.ios_version} Simulator)" unless current.include?"Simulator"

    unless Simulators.available_devices.include?current
      raise "Device '#{current}' not found. Available device types: #{Simulators.available_devices}".red
    else
      @config.devices << current
    end
  end
end