Skip to content

Instantly share code, notes, and snippets.

@chuganzy
Last active January 17, 2019 19:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chuganzy/ce9cd0e51f3022e07aff to your computer and use it in GitHub Desktop.
Save chuganzy/ce9cd0e51f3022e07aff to your computer and use it in GitHub Desktop.
iOSプロジェクトの全ターゲットのバージョンを一気に上げる http://blog.ganzy.jp/objective-c/219
#!/usr/bin/env ruby
require 'xcodeproj'
require 'plist'
class UpdateVersionManager
def initialize
path = File.expand_path("#{__dir__}/../") # absolute path to your project file
projects = Xcodeproj::Project.open(*Dir.glob("#{path}/*.xcodeproj"))
@base_path = path
@projects = projects
end
def update_plist_verion(version, number_version)
unless number_version
number_version = self.class.convert_version_to_number(version)
end
@projects.targets.each do |target|
next if target.product_type == 'com.apple.product-type.bundle.unit-test'
target.build_configurations.each do |configuration|
plist_path = configuration.build_settings['INFOPLIST_FILE']
plist_path = "#{@base_path}/#{plist_path}"
data = Plist.parse_xml(plist_path)
data['CFBundleVersion'] = number_version
data['CFBundleShortVersionString'] = version
Plist::Emit.save_plist(data, plist_path)
end
end
end
def self.convert_version_to_number(version)
# in case of Sumally
array = version.split('.')
(3 - array.length).times do
array.push('0')
end
array.join
end
end
unless ARGV[0]
print(<<'EOS')
Usage: update_versions.rb [CFBundleShortVersionString] ([CFBundleVersion])
Example: update_versions.rb 7.2.0 721
EOS
exit
end
if __FILE__ == $PROGRAM_NAME
manager = UpdateVersionManager.new
manager.update_plist_verion(ARGV[0], ARGV[1])
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment