xcadaptor 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []