pindo 5.13.1 → 5.13.3
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 +4 -4
- data/lib/pindo/base/git_handler.rb +692 -0
- data/lib/pindo/command/android/autobuild.rb +2 -2
- data/lib/pindo/command/appstore/adhocbuild.rb +256 -311
- data/lib/pindo/command/appstore/autobuild.rb +203 -0
- data/lib/pindo/command/appstore/autoresign.rb +35 -17
- data/lib/pindo/command/appstore/bundleid.rb +120 -0
- data/lib/pindo/command/appstore/cert.rb +212 -0
- data/lib/pindo/command/appstore/configproj.rb +81 -0
- data/lib/pindo/command/{deploy → appstore}/getitcinfo.rb +76 -91
- data/lib/pindo/command/appstore/iap.rb +788 -24
- data/lib/pindo/command/appstore/initconfig.rb +105 -0
- data/lib/pindo/command/appstore/itcapp.rb +95 -13
- data/lib/pindo/command/{deploy → appstore}/itcinfo.rb +90 -118
- data/lib/pindo/command/appstore/pem.rb +136 -0
- data/lib/pindo/command/appstore/pullconfig.rb +99 -0
- data/lib/pindo/command/appstore/quswark.rb +87 -0
- data/lib/pindo/command/appstore/quswauth.rb +67 -0
- data/lib/pindo/command/appstore/tag.rb +77 -0
- data/lib/pindo/command/appstore.rb +13 -1
- data/lib/pindo/command/env/quarkenv.rb +11 -13
- data/lib/pindo/command/env/swarkenv.rb +11 -16
- data/lib/pindo/command/ios/applovin.rb +24 -182
- data/lib/pindo/command/ios/autobuild.rb +64 -43
- data/lib/pindo/command/ios/autoresign.rb +34 -19
- data/lib/pindo/command/ios/build.rb +9 -6
- data/lib/pindo/command/ios/cert.rb +27 -20
- data/lib/pindo/command/ios/podupdate.rb +6 -37
- data/lib/pindo/command/jps/upload.rb +3 -3
- data/lib/pindo/command/unity/autobuild.rb +2 -2
- data/lib/pindo/command/utils/clearcert.rb +2 -17
- data/lib/pindo/command/{deploy → utils}/fabric.rb +13 -13
- data/lib/pindo/command/utils/renewcert.rb +62 -38
- data/lib/pindo/command/utils/renewproj.rb +0 -3
- data/lib/pindo/command/{deploy → utils}/updateconfig.rb +6 -7
- data/lib/pindo/command/utils.rb +2 -0
- data/lib/pindo/command/web/autobuild.rb +2 -2
- data/lib/pindo/command.rb +30 -3
- data/lib/pindo/config/build_info_manager.rb +176 -0
- data/lib/pindo/config/ios_config_parser.rb +404 -0
- data/lib/pindo/module/android/android_config_helper.rb +9 -5
- data/lib/pindo/module/appstore/bundleid_helper.rb +349 -0
- data/lib/pindo/module/appstore/itcapp_helper.rb +228 -0
- data/lib/pindo/module/build/build_helper.rb +12 -0
- data/lib/pindo/module/build/swark_helper.rb +116 -77
- data/lib/pindo/module/cert/cert_helper.rb +74 -0
- data/lib/pindo/module/cert/pem_helper.rb +72 -0
- data/lib/pindo/module/cert/{xcodecerthelper.rb → xcode_cert_helper.rb} +211 -6
- data/lib/pindo/module/pgyer/pgyerhelper.rb +13 -5
- data/lib/pindo/module/task/model/appstore/appstore_task.rb +18 -0
- data/lib/pindo/module/task/model/appstore/appstore_upload_ipa_task.rb +151 -0
- data/lib/pindo/module/task/model/appstore/appstore_upload_metadata_task.rb +250 -0
- data/lib/pindo/module/task/model/appstore/appstore_upload_screenshot_task.rb +276 -0
- data/lib/pindo/module/task/model/build/android_build_adhoc_task.rb +210 -0
- data/lib/pindo/module/task/model/build/{android_dev_build_task.rb → android_build_dev_task.rb} +2 -2
- data/lib/pindo/module/task/model/build/android_build_gplay_task.rb +210 -0
- data/lib/pindo/module/task/model/build/android_build_task.rb +13 -0
- data/lib/pindo/module/task/model/build/ios_build_adhoc_task.rb +342 -0
- data/lib/pindo/module/task/model/build/ios_build_appstore_task.rb +341 -0
- data/lib/pindo/module/task/model/build/{ios_dev_build_task.rb → ios_build_dev_task.rb} +40 -59
- data/lib/pindo/module/task/model/build/ios_build_task.rb +23 -0
- data/lib/pindo/module/task/model/build/{web_dev_build_task.rb → web_build_dev_task.rb} +1 -1
- data/lib/pindo/module/task/model/build_task.rb +15 -12
- data/lib/pindo/module/task/model/jps_resign_task.rb +185 -0
- data/lib/pindo/module/task/model/{upload_task.rb → jps_upload_task.rb} +3 -3
- data/lib/pindo/module/task/model/unity_export_task.rb +3 -1
- data/lib/pindo/module/unity/unity_helper.rb +2 -1
- data/lib/pindo/module/xcode/applovin_xcode_helper.rb +271 -0
- data/lib/pindo/module/xcode/cocoapods_helper.rb +153 -0
- data/lib/pindo/module/xcode/ipa_resign_helper.rb +210 -0
- data/lib/pindo/module/xcode/{xcodeappconfig.rb → xcode_app_config.rb} +79 -0
- data/lib/pindo/module/xcode/xcode_build_config.rb +152 -17
- data/lib/pindo/module/xcode/xcode_build_helper.rb +151 -1
- data/lib/pindo/module/xcode/xcode_swark_helper.rb +341 -0
- data/lib/pindo/options/core/global_options_state.rb +268 -0
- data/lib/pindo/options/core/option_configuration.rb +206 -0
- data/lib/pindo/options/core/option_initializer.rb +51 -0
- data/lib/pindo/options/core/option_item.rb +144 -0
- data/lib/pindo/options/core/option_value_parser.rb +54 -0
- data/lib/pindo/options/groups/build_options.rb +60 -0
- data/lib/pindo/options/groups/jps_options.rb +70 -0
- data/lib/pindo/options/groups/option_group.rb +73 -0
- data/lib/pindo/options/helpers/bundleid_selector.rb +103 -0
- data/lib/pindo/options/options.rb +14 -0
- data/lib/pindo/version.rb +1 -1
- metadata +51 -40
- data/lib/pindo/command/appstore/import.rb +0 -259
- data/lib/pindo/command/deploy/build.rb +0 -250
- data/lib/pindo/command/deploy/bundleid.rb +0 -259
- data/lib/pindo/command/deploy/cert.rb +0 -202
- data/lib/pindo/command/deploy/check.rb +0 -93
- data/lib/pindo/command/deploy/configproj.rb +0 -120
- data/lib/pindo/command/deploy/confusecode.rb +0 -262
- data/lib/pindo/command/deploy/confuseproj.rb +0 -122
- data/lib/pindo/command/deploy/iap.rb +0 -826
- data/lib/pindo/command/deploy/initconfig.rb +0 -138
- data/lib/pindo/command/deploy/itcapp.rb +0 -146
- data/lib/pindo/command/deploy/pem.rb +0 -55
- data/lib/pindo/command/deploy/pullconfig.rb +0 -56
- data/lib/pindo/command/deploy/pushconfig.rb +0 -93
- data/lib/pindo/command/deploy/quswark.rb +0 -156
- data/lib/pindo/command/deploy/quswauth.rb +0 -76
- data/lib/pindo/command/deploy/reportbug.rb +0 -145
- data/lib/pindo/command/deploy/resign.rb +0 -300
- data/lib/pindo/command/deploy/tag.rb +0 -108
- data/lib/pindo/command/deploy/uploadipa.rb +0 -73
- data/lib/pindo/command/deploy.rb +0 -42
- data/lib/pindo/command/dev/autobuild.rb +0 -117
- data/lib/pindo/command/dev/build.rb +0 -94
- data/lib/pindo/command/dev/debug.rb +0 -112
- data/lib/pindo/module/task/model/build/android_release_build_task.rb +0 -29
- data/lib/pindo/module/task/model/build/ios_adhoc_build_task.rb +0 -53
- data/lib/pindo/module/task/model/build/ios_release_build_task.rb +0 -53
- data/lib/pindo/options/appconfigoptions.rb +0 -24
- data/lib/pindo/options/deployoptions.rb +0 -372
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
require 'highline/import'
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
require 'json'
|
|
4
|
+
require 'pindo/options/options'
|
|
5
|
+
require 'pindo/module/cert/pem_helper'
|
|
6
|
+
|
|
7
|
+
module Pindo
|
|
8
|
+
class Command
|
|
9
|
+
class Appstore < Command
|
|
10
|
+
class Pem < Appstore
|
|
11
|
+
|
|
12
|
+
# 命令的简要说明 - 创建App的push证书
|
|
13
|
+
self.summary = '创建App的push证书'
|
|
14
|
+
|
|
15
|
+
# 命令的详细说明,包含用法示例
|
|
16
|
+
self.description = <<-DESC
|
|
17
|
+
根据config.json中的配置, 创建Apple推送通知证书。
|
|
18
|
+
|
|
19
|
+
支持功能:
|
|
20
|
+
|
|
21
|
+
* 创建开发环境Push证书
|
|
22
|
+
|
|
23
|
+
* 创建生产环境Push证书
|
|
24
|
+
|
|
25
|
+
* 自动生成.pem、.p12、.pkey文件
|
|
26
|
+
|
|
27
|
+
* 可选上传到配置仓库
|
|
28
|
+
|
|
29
|
+
* 支持位置参数(向后兼容)和选项参数两种格式
|
|
30
|
+
|
|
31
|
+
使用示例:
|
|
32
|
+
|
|
33
|
+
$ pindo appstore pem # 使用当前目录的config.json
|
|
34
|
+
|
|
35
|
+
$ pindo appstore pem config.json # 位置参数(向后兼容)
|
|
36
|
+
|
|
37
|
+
$ pindo appstore pem --config=config.json # 选项参数
|
|
38
|
+
|
|
39
|
+
$ pindo appstore pem --dev # 创建开发证书
|
|
40
|
+
|
|
41
|
+
$ pindo appstore pem --repo=com.example.app # 指定部署仓库
|
|
42
|
+
|
|
43
|
+
$ pindo appstore pem --config=config.json --dev --repo=com.example.app
|
|
44
|
+
DESC
|
|
45
|
+
|
|
46
|
+
# 定义位置参数(向后兼容)
|
|
47
|
+
self.arguments = [
|
|
48
|
+
CLAide::Argument.new('path/to/config.json', true)
|
|
49
|
+
]
|
|
50
|
+
|
|
51
|
+
# 定义此命令使用的参数项(类方法,避免重复定义)
|
|
52
|
+
def self.option_items
|
|
53
|
+
@option_items ||= [
|
|
54
|
+
Pindo::Options::OptionItem.new(
|
|
55
|
+
key: :config,
|
|
56
|
+
description: '指定config.json文件路径',
|
|
57
|
+
type: String,
|
|
58
|
+
optional: true,
|
|
59
|
+
example: 'pindo appstore pem --config=config.json'
|
|
60
|
+
),
|
|
61
|
+
Pindo::Options::OptionItem.new(
|
|
62
|
+
key: :dev,
|
|
63
|
+
description: '创建开发环境证书(默认为生产环境)',
|
|
64
|
+
type: TrueClass,
|
|
65
|
+
optional: true,
|
|
66
|
+
default_value: false,
|
|
67
|
+
example: 'pindo appstore pem --dev'
|
|
68
|
+
),
|
|
69
|
+
Pindo::Options::OptionItem.new(
|
|
70
|
+
key: :repo,
|
|
71
|
+
description: '部署仓库名称(用于上传证书)',
|
|
72
|
+
type: String,
|
|
73
|
+
optional: true,
|
|
74
|
+
example: 'pindo appstore pem --repo=com.example.app'
|
|
75
|
+
)
|
|
76
|
+
]
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# 命令的选项列表
|
|
80
|
+
def self.options
|
|
81
|
+
# 转换为 CLAide 格式
|
|
82
|
+
option_items.map { |item| item.to_claide_option }.concat(super)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def initialize(argv)
|
|
86
|
+
# 首先获取位置参数(向后兼容)
|
|
87
|
+
positional_config = argv.shift_argument
|
|
88
|
+
|
|
89
|
+
# 使用 Options 模块初始化参数
|
|
90
|
+
@options = initialize_options(argv)
|
|
91
|
+
|
|
92
|
+
# 优先使用选项参数,如果没有则使用位置参数,最后默认为当前目录的config.json
|
|
93
|
+
@config_path = @options[:config] || positional_config || File.join(Dir.pwd, 'config.json')
|
|
94
|
+
@args_dev_flag = @options[:dev]
|
|
95
|
+
@deploy_repo_name = @options[:repo]
|
|
96
|
+
|
|
97
|
+
super
|
|
98
|
+
@additional_args = argv.remainder!
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def validate!
|
|
102
|
+
super
|
|
103
|
+
|
|
104
|
+
# 检查 config.json 文件是否存在
|
|
105
|
+
unless File.exist?(@config_path)
|
|
106
|
+
help! "配置文件不存在: #{@config_path}"
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# 读取并解析 config.json
|
|
110
|
+
begin
|
|
111
|
+
@config_json = JSON.parse(File.read(@config_path))
|
|
112
|
+
rescue JSON::ParserError => e
|
|
113
|
+
help! "配置文件格式错误: #{e.message}"
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def run
|
|
118
|
+
# 调用 PemHelper 执行 Push 证书创建流程
|
|
119
|
+
begin
|
|
120
|
+
cert_path = Pindo::PemHelper.execute_pem_creation(
|
|
121
|
+
config_json: @config_json,
|
|
122
|
+
dev_flag: @args_dev_flag,
|
|
123
|
+
deploy_repo_name: @deploy_repo_name
|
|
124
|
+
)
|
|
125
|
+
puts "\n✓ Push 证书创建完成!"
|
|
126
|
+
puts "证书路径: #{cert_path}"
|
|
127
|
+
rescue StandardError => e
|
|
128
|
+
puts "\n❌ Push 证书创建失败: #{e.message}"
|
|
129
|
+
raise e
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
require 'pindo/options/options'
|
|
3
|
+
require 'pindo/config/build_info_manager'
|
|
4
|
+
|
|
5
|
+
module Pindo
|
|
6
|
+
class Command
|
|
7
|
+
class Appstore < Command
|
|
8
|
+
|
|
9
|
+
class Pullconfig < Appstore
|
|
10
|
+
|
|
11
|
+
# 命令的简要说明 - 拉取应用配置仓库
|
|
12
|
+
self.summary = '拉取应用配置仓库(config.json)到当前目录'
|
|
13
|
+
|
|
14
|
+
# 命令的详细说明,包含用法示例
|
|
15
|
+
self.description = <<-DESC
|
|
16
|
+
从远程Git仓库拉取应用配置文件(config.json)到当前目录。
|
|
17
|
+
|
|
18
|
+
支持功能:
|
|
19
|
+
|
|
20
|
+
* 从远程仓库下载应用配置文件
|
|
21
|
+
|
|
22
|
+
* 自动复制配置文件到当前目录
|
|
23
|
+
|
|
24
|
+
* 支持通配符Bundle ID(自动去除 .* 后缀)
|
|
25
|
+
|
|
26
|
+
* 支持环境变量配置
|
|
27
|
+
|
|
28
|
+
* 支持位置参数(向后兼容)和选项参数两种格式
|
|
29
|
+
|
|
30
|
+
使用示例:
|
|
31
|
+
|
|
32
|
+
$ pindo appstore pullconfig com.example.app # 位置参数(向后兼容)
|
|
33
|
+
|
|
34
|
+
$ pindo appstore pullconfig --bundleid=com.example.app # 选项参数
|
|
35
|
+
|
|
36
|
+
$ pindo appstore pullconfig # 交互式输入Bundle ID
|
|
37
|
+
|
|
38
|
+
$ pindo appstore pullconfig --bundleid=com.example.* # 通配符自动转换为 com.example
|
|
39
|
+
|
|
40
|
+
$ PINDO_BUNDLE_ID=com.example.app pindo appstore pullconfig # 使用环境变量
|
|
41
|
+
DESC
|
|
42
|
+
|
|
43
|
+
# 定义位置参数(向后兼容)
|
|
44
|
+
self.arguments = [
|
|
45
|
+
CLAide::Argument.new('bundleid', true)
|
|
46
|
+
]
|
|
47
|
+
|
|
48
|
+
# 定义此命令使用的参数项
|
|
49
|
+
def self.option_items
|
|
50
|
+
@option_items ||= Pindo::Options::BuildOptions.select(:bundleid)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# 命令的选项列表
|
|
54
|
+
def self.options
|
|
55
|
+
# 转换为 CLAide 格式
|
|
56
|
+
option_items.map { |item| item.to_claide_option }.concat(super)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def initialize(argv)
|
|
60
|
+
# 首先获取位置参数(向后兼容)
|
|
61
|
+
positional_bundleid = argv.shift_argument
|
|
62
|
+
|
|
63
|
+
# 使用 Options 模块初始化参数
|
|
64
|
+
@options = initialize_options(argv)
|
|
65
|
+
|
|
66
|
+
# 优先使用选项参数,如果没有则使用位置参数
|
|
67
|
+
@args_appconfig_repo_name = @options[:bundleid] || positional_bundleid
|
|
68
|
+
|
|
69
|
+
super
|
|
70
|
+
@additional_args = argv.remainder!
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def validate!
|
|
74
|
+
super
|
|
75
|
+
|
|
76
|
+
# 如果没有提供 bundleid,提示用户输入
|
|
77
|
+
if @args_appconfig_repo_name.nil? || @args_appconfig_repo_name.empty?
|
|
78
|
+
require 'highline/import'
|
|
79
|
+
cli = HighLine.new
|
|
80
|
+
say "需要指定 Bundle ID"
|
|
81
|
+
@args_appconfig_repo_name = cli.ask('请输入 Bundle ID: ')
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
help! '需要提供 Bundle ID' if @args_appconfig_repo_name.nil? || @args_appconfig_repo_name.empty?
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def run
|
|
88
|
+
# 使用 BuildInfoManager 拉取配置
|
|
89
|
+
build_info_manager = Pindo::BuildInfoManager.share_instance
|
|
90
|
+
build_info_manager.pull_appconfig_with_reponame(
|
|
91
|
+
repo_name: @args_appconfig_repo_name,
|
|
92
|
+
target_dir: Dir.pwd
|
|
93
|
+
)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
require 'highline/import'
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
require 'json'
|
|
4
|
+
require 'xcodeproj'
|
|
5
|
+
require 'yaml'
|
|
6
|
+
require 'pindo/module/xcode/xcode_swark_helper'
|
|
7
|
+
require 'pindo/config/ios_config_parser'
|
|
8
|
+
|
|
9
|
+
module Pindo
|
|
10
|
+
class Command
|
|
11
|
+
class Appstore < Command
|
|
12
|
+
class Quswark < Appstore
|
|
13
|
+
|
|
14
|
+
self.summary = 'Xcode工程设置swark或quark'
|
|
15
|
+
|
|
16
|
+
self.description = <<-DESC
|
|
17
|
+
Xcode工程设置swark或quark
|
|
18
|
+
|
|
19
|
+
支持功能:
|
|
20
|
+
- 自动检测项目类型并配置swark或quark环境
|
|
21
|
+
- 生成对应的配置文件和环境设置
|
|
22
|
+
- 始终使用 release 模式进行配置
|
|
23
|
+
|
|
24
|
+
使用示例:
|
|
25
|
+
pindo appstore quswark
|
|
26
|
+
DESC
|
|
27
|
+
|
|
28
|
+
self.arguments = [
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
def self.options
|
|
32
|
+
[
|
|
33
|
+
|
|
34
|
+
].concat(super)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def initialize(argv)
|
|
38
|
+
super
|
|
39
|
+
@additional_args = argv.remainder!
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def run
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
project_dir = Dir.pwd
|
|
46
|
+
config_file = File.join(project_dir, "config.json")
|
|
47
|
+
|
|
48
|
+
# 加载配置
|
|
49
|
+
config_parser = Pindo::IosConfigParser.instance
|
|
50
|
+
config_parser.load_config(config_file: config_file)
|
|
51
|
+
config_json = config_parser.config_json
|
|
52
|
+
|
|
53
|
+
if config_json.nil? || config_json.empty?
|
|
54
|
+
raise Informative, "配置未加载,请检查配置文件: #{config_file}"
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# 始终使用 release 模式
|
|
58
|
+
build_type = 'release'
|
|
59
|
+
|
|
60
|
+
# 根据配置决定使用 Quark 还是 Swark
|
|
61
|
+
if config_json['project_info']['xcode_build_type'] && config_json["project_info"]["xcode_build_type"].include?("quark")
|
|
62
|
+
success = Pindo::XcodeSwarkHelper.quark_run(
|
|
63
|
+
project_dir: project_dir,
|
|
64
|
+
config_json: config_json,
|
|
65
|
+
build_type: build_type
|
|
66
|
+
)
|
|
67
|
+
unless success
|
|
68
|
+
raise Informative, "Quark 配置失败,请检查日志"
|
|
69
|
+
end
|
|
70
|
+
else
|
|
71
|
+
# 默认使用 Swark
|
|
72
|
+
success = Pindo::XcodeSwarkHelper.swark_run(
|
|
73
|
+
project_dir: project_dir,
|
|
74
|
+
config_json: config_json,
|
|
75
|
+
build_type: build_type
|
|
76
|
+
)
|
|
77
|
+
unless success
|
|
78
|
+
raise Informative, "Swark 配置失败,请检查日志"
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
require 'highline/import'
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
require 'json'
|
|
4
|
+
require 'xcodeproj'
|
|
5
|
+
require 'pindo/module/xcode/xcode_swark_helper'
|
|
6
|
+
require 'pindo/config/ios_config_parser'
|
|
7
|
+
|
|
8
|
+
module Pindo
|
|
9
|
+
class Command
|
|
10
|
+
class Appstore < Command
|
|
11
|
+
class Quswauth < Appstore
|
|
12
|
+
|
|
13
|
+
self.summary = 'Swark给bundle id授权'
|
|
14
|
+
|
|
15
|
+
self.description = <<-DESC
|
|
16
|
+
Swark给bundle id授权
|
|
17
|
+
|
|
18
|
+
支持功能:
|
|
19
|
+
- 自动执行Swark工具的Bundle ID授权
|
|
20
|
+
- 读取配置文件中的Team ID和Bundle ID信息
|
|
21
|
+
- 自动更新授权状态到配置仓库
|
|
22
|
+
|
|
23
|
+
使用示例:
|
|
24
|
+
pindo appstore quswauth
|
|
25
|
+
DESC
|
|
26
|
+
|
|
27
|
+
self.arguments = [
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
def self.options
|
|
31
|
+
[
|
|
32
|
+
|
|
33
|
+
].concat(super)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def initialize(argv)
|
|
37
|
+
super
|
|
38
|
+
@additional_args = argv.remainder!
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def run
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
project_dir = Dir.pwd
|
|
45
|
+
config_file = File.join(project_dir, "config.json")
|
|
46
|
+
|
|
47
|
+
# 加载配置
|
|
48
|
+
config_parser = Pindo::IosConfigParser.instance
|
|
49
|
+
config_parser.load_config(config_file: config_file)
|
|
50
|
+
|
|
51
|
+
bundle_id = config_parser.bundle_id
|
|
52
|
+
if bundle_id.nil? || bundle_id.empty?
|
|
53
|
+
raise Informative, "无法从配置文件中获取 Bundle ID"
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# 调用封装的方法
|
|
57
|
+
success = Pindo::XcodeSwarkHelper.swark_authorize_run(bundle_id: bundle_id)
|
|
58
|
+
|
|
59
|
+
unless success
|
|
60
|
+
raise Informative, "Swark 授权失败,请检查日志"
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
require 'pindo/module/xcode/xcode_app_config'
|
|
3
|
+
require 'pindo/config/ios_config_parser'
|
|
4
|
+
|
|
5
|
+
module Pindo
|
|
6
|
+
class Command
|
|
7
|
+
class Appstore < Command
|
|
8
|
+
class Tag < Appstore
|
|
9
|
+
|
|
10
|
+
self.summary = '发布完成创建tag'
|
|
11
|
+
|
|
12
|
+
self.description = <<-DESC
|
|
13
|
+
发布完成创建tag
|
|
14
|
+
|
|
15
|
+
支持功能:
|
|
16
|
+
- 为代码仓库和配置仓库创建 release tag
|
|
17
|
+
- 删除指定的 tag
|
|
18
|
+
|
|
19
|
+
使用示例:
|
|
20
|
+
pindo appstore tag # 创建 release tag
|
|
21
|
+
pindo appstore tag --delete=tag_name # 删除指定的 tag
|
|
22
|
+
DESC
|
|
23
|
+
|
|
24
|
+
self.arguments = [
|
|
25
|
+
]
|
|
26
|
+
|
|
27
|
+
def self.options
|
|
28
|
+
[
|
|
29
|
+
['--delete=TAG_NAME', '删除指定的tag'],
|
|
30
|
+
].concat(super)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def initialize(argv)
|
|
34
|
+
@delete_tag_name = argv.option('delete')
|
|
35
|
+
super
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def run
|
|
39
|
+
|
|
40
|
+
project_dir = Dir.pwd
|
|
41
|
+
config_file = File.join(project_dir, "config.json")
|
|
42
|
+
|
|
43
|
+
# 加载配置
|
|
44
|
+
config_parser = Pindo::IosConfigParser.instance
|
|
45
|
+
config_parser.load_config(config_file: config_file)
|
|
46
|
+
config_json = config_parser.config_json
|
|
47
|
+
bundle_id = config_parser.bundle_id
|
|
48
|
+
|
|
49
|
+
if config_json.nil? || config_json.empty?
|
|
50
|
+
raise Informative, "配置未加载,请检查配置文件: #{config_file}"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
if bundle_id.nil? || bundle_id.empty?
|
|
54
|
+
raise Informative, "无法从配置文件中获取 Bundle ID"
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# 创建临时对象来调用模块方法
|
|
58
|
+
tag_helper = Object.new
|
|
59
|
+
tag_helper.extend(Pindo::XcodeAppConfig)
|
|
60
|
+
|
|
61
|
+
# 调用封装的方法
|
|
62
|
+
success = tag_helper.create_release_tag(
|
|
63
|
+
project_dir: project_dir,
|
|
64
|
+
config_json: config_json,
|
|
65
|
+
bundle_id: bundle_id,
|
|
66
|
+
delete_tag_name: @delete_tag_name
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
unless success
|
|
70
|
+
raise Informative, "创建 tag 失败,请检查日志"
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
|
|
2
2
|
require 'pindo/command/appstore/iap'
|
|
3
3
|
require 'pindo/command/appstore/itcapp'
|
|
4
|
+
require 'pindo/command/appstore/itcinfo'
|
|
5
|
+
require 'pindo/command/appstore/getitcinfo'
|
|
4
6
|
require 'pindo/command/appstore/metadata'
|
|
5
7
|
require 'pindo/command/appstore/screenshots'
|
|
6
8
|
require 'pindo/command/appstore/upload'
|
|
7
9
|
|
|
8
|
-
require 'pindo/command/appstore/import'
|
|
9
10
|
require 'pindo/command/appstore/adhocbuild'
|
|
10
11
|
require 'pindo/command/appstore/autoresign'
|
|
12
|
+
require 'pindo/command/appstore/autobuild'
|
|
13
|
+
|
|
14
|
+
require 'pindo/command/appstore/pullconfig'
|
|
15
|
+
require 'pindo/command/appstore/initconfig'
|
|
16
|
+
require 'pindo/command/appstore/bundleid'
|
|
17
|
+
require 'pindo/command/appstore/pem'
|
|
18
|
+
require 'pindo/command/appstore/cert'
|
|
19
|
+
require 'pindo/command/appstore/configproj'
|
|
20
|
+
require 'pindo/command/appstore/quswark'
|
|
21
|
+
require 'pindo/command/appstore/quswauth'
|
|
22
|
+
require 'pindo/command/appstore/tag'
|
|
11
23
|
|
|
12
24
|
module Pindo
|
|
13
25
|
class Command
|
|
@@ -47,22 +47,20 @@ module Pindo
|
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
def run
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
require 'pindo/module/xcode/xcode_swark_helper'
|
|
51
|
+
|
|
52
52
|
pindo_dir = pindo_single_config.pindo_dir
|
|
53
|
-
|
|
54
|
-
FileUtils.mkdir(pindo_dir)
|
|
55
|
-
end
|
|
53
|
+
quark_git_url = pindo_single_config.deploy_quark_giturl
|
|
56
54
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
55
|
+
# 使用封装的方法配置 Quark 环境
|
|
56
|
+
success = Pindo::XcodeSwarkHelper.setup_quark_env(
|
|
57
|
+
pindo_dir: pindo_dir,
|
|
58
|
+
quark_git_url: quark_git_url
|
|
59
|
+
)
|
|
62
60
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
unless success
|
|
62
|
+
raise Informative, "Quark 环境配置失败,请检查日志"
|
|
63
|
+
end
|
|
66
64
|
end
|
|
67
65
|
|
|
68
66
|
|
|
@@ -48,25 +48,20 @@ module Pindo
|
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
def run
|
|
51
|
-
|
|
52
|
-
swark_dir = File::expand_path(pindo_single_config.pindo_dir)
|
|
53
|
-
if !File.exist?(swark_dir)
|
|
54
|
-
FileUtils.mkdir(swark_dir)
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
reponame = get_repo_base_name(repo_url:pindo_single_config.deploy_swark_giturl)
|
|
58
|
-
swark_path = getcode_to_dir(reponame:'swark-toolchain-lite', remote_url:pindo_single_config.deploy_swark_giturl, path:swark_dir)
|
|
51
|
+
require 'pindo/module/xcode/xcode_swark_helper'
|
|
59
52
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
system command
|
|
53
|
+
pindo_dir = pindo_single_config.pindo_dir
|
|
54
|
+
swark_git_url = pindo_single_config.deploy_swark_giturl
|
|
63
55
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
56
|
+
# 使用封装的方法配置 Swark 环境
|
|
57
|
+
success = Pindo::XcodeSwarkHelper.setup_swark_env(
|
|
58
|
+
pindo_dir: pindo_dir,
|
|
59
|
+
swark_git_url: swark_git_url
|
|
60
|
+
)
|
|
69
61
|
|
|
62
|
+
unless success
|
|
63
|
+
raise Informative, "Swark 环境配置失败,请检查日志"
|
|
64
|
+
end
|
|
70
65
|
end
|
|
71
66
|
|
|
72
67
|
|