xcadaptor 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: bbcd9ceb74e14b247d1fd724d1bcee7ea8f25c0a
4
+ data.tar.gz: e36674071e0f33be164aeb7e9e9339ca5f31c5ea
5
+ SHA512:
6
+ metadata.gz: c22d95d6c361b7d7f3d9d084694474a71e036e40bb43487886b855e46094d19022c9cb0017c615df2cec4fd2bb7b5ad12a4de1d1dddd6a457ee9a7f7eef09ec6
7
+ data.tar.gz: ac1436a90e4f3c6b14ccd98ab8352918b4a3faea4e90f1fd9ddd73903eb073af35fd7a39a259b261987d61db9a6b4e96799663c6f09f2d183a8f3838eef6943b
data/bin/xcadaptor ADDED
@@ -0,0 +1,3 @@
1
+ require 'xcadaptor'
2
+
3
+ Xcadaptor::Command.start(ARGV)
@@ -0,0 +1,31 @@
1
+ module Xcadaptor
2
+
3
+ require_relative '../../project_method'
4
+
5
+ class Bitcode
6
+
7
+ #main task
8
+ def self.run
9
+ project =Xcadaptor::Project.new
10
+ project.set_all_target_setting("ENABLE_BITCODE",false) do |target,key,value|
11
+ deploy_version = project.get_target_setting(target,"IPHONEOS_DEPLOYMENT_TARGET")
12
+ debug_version = deploy_version['Debug'].to_f
13
+ release_version = deploy_version['Release'].to_f
14
+ if(debug_version < 6 || release_version < 6)
15
+
16
+ if project.get_target_setting(target,"ENABLE_BITCODE")["Debug"] == "YES"
17
+ puts "-fembed-bitcode is not supported on versions of iOS prior to 6.0. Change bitcode NO\n"
18
+ next true
19
+ end
20
+ end
21
+
22
+ next false
23
+ end
24
+
25
+ puts 'save'
26
+ project.save
27
+ end
28
+
29
+ end
30
+
31
+ end
@@ -0,0 +1,20 @@
1
+ module Xcadaptor
2
+
3
+ require_relative '../../project_method'
4
+
5
+ class Ssl
6
+
7
+ def self.run
8
+ project =Xcadaptor::Project.new
9
+ info_plist = project.info_plist
10
+ ssl_key = info_plist['NSAppTransportSecurity']
11
+ if !ssl_key
12
+ info_plist['NSAppTransportSecurity'] = {NSAllowsArbitraryLoads: true}
13
+ puts "add [NSAppTransportSecurity] in plist\n"
14
+ project.save
15
+ end
16
+ end
17
+
18
+ end
19
+
20
+ end
@@ -0,0 +1,80 @@
1
+ require 'thor'
2
+
3
+ module Xcadaptor
4
+
5
+
6
+ class Adapt < Thor
7
+ include Thor::Actions
8
+
9
+ desc "ios [version] [--category]" , "adapt xcode project to the verison ios"
10
+ long_desc <<-LONGDESC
11
+ adapt xcode project to the verison ios
12
+ ios [version] [--category]
13
+ version : ios version. eg: 9.0
14
+ options:
15
+ --category : category task, eg: 'bitcode' , 'ssl'
16
+
17
+ LONGDESC
18
+ option :category ,:type => :array , :banner => "adapt category , in ios 9 eg: 'bitcode' 'ssl'"
19
+ def ios(version)
20
+ sub_command_file_path = File.expand_path "#{File.dirname(__FILE__)}/IOS/#{version}"
21
+ begin
22
+ if require_all(sub_command_file_path)
23
+ function_types = options[:category]
24
+ if function_types
25
+ #excute specified cateoty update
26
+ function_types.each do |function_type|
27
+ if File.exist? "#{sub_command_file_path}/#{function_type}.rb"
28
+ run_category function_type
29
+ else
30
+ puts "#{function_type} not found\n"
31
+ end
32
+ end
33
+
34
+ else
35
+
36
+ #excute all category update
37
+ Dir.glob("#{sub_command_file_path}/*.rb").each do |f_path|
38
+ pn = Pathname.new f_path
39
+ file_name = pn.basename(".*").to_s
40
+ run_category file_name
41
+ end
42
+
43
+ end
44
+
45
+ else
46
+ puts "ios version not found."
47
+ end
48
+ rescue => e
49
+ puts e.backtrace
50
+ end
51
+ end
52
+
53
+
54
+ private
55
+
56
+ # require all file at path directory
57
+ def require_all(path)
58
+ begin
59
+ Dir.glob("#{path}/*.rb").each do |f_path|
60
+ require f_path
61
+ end
62
+ rescue => e
63
+ return false
64
+ end
65
+ return true;
66
+ end
67
+
68
+
69
+ # run category task
70
+ def run_category(category_name)
71
+ class_name = "Xcadaptor::#{category_name.capitalize}"
72
+ clazz = class_name.split('::').inject(Object) {|o,c| o.const_get c}
73
+ clazz.run
74
+ end
75
+
76
+ end
77
+
78
+
79
+
80
+ end
@@ -0,0 +1,114 @@
1
+ module Xcadaptor
2
+
3
+
4
+ require 'pathname'
5
+ require 'xcodeproj'
6
+
7
+ class Project
8
+
9
+ attr_reader :project
10
+ attr_reader :targets
11
+ attr_reader :info_plist_path
12
+ attr_reader :info_plist
13
+
14
+ def initialize(*args)
15
+ get_project
16
+ end
17
+
18
+ def targets
19
+ @project.targets
20
+ end
21
+
22
+ def info_plist_path
23
+ path = get_target_setting(project.targets[0],"INFOPLIST_FILE")["Debug"]
24
+ path.gsub '$(SRCROOT)', Pathname.pwd.to_s
25
+ end
26
+
27
+ def info_plist
28
+ @info_plist = Xcodeproj::PlistHelper.read self.info_plist_path
29
+ end
30
+
31
+ # set project setting , block praram key , return bool value
32
+ def set_project_setting(key,value)
33
+ is_ok = true
34
+ if block_given?
35
+ is_ok = yield key
36
+ end
37
+
38
+ if is_ok
39
+ config_list = @project.build_configuration_list
40
+ config_list.set_setting key ,value
41
+ end
42
+ end
43
+
44
+ # get project setting
45
+ def get_project_setting(key)
46
+ config_list = @project.build_configuration_list
47
+ config_list.get_setting key
48
+ end
49
+
50
+
51
+ # set project setting , block praram target key , return bool value
52
+ def set_target_setting(target,key,value)
53
+ is_ok = true
54
+ if block_given?
55
+ is_ok = yield target, key
56
+ end
57
+
58
+ if is_ok
59
+ target_config_list = target.build_configuration_list
60
+ target_config_list.set_setting(key, value)
61
+ end
62
+ end
63
+
64
+ # get target setting
65
+ def get_target_setting(target, key)
66
+ target_config_list = target.build_configuration_list
67
+ target_config_list.get_setting key
68
+ end
69
+
70
+
71
+ # set project setting , block praram target key , return bool value
72
+ def set_all_target_setting(key,value)
73
+ is_ok = true
74
+
75
+ config_list = @project.build_configuration_list
76
+ project.targets.each do |target|
77
+ if block_given?
78
+ is_ok = yield target , key
79
+ end
80
+
81
+ if is_ok
82
+ set_project_setting key ,value
83
+ set_target_setting target, key , value
84
+ end
85
+ end
86
+ end
87
+
88
+ # save your change
89
+ def save
90
+ @project.save
91
+ if @info_plist
92
+ Xcodeproj::PlistHelper.write @info_plist, self.info_plist_path
93
+ end
94
+ end
95
+
96
+ private
97
+
98
+ # get xcodeproj instance
99
+ def get_project
100
+ current_dir = Pathname.pwd
101
+ Dir.foreach(current_dir) do |filename|
102
+ if filename.include? 'xcodeproj'
103
+ @project_path = "#{current_dir}/#{filename}"
104
+ @project_name = File.basename(filename)
105
+ @project = Xcodeproj::Project.open @project_path
106
+ return project
107
+ end
108
+ end
109
+ end
110
+
111
+
112
+ end
113
+
114
+ end
@@ -0,0 +1,3 @@
1
+ module Xcadaptor
2
+ VERSION = "0.0.1"
3
+ end
data/lib/xcadaptor.rb ADDED
@@ -0,0 +1,16 @@
1
+ require 'thor'
2
+
3
+ module Xcadaptor
4
+
5
+ require_relative 'xcadaptor/adapt'
6
+
7
+ class Command < Thor
8
+ include Thor::Actions
9
+
10
+
11
+ desc "adapt SUBCOMMAND", "manage project adapt"
12
+ subcommand "adapt", Xcadaptor::Adapt
13
+ end
14
+
15
+
16
+ end
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: xcadaptor
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - kaich
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-10-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ description: adapt xcode project because of system update.
42
+ email:
43
+ - chengkai1853@163.com
44
+ executables:
45
+ - xcadaptor
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - bin/xcadaptor
50
+ - lib/xcadaptor.rb
51
+ - lib/xcadaptor/IOS/9.0/bitcode.rb
52
+ - lib/xcadaptor/IOS/9.0/ssl.rb
53
+ - lib/xcadaptor/adapt.rb
54
+ - lib/xcadaptor/project_method.rb
55
+ - lib/xcadaptor/version.rb
56
+ homepage: ''
57
+ licenses:
58
+ - MIT
59
+ metadata: {}
60
+ post_install_message:
61
+ rdoc_options: []
62
+ require_paths:
63
+ - lib
64
+ - bin
65
+ required_ruby_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ requirements: []
76
+ rubyforge_project:
77
+ rubygems_version: 2.4.8
78
+ signing_key:
79
+ specification_version: 4
80
+ summary: adapt xcode project because of system update.
81
+ test_files: []