Class: Wox::BuildEnvironment

Inherits:
Object
  • Object
show all
Defined in:
lib/wox/build_environment.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ BuildEnvironment

Returns a new instance of BuildEnvironment.



14
15
16
17
18
19
20
21
22
23
# File 'lib/wox/build_environment.rb', line 14

def initialize options
  options[:info_plist] ||= 'Resources/Info.plist'
  options[:version] ||= Plist::parse_xml(options[:info_plist])['CFBundleVersion']
  options[:project_name] ||= xcodebuild_list.first.scan(/project\s\"([^\"]+)/i).flatten.first
  options[:build_dir] ||= 'build'
  options[:sdk] ||= 'iphoneos'
  options[:configuration] ||= 'Release'
  options[:target] ||= targets.first
  @options = options
end

Instance Attribute Details

#build_dirObject (readonly)

Returns the value of attribute build_dir.



12
13
14
# File 'lib/wox/build_environment.rb', line 12

def build_dir
  @build_dir
end

#default_sdkObject (readonly)

Returns the value of attribute default_sdk.



12
13
14
# File 'lib/wox/build_environment.rb', line 12

def default_sdk
  @default_sdk
end

#info_plistObject (readonly)

Returns the value of attribute info_plist.



12
13
14
# File 'lib/wox/build_environment.rb', line 12

def info_plist
  @info_plist
end

Instance Method Details

#[](name) ⇒ Object



61
62
63
64
# File 'lib/wox/build_environment.rb', line 61

def [](name)
  fail "You need to specify :#{name} in Rakefile" unless @options[name]
  @options[name]
end

#apply(options) {|BuildEnvironment.new @options.merge(options)| ... } ⇒ Object

Yields:



25
26
27
# File 'lib/wox/build_environment.rb', line 25

def apply options, &block
  yield BuildEnvironment.new @options.merge(options)
end

#configuration_symObject



66
67
68
# File 'lib/wox/build_environment.rb', line 66

def configuration_sym
  self[:configuration].gsub(' ', '_').downcase
end

#configurationsObject



45
46
47
48
49
50
51
# File 'lib/wox/build_environment.rb', line 45

def configurations
  @configurations ||= begin
    start_line = xcodebuild_list.find_index{ |l| l =~ /configurations/i } + 1
    end_line = xcodebuild_list.find_index{ |l| l =~ /if no/i } - 1
    xcodebuild_list.slice start_line...end_line
  end
end

#full_nameObject



37
38
39
# File 'lib/wox/build_environment.rb', line 37

def full_name
  "#{project_name} #{version}"
end

#ipa_fileObject



70
71
72
# File 'lib/wox/build_environment.rb', line 70

def ipa_file
  File.join self[:build_dir], "#{project_name}-#{version}-#{configuration_sym}-#{self[:ipa_name]}.ipa"
end

#project_nameObject



29
30
31
# File 'lib/wox/build_environment.rb', line 29

def project_name
  self[:project_name] 
end

#sdksObject



41
42
43
# File 'lib/wox/build_environment.rb', line 41

def sdks
  @sdks ||= `xcodebuild -showsdks`.scan(/-sdk (.*?$)/m).flatten
end

#targetsObject



53
54
55
56
57
58
59
# File 'lib/wox/build_environment.rb', line 53

def targets
  @targets ||= begin
    start_line = xcodebuild_list.find_index{ |l| l =~ /targets/i } + 1
    end_line = xcodebuild_list.find_index{ |l| l =~ /configurations/i } - 1
    xcodebuild_list.slice start_line...end_line
  end
end

#versionObject



33
34
35
# File 'lib/wox/build_environment.rb', line 33

def version
  self[:version]
end