Class: IosAndroidToolbox::IosVersionController

Inherits:
VersionController show all
Defined in:
lib/ios_android_toolbox/ios.rb

Constant Summary collapse

BUILD_VERSION_KEY =

User as Build or release candidate

'CFBundleVersion'
BUNDLE_VERSION_KEY =

Use as Version

'CFBundleShortVersionString'
URL_TYPES_KEY =
"CFBundleURLTypes"
URL_SCHEMES_KEY =
"CFBundleURLSchemes"
BUNDLE_IDENTIFIER_KEY =
"CFBundleIdentifier"
BUNDLE_DISPLAY_NAME =
"CFBundleDisplayName"
BUNDLE_NAME =
"CFBundleName"
BUNDLE_ICON_FILES =
"CFBundleIconFiles"

Instance Attribute Summary

Attributes inherited from VersionController

#inc_idx, #max_comps

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from VersionController

#components, find_project_info, #suffix, version_file

Constructor Details

#initialize(version_file) ⇒ IosVersionController

Returns a new instance of IosVersionController.



39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/ios_android_toolbox/ios.rb', line 39

def initialize(version_file)
  super()
  raise "No version file specified" if version_file.nil?

  begin
    @dict = Plist.parse_xml(version_file)
  rescue
    raise "Cannot parse file #{version_file}"
  end

  raise "File #{version_file} does not have a #{BUNDLE_VERSION_KEY} key" if @dict[BUNDLE_VERSION_KEY].nil?
    
  self
end

Class Method Details

.find_project_info_candidates_for_dir(dir) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/ios_android_toolbox/ios.rb', line 20

def self.find_project_info_candidates_for_dir(dir)
  candidates = []
  
  plists=`find "#{dir}" -name "*.plist"`
  
  plists.split("\n").each do |filename|
    if File.exists?(filename)
      begin
        dict = Plist.parse_xml(filename)
        candidates.push filename if dict and dict[BUNDLE_VERSION_KEY]
      rescue
        # Do nothing, just skip the file. Must be in binary format
      end
    end
  end

  candidates
end

Instance Method Details

#app_idObject



74
75
76
# File 'lib/ios_android_toolbox/ios.rb', line 74

def app_id
  bundle_id
end

#build_numberObject



82
83
84
# File 'lib/ios_android_toolbox/ios.rb', line 82

def build_number
  @dict[BUILD_VERSION_KEY]
end

#bundle_display_nameObject



62
63
64
# File 'lib/ios_android_toolbox/ios.rb', line 62

def bundle_display_name
  @dict[BUNDLE_DISPLAY_NAME]
end

#bundle_icon_filesObject



70
71
72
# File 'lib/ios_android_toolbox/ios.rb', line 70

def bundle_icon_files
  @dict[BUNDLE_ICON_FILES]
end

#bundle_idObject



58
59
60
# File 'lib/ios_android_toolbox/ios.rb', line 58

def bundle_id
  @dict[BUNDLE_IDENTIFIER_KEY]
end

#bundle_nameObject



66
67
68
# File 'lib/ios_android_toolbox/ios.rb', line 66

def bundle_name
  @dict[BUNDLE_NAME]
end

#bundle_versionObject



78
79
80
# File 'lib/ios_android_toolbox/ios.rb', line 78

def bundle_version
  @dict[BUNDLE_VERSION_KEY]
end

#next_build_numberObject



108
109
110
# File 'lib/ios_android_toolbox/ios.rb', line 108

def next_build_number
  next_version(@inc_idx)
end

#next_build_number!Object



112
113
114
# File 'lib/ios_android_toolbox/ios.rb', line 112

def next_build_number!
  next_version!(@inc_idx)
end

#next_version(inc_idx = @inc_idx) ⇒ Object



86
87
88
89
90
91
92
93
94
95
96
# File 'lib/ios_android_toolbox/ios.rb', line 86

def next_version(inc_idx = @inc_idx)
  if inc_idx == @inc_idx # trying to increment build number
    v = bundle_version
    s = (build_number.to_i + 1).to_s
  else
    v = super.next_version(inc_idx)
    s = build_number
  end

  "#{v}-#{s}"
end

#next_version!(inc_idx = @inc_idx) ⇒ Object



98
99
100
101
102
103
104
105
106
# File 'lib/ios_android_toolbox/ios.rb', line 98

def next_version!(inc_idx = @inc_idx)
  if inc_idx < @inc_idx
    @dict[BUNDLE_VERSION_KEY] = next_version(inc_idx)
  else
    @dict[BUILD_VERSION_KEY] = (build_number.to_i + 1).to_s
  end

  version
end

#replace_url_scheme(prev, replace) ⇒ Object



127
128
129
130
131
132
133
134
# File 'lib/ios_android_toolbox/ios.rb', line 127

def replace_url_scheme(prev, replace)
  url_types.each do |url_type_dict|
    schemes = url_type_dict[URL_SCHEMES_KEY]
    schemes.each_index do |i|
      schemes[i] = replace if prev == schemes[i]
    end
  end
end

#url_schemesObject



120
121
122
123
124
125
# File 'lib/ios_android_toolbox/ios.rb', line 120

def url_schemes
  schemes = url_types.collect do |ary|
    ary[URL_SCHEMES_KEY]
  end
  schemes.flatten
end

#url_typesObject



116
117
118
# File 'lib/ios_android_toolbox/ios.rb', line 116

def url_types
  @dict[URL_TYPES_KEY]
end

#versionObject



54
55
56
# File 'lib/ios_android_toolbox/ios.rb', line 54

def version
  "#{@dict[BUNDLE_VERSION_KEY]}-#{@dict[BUILD_VERSION_KEY]}"
end

#write_to_output_file(output_file) ⇒ Object



144
145
146
# File 'lib/ios_android_toolbox/ios.rb', line 144

def write_to_output_file(output_file)
    write_to_plist_file(output_file)
end

#write_to_plist_file(output_file) ⇒ Object



136
137
138
139
140
141
142
# File 'lib/ios_android_toolbox/ios.rb', line 136

def write_to_plist_file(output_file)
  if output_file == '-'
    puts @dict.to_plist
  else
    @dict.save_plist output_file
  end
end