lg_pod_plugin 1.1.2 → 1.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/lg +2 -2
- data/lib/command/command.rb +1 -2
- data/lib/command/install.rb +7 -2
- data/lib/command/update.rb +4 -1
- data/lib/lg_pod_plugin/config/l_config.rb +59 -0
- data/lib/lg_pod_plugin/config/lockfile_model.rb +59 -0
- data/lib/lg_pod_plugin/config/podspec.rb +266 -0
- data/lib/lg_pod_plugin/config/target.rb +33 -0
- data/lib/lg_pod_plugin/{database.rb → db/database.rb} +80 -28
- data/lib/lg_pod_plugin/downloader/downloader.rb +156 -0
- data/lib/lg_pod_plugin/{l_cache.rb → downloader/l_cache.rb} +44 -29
- data/lib/lg_pod_plugin/downloader/request.rb +233 -0
- data/lib/lg_pod_plugin/git/git_clone.rb +85 -0
- data/lib/lg_pod_plugin/git/git_download.rb +53 -0
- data/lib/lg_pod_plugin/git/github_api.rb +137 -0
- data/lib/lg_pod_plugin/git/github_archive.rb +165 -0
- data/lib/lg_pod_plugin/git/gitlab_api.rb +265 -0
- data/lib/lg_pod_plugin/git/gitlab_archive.rb +177 -0
- data/lib/lg_pod_plugin/git/http_download.rb +39 -0
- data/lib/lg_pod_plugin/installer/PodDownload +0 -0
- data/lib/lg_pod_plugin/installer/concurrency.rb +21 -0
- data/lib/lg_pod_plugin/installer/install.rb +111 -0
- data/lib/lg_pod_plugin/installer/main.rb +63 -0
- data/lib/lg_pod_plugin/installer/project.rb +47 -0
- data/lib/lg_pod_plugin/net/l_uri.rb +88 -0
- data/lib/lg_pod_plugin/net/net-ping.rb +27 -0
- data/lib/lg_pod_plugin/pod/external_pod.rb +21 -0
- data/lib/lg_pod_plugin/pod/release-pod.rb +158 -0
- data/lib/lg_pod_plugin/utils/aes-crypt.rb +82 -0
- data/lib/lg_pod_plugin/{file_path.rb → utils/file_path.rb} +3 -5
- data/lib/lg_pod_plugin/utils/l_util.rb +133 -0
- data/lib/lg_pod_plugin/{log.rb → utils/log.rb} +1 -1
- data/lib/lg_pod_plugin/{string.rb → utils/string.rb} +0 -0
- data/lib/lg_pod_plugin/version.rb +1 -1
- data/lib/lg_pod_plugin.rb +24 -17
- data/lib/sqlite3-1.5.3-arm64-darwin/API_CHANGES.md +49 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/CHANGELOG.md +462 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/CONTRIBUTING.md +24 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/ChangeLog.cvs +88 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/README.md +235 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/dependencies.yml +14 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/ext/sqlite3/aggregator.c +274 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/ext/sqlite3/aggregator.h +12 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/ext/sqlite3/backup.c +168 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/ext/sqlite3/backup.h +15 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/ext/sqlite3/database.c +853 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/ext/sqlite3/database.h +17 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/ext/sqlite3/exception.c +98 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/ext/sqlite3/exception.h +8 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/ext/sqlite3/extconf.rb +251 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/ext/sqlite3/sqlite3.c +163 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/ext/sqlite3/sqlite3_ruby.h +48 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/ext/sqlite3/statement.c +442 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/ext/sqlite3/statement.h +16 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/faq/faq.md +431 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/faq/faq.rb +145 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/faq/faq.yml +426 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/lib/sqlite3/2.6/sqlite3_native.bundle +0 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/lib/sqlite3/2.7/sqlite3_native.bundle +0 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/lib/sqlite3/3.0/sqlite3_native.bundle +0 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/lib/sqlite3/3.1/sqlite3_native.bundle +0 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/lib/sqlite3/constants.rb +50 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/lib/sqlite3/database.rb +741 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/lib/sqlite3/errors.rb +35 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/lib/sqlite3/pragmas.rb +595 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/lib/sqlite3/resultset.rb +187 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/lib/sqlite3/statement.rb +145 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/lib/sqlite3/translator.rb +118 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/lib/sqlite3/value.rb +57 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/lib/sqlite3/version.rb +23 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/lib/sqlite3.rb +15 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/test/helper.rb +27 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/test/test_backup.rb +33 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/test/test_collation.rb +82 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/test/test_database.rb +545 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/test/test_database_flags.rb +95 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/test/test_database_readonly.rb +36 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/test/test_database_readwrite.rb +41 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/test/test_deprecated.rb +44 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/test/test_encoding.rb +155 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/test/test_integration.rb +507 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/test/test_integration_aggregate.rb +336 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/test/test_integration_open_close.rb +30 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/test/test_integration_pending.rb +115 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/test/test_integration_resultset.rb +142 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/test/test_integration_statement.rb +194 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/test/test_result_set.rb +37 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/test/test_sqlite3.rb +30 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/test/test_statement.rb +263 -0
- data/lib/sqlite3-1.5.3-arm64-darwin/test/test_statement_execute.rb +35 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/API_CHANGES.md +49 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/CHANGELOG.md +462 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/CONTRIBUTING.md +24 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/ChangeLog.cvs +88 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/README.md +235 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/dependencies.yml +14 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/ext/sqlite3/aggregator.c +274 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/ext/sqlite3/aggregator.h +12 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/ext/sqlite3/backup.c +168 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/ext/sqlite3/backup.h +15 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/ext/sqlite3/database.c +853 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/ext/sqlite3/database.h +17 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/ext/sqlite3/exception.c +98 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/ext/sqlite3/exception.h +8 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/ext/sqlite3/extconf.rb +251 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/ext/sqlite3/sqlite3.c +163 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/ext/sqlite3/sqlite3_ruby.h +48 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/ext/sqlite3/statement.c +442 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/ext/sqlite3/statement.h +16 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/faq/faq.md +431 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/faq/faq.rb +145 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/faq/faq.yml +426 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/lib/sqlite3/2.6/sqlite3_native.bundle +0 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/lib/sqlite3/2.7/sqlite3_native.bundle +0 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/lib/sqlite3/3.0/sqlite3_native.bundle +0 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/lib/sqlite3/3.1/sqlite3_native.bundle +0 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/lib/sqlite3/constants.rb +50 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/lib/sqlite3/database.rb +741 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/lib/sqlite3/errors.rb +35 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/lib/sqlite3/pragmas.rb +595 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/lib/sqlite3/resultset.rb +187 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/lib/sqlite3/statement.rb +145 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/lib/sqlite3/translator.rb +118 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/lib/sqlite3/value.rb +57 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/lib/sqlite3/version.rb +23 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/lib/sqlite3.rb +15 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/test/helper.rb +27 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/test/test_backup.rb +33 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/test/test_collation.rb +82 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/test/test_database.rb +545 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/test/test_database_flags.rb +95 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/test/test_database_readonly.rb +36 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/test/test_database_readwrite.rb +41 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/test/test_deprecated.rb +44 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/test/test_encoding.rb +155 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/test/test_integration.rb +507 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/test/test_integration_aggregate.rb +336 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/test/test_integration_open_close.rb +30 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/test/test_integration_pending.rb +115 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/test/test_integration_resultset.rb +142 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/test/test_integration_statement.rb +194 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/test/test_result_set.rb +37 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/test/test_sqlite3.rb +30 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/test/test_statement.rb +263 -0
- data/lib/sqlite3-1.5.3-x86_64-darwin/test/test_statement_execute.rb +35 -0
- metadata +146 -50
- data/lib/lg_pod_plugin/downloader.rb +0 -57
- data/lib/lg_pod_plugin/gitlab_api.rb +0 -151
- data/lib/lg_pod_plugin/gitlab_archive.rb +0 -294
- data/lib/lg_pod_plugin/gitlab_download.rb +0 -213
- data/lib/lg_pod_plugin/install.rb +0 -156
- data/lib/lg_pod_plugin/l_config.rb +0 -83
- data/lib/lg_pod_plugin/l_util.rb +0 -134
- data/lib/lg_pod_plugin/net-ping.rb +0 -41
- data/lib/lg_pod_plugin/podspec.rb +0 -156
- data/lib/lg_pod_plugin/request.rb +0 -185
@@ -1,83 +0,0 @@
|
|
1
|
-
require 'json'
|
2
|
-
require 'uri'
|
3
|
-
require 'io/console'
|
4
|
-
require_relative 'request'
|
5
|
-
require_relative 'database'
|
6
|
-
require_relative 'gitlab_api'
|
7
|
-
|
8
|
-
module LgPodPlugin
|
9
|
-
|
10
|
-
class LConfig
|
11
|
-
attr_accessor :host
|
12
|
-
attr_accessor :base_url
|
13
|
-
attr_accessor :project_name
|
14
|
-
attr_accessor :access_token
|
15
|
-
attr_accessor :refresh_token
|
16
|
-
attr_accessor :project
|
17
|
-
|
18
|
-
def initialize
|
19
|
-
end
|
20
|
-
|
21
|
-
public
|
22
|
-
def self.getConfig(git)
|
23
|
-
return nil if git.include?("github.com") || git.include?("gitee.com") || git.include?("coding.net") || git.include?("code.aliyun.com")
|
24
|
-
ip_address = LRequest.shared.net_ping.ip
|
25
|
-
network_ok = LRequest.shared.net_ping.network_ok
|
26
|
-
return nil unless ip_address && network_ok
|
27
|
-
if git.include?("ssh") || git.include?("git@gitlab") || git.include?("git@")
|
28
|
-
host = "http://" + ip_address
|
29
|
-
else
|
30
|
-
uri = LRequest.shared.net_ping.uri
|
31
|
-
host = uri ? ("#{uri.scheme}://" + ip_address) : ("http://" + ip_address)
|
32
|
-
end
|
33
|
-
user_id = LUserAuthInfo.get_user_id(host)
|
34
|
-
user_info = LSqliteDb.shared.query_user_info(user_id)
|
35
|
-
unless user_info
|
36
|
-
LgPodPlugin.log_yellow "请输入 `#{uri}` 的用户名"
|
37
|
-
username = STDIN.gets.chomp
|
38
|
-
LgPodPlugin.log_yellow "请输入 `#{uri}` 的密码"
|
39
|
-
password = STDIN.noecho(&:gets).chomp
|
40
|
-
GitLabAPI.request_gitlab_access_token(host, username, password)
|
41
|
-
return nil unless user_info = LSqliteDb.shared.query_user_info(user_id)
|
42
|
-
end
|
43
|
-
|
44
|
-
time = Time.now.to_i
|
45
|
-
# 判断 token 是否失效
|
46
|
-
if user_info.expires_in <= time
|
47
|
-
new_user_info = GitLabAPI.refresh_gitlab_access_token(host, user_info.refresh_token)
|
48
|
-
unless new_user_info
|
49
|
-
username = user_info.username
|
50
|
-
password = user_info.password
|
51
|
-
unless username && password
|
52
|
-
LgPodPlugin.log_yellow "请输入 `#{uri}` 的用户名"
|
53
|
-
username = STDIN.gets.chomp
|
54
|
-
LgPodPlugin.log_yellow "请输入 `#{uri}` 的密码"
|
55
|
-
password = STDIN.noecho(&:gets).chomp
|
56
|
-
end
|
57
|
-
GitLabAPI.request_gitlab_access_token(host, username, password)
|
58
|
-
return nil unless new_user_info = LSqliteDb.shared.query_user_info(user_id)
|
59
|
-
end
|
60
|
-
|
61
|
-
config = LConfig.new
|
62
|
-
config.host = host
|
63
|
-
config.access_token = new_user_info.access_token
|
64
|
-
config.refresh_token = new_user_info.refresh_token
|
65
|
-
config.base_url = LUtils.get_gitlab_base_url(git)
|
66
|
-
config.project_name = LUtils.get_git_project_name(git)
|
67
|
-
config.project = LSqliteDb.shared.query_project_info(config.project_name, git)
|
68
|
-
return config
|
69
|
-
else
|
70
|
-
config = LConfig.new
|
71
|
-
config.host = host
|
72
|
-
config.access_token = user_info.access_token
|
73
|
-
config.refresh_token = user_info.refresh_token
|
74
|
-
config.base_url = LUtils.get_gitlab_base_url(git)
|
75
|
-
config.project_name = LUtils.get_git_project_name(git)
|
76
|
-
config.project = LSqliteDb.shared.query_project_info(config.project_name, git)
|
77
|
-
return config
|
78
|
-
end
|
79
|
-
|
80
|
-
end
|
81
|
-
|
82
|
-
end
|
83
|
-
end
|
data/lib/lg_pod_plugin/l_util.rb
DELETED
@@ -1,134 +0,0 @@
|
|
1
|
-
require 'resolv'
|
2
|
-
require "ipaddr"
|
3
|
-
require 'archive/zip'
|
4
|
-
require_relative 'log'
|
5
|
-
require_relative 'l_config'
|
6
|
-
|
7
|
-
module LgPodPlugin
|
8
|
-
class LUtils
|
9
|
-
|
10
|
-
#判断对象是不是 String
|
11
|
-
def self.is_string(obj)
|
12
|
-
if "#{obj.class}" == "String"
|
13
|
-
return true
|
14
|
-
else
|
15
|
-
return false
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
# 解压文件
|
20
|
-
def self.unzip_file (zip_file, dest_dir)
|
21
|
-
begin
|
22
|
-
Archive::Zip.extract(
|
23
|
-
zip_file,
|
24
|
-
dest_dir,
|
25
|
-
:symlinks => true
|
26
|
-
)
|
27
|
-
return true
|
28
|
-
rescue => err
|
29
|
-
return false
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
# 下载 zip 格式文件
|
35
|
-
def self.download_gitlab_zip_file(download_url, token, file_name)
|
36
|
-
cmds = ['curl']
|
37
|
-
cmds << "--header \"Authorization: Bearer #{token}\"" if token
|
38
|
-
# cmds << "--progress-bar"
|
39
|
-
cmds << "-o #{file_name}"
|
40
|
-
cmds << "--connect-timeout 15"
|
41
|
-
cmds << "--retry 3"
|
42
|
-
cmds << download_url
|
43
|
-
cmds_to_s = cmds.join(" ")
|
44
|
-
system(cmds_to_s)
|
45
|
-
end
|
46
|
-
|
47
|
-
# gitlab 下载压缩文件
|
48
|
-
def self.download_github_zip_file(download_url, file_name)
|
49
|
-
cmds = ['curl']
|
50
|
-
cmds << "-o #{file_name}"
|
51
|
-
cmds << "--connect-timeout 15"
|
52
|
-
cmds << "--retry 3"
|
53
|
-
cmds << download_url
|
54
|
-
cmds_to_s = cmds.join(" ")
|
55
|
-
system(cmds_to_s)
|
56
|
-
end
|
57
|
-
|
58
|
-
def self.git_to_uri(git)
|
59
|
-
begin
|
60
|
-
uri = URI(git)
|
61
|
-
rescue
|
62
|
-
if git.include?("git@") && git.include?(":")
|
63
|
-
uri = URI("http://" + git[4...git.length].split(":").first)
|
64
|
-
else
|
65
|
-
return nil
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
def self.commit_from_ls_remote(output, branch_name)
|
71
|
-
return nil if branch_name.nil?
|
72
|
-
encoded_branch_name = branch_name.dup.force_encoding(Encoding::ASCII_8BIT)
|
73
|
-
if branch_name == "HEAD"
|
74
|
-
match = %r{([a-z0-9]*)\t#{Regexp.quote(encoded_branch_name)}}.match(output)
|
75
|
-
else
|
76
|
-
match = %r{([a-z0-9]*)\trefs\/(heads|tags)\/#{Regexp.quote(encoded_branch_name)}}.match(output)
|
77
|
-
end
|
78
|
-
# LgPodPlugin.log_green match[0] unless match.nil?
|
79
|
-
match[1] unless match.nil?
|
80
|
-
end
|
81
|
-
|
82
|
-
#截取git-url 拿到项目绝对名称 比如 l-base-ios
|
83
|
-
def self.get_git_project_name(git)
|
84
|
-
self.get_gitlab_base_url(git).split("/").last
|
85
|
-
end
|
86
|
-
|
87
|
-
# 是否能够使用 gitlab 下载 zip 文件
|
88
|
-
def self.is_use_gitlab_archive_file(git)
|
89
|
-
return false if git.include?("https://github.com") || git.include?("https://gitee.com")
|
90
|
-
config = LRequest.shared.config
|
91
|
-
return false if (!config || !config.access_token)
|
92
|
-
return true if project = config.project
|
93
|
-
project_name = self.get_git_project_name(git)
|
94
|
-
LRequest.shared.config.project = GitLabAPI.request_project_info(config.host, project_name, config.access_token, git)
|
95
|
-
return true if LRequest.shared.config.project
|
96
|
-
end
|
97
|
-
|
98
|
-
# 截取 url
|
99
|
-
def self.get_gitlab_base_url(git)
|
100
|
-
if git.include?(".git")
|
101
|
-
base_url = git.split(".git").first
|
102
|
-
else
|
103
|
-
base_url = git
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
# 根据参数生成下载 url
|
108
|
-
def self.get_gitlab_download_url(base_url, branch, tag, commit, project_name)
|
109
|
-
if base_url.include?("http:") || base_url.include?("https:")
|
110
|
-
if branch
|
111
|
-
return base_url + "/-/archive/" + branch + "/#{project_name}-#{branch}.zip"
|
112
|
-
elsif tag
|
113
|
-
return base_url + "/-/archive/" + tag + "/#{project_name}-#{tag}.zip"
|
114
|
-
elsif commit
|
115
|
-
return base_url + "/-/archive/" + commit + "/#{project_name}-#{commit}.zip"
|
116
|
-
else
|
117
|
-
return nil
|
118
|
-
end
|
119
|
-
end
|
120
|
-
return nil unless base_url.include?("ssh://git@gitlab") || base_url.include?("git@")
|
121
|
-
project = LRequest.shared.config.project
|
122
|
-
if project && project.web_url && project.web_url.include?("http")
|
123
|
-
self.get_gitlab_download_url(project.web_url, branch, tag, commit, project_name)
|
124
|
-
else
|
125
|
-
return nil
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
def self.url_encode(url)
|
130
|
-
url.to_s.b.gsub(/[^a-zA-Z0-9_\-.~]/n) { |m| sprintf('%%%02X', m.unpack1('C')) }
|
131
|
-
end
|
132
|
-
|
133
|
-
end
|
134
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'uri'
|
2
|
-
require 'resolv'
|
3
|
-
require "ipaddr"
|
4
|
-
require_relative 'l_util'
|
5
|
-
|
6
|
-
module LgPodPlugin
|
7
|
-
|
8
|
-
class Ping
|
9
|
-
attr_accessor :uri
|
10
|
-
attr_accessor :ip
|
11
|
-
attr_accessor :network_ok
|
12
|
-
def initialize(url)
|
13
|
-
self.uri = LUtils.git_to_uri(url)
|
14
|
-
end
|
15
|
-
|
16
|
-
def ping
|
17
|
-
return false unless self.uri
|
18
|
-
result = %x(ping #{uri.host} -t 1)
|
19
|
-
if result.include?("timeout")
|
20
|
-
return false
|
21
|
-
end
|
22
|
-
if result && result.include?("(") && result.include?("):")
|
23
|
-
ip_address = result.split("(").last.split(")").first
|
24
|
-
begin
|
25
|
-
if IPAddr.new ip_address
|
26
|
-
self.ip = ip_address
|
27
|
-
return true
|
28
|
-
else
|
29
|
-
return false
|
30
|
-
end
|
31
|
-
rescue
|
32
|
-
return false
|
33
|
-
end
|
34
|
-
else
|
35
|
-
return false
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
@@ -1,156 +0,0 @@
|
|
1
|
-
require 'cocoapods'
|
2
|
-
require 'cocoapods-core'
|
3
|
-
|
4
|
-
module LgPodPlugin
|
5
|
-
|
6
|
-
class PodSpec
|
7
|
-
attr_accessor :source_files
|
8
|
-
def self.form_file(path)
|
9
|
-
spec = Pod::Specification.from_file(path)
|
10
|
-
return PodSpec.new(spec)
|
11
|
-
end
|
12
|
-
|
13
|
-
def initialize(spec)
|
14
|
-
set = Set[]
|
15
|
-
attributes_hash = spec.send(:attributes_hash)
|
16
|
-
return nil unless attributes_hash.is_a?(Hash)
|
17
|
-
license = attributes_hash["license"]
|
18
|
-
if license.is_a?(Hash)
|
19
|
-
license_file = license["file"]
|
20
|
-
set.add(license_file) if license_file
|
21
|
-
else
|
22
|
-
set.add("LICENSE")
|
23
|
-
end
|
24
|
-
# 解析主模块依赖信息
|
25
|
-
set.merge(parse_subspec_with(attributes_hash))
|
26
|
-
subspecs = spec.subspecs
|
27
|
-
unless subspecs.is_a?(Array)
|
28
|
-
self.source_files = set
|
29
|
-
return
|
30
|
-
end
|
31
|
-
subspecs.each do |sub_spec|
|
32
|
-
next unless sub_attributes_hash = sub_spec.send(:attributes_hash)
|
33
|
-
next unless sub_attributes_hash.is_a?(Hash)
|
34
|
-
sub_set = self.parse_subspec_with(sub_attributes_hash)
|
35
|
-
next if sub_set.empty?
|
36
|
-
set.merge(sub_set)
|
37
|
-
end
|
38
|
-
self.source_files = set
|
39
|
-
end
|
40
|
-
|
41
|
-
# 公共解析解析subspec
|
42
|
-
def parse_subspec_with(hash)
|
43
|
-
set = Set[]
|
44
|
-
source_files = self.parse_source_files(hash["source_files"])
|
45
|
-
set.merge(source_files) unless source_files.empty?
|
46
|
-
resources = self.parse_resource_files(hash["resource"] ||= hash["resources"])
|
47
|
-
set.merge(resources) unless resources.empty?
|
48
|
-
resource_bundles = self.parse_resource_bundles(hash["resource_bundle"] ||= hash["resource_bundles"])
|
49
|
-
set.merge(resource_bundles) unless resource_bundles.empty?
|
50
|
-
project_header_files = self.parse_project_header_files(hash["project_header_files"])
|
51
|
-
set.merge(resource_bundles) unless project_header_files.empty?
|
52
|
-
private_header_files = self.parse_private_header_files(hash["private_header_files"])
|
53
|
-
set.merge(private_header_files) unless private_header_files.empty?
|
54
|
-
vendored_frameworks = self.parse_vendored_frameworks(hash["vendored_frameworks"])
|
55
|
-
set.merge(vendored_frameworks) unless vendored_frameworks.empty?
|
56
|
-
vendored_library = self.parse_vendored_library(hash["vendored_library"] ||= hash["vendored_libraries"])
|
57
|
-
set.merge(vendored_library) unless vendored_library.empty?
|
58
|
-
#parse_preserve_path
|
59
|
-
preserve_paths = self.parse_preserve_path(hash["preserve_path"] ||= hash["preserve_paths"])
|
60
|
-
set.merge(preserve_paths) unless preserve_paths.empty?
|
61
|
-
module_map = self.parse_module_map(hash["module_map"])
|
62
|
-
set.merge(module_map) unless module_map.empty?
|
63
|
-
return set
|
64
|
-
end
|
65
|
-
|
66
|
-
# 公共解析文件路径的方法
|
67
|
-
def parse_public_source_filse(source_files)
|
68
|
-
return [] unless source_files
|
69
|
-
array = []
|
70
|
-
if LUtils.is_string(source_files)
|
71
|
-
if source_files.include?("/")
|
72
|
-
array.append(source_files.split("/").first)
|
73
|
-
else
|
74
|
-
array.append(source_files)
|
75
|
-
end
|
76
|
-
elsif source_files.is_a?(Array)
|
77
|
-
source_files.each do |element|
|
78
|
-
next unless LUtils.is_string(element)
|
79
|
-
if element.include?("/")
|
80
|
-
array.append(element.split("/").first)
|
81
|
-
else
|
82
|
-
array.append(element)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
elsif source_files.is_a?(Hash)
|
86
|
-
source_files.each do |key,val|
|
87
|
-
if LUtils.is_string(val)
|
88
|
-
if val.include?("/")
|
89
|
-
array.append(val.split("/").first)
|
90
|
-
else
|
91
|
-
array.append(val)
|
92
|
-
end
|
93
|
-
elsif val.is_a?(Array)
|
94
|
-
val.each do |element|
|
95
|
-
next unless LUtils.is_string(element)
|
96
|
-
if element.include?("/")
|
97
|
-
array.append(element.split("/").first)
|
98
|
-
else
|
99
|
-
array.append(element)
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
|
-
return array
|
106
|
-
end
|
107
|
-
|
108
|
-
# 解析source_fils路径
|
109
|
-
def parse_source_files(source_files)
|
110
|
-
return self.parse_public_source_filse(source_files)
|
111
|
-
end
|
112
|
-
|
113
|
-
# 解析 resource所在路径
|
114
|
-
def parse_resource_files(source_files)
|
115
|
-
return self.parse_public_source_filse(source_files)
|
116
|
-
end
|
117
|
-
|
118
|
-
# 解析public_header_files字段的值
|
119
|
-
def parse_public_header_files(source_files)
|
120
|
-
return self.parse_public_source_filse(source_files)
|
121
|
-
end
|
122
|
-
# 解析 parse_resource_bundles
|
123
|
-
def parse_resource_bundles(source_files)
|
124
|
-
return self.parse_public_source_filse(source_files)
|
125
|
-
end
|
126
|
-
# 解析 project_header_files
|
127
|
-
def parse_project_header_files(source_files)
|
128
|
-
return self.parse_public_source_filse(source_files)
|
129
|
-
end
|
130
|
-
|
131
|
-
# 解析 private_header_files
|
132
|
-
def parse_private_header_files(source_files)
|
133
|
-
return self.parse_public_source_filse(source_files)
|
134
|
-
end
|
135
|
-
# 解析 vendored_frameworks
|
136
|
-
def parse_vendored_frameworks(source_files)
|
137
|
-
return self.parse_public_source_filse(source_files)
|
138
|
-
end
|
139
|
-
# 解析 parse_vendored_library
|
140
|
-
def parse_vendored_library(source_files)
|
141
|
-
return self.parse_public_source_filse(source_files)
|
142
|
-
end
|
143
|
-
|
144
|
-
# 解析 parse_preserve_path
|
145
|
-
def parse_preserve_path(source_files)
|
146
|
-
return self.parse_public_source_filse(source_files)
|
147
|
-
end
|
148
|
-
|
149
|
-
# 解析 module_map
|
150
|
-
def parse_module_map(source_files)
|
151
|
-
return self.parse_public_source_filse(source_files)
|
152
|
-
end
|
153
|
-
|
154
|
-
end
|
155
|
-
|
156
|
-
end
|
@@ -1,185 +0,0 @@
|
|
1
|
-
require 'yaml'
|
2
|
-
require 'json'
|
3
|
-
require 'net/http'
|
4
|
-
require 'singleton'
|
5
|
-
require_relative 'l_config'
|
6
|
-
require_relative 'l_cache'
|
7
|
-
require_relative 'net-ping'
|
8
|
-
require_relative 'downloader'
|
9
|
-
require_relative 'gitlab_download'
|
10
|
-
module LgPodPlugin
|
11
|
-
|
12
|
-
class LRequest
|
13
|
-
include Singleton
|
14
|
-
# pod name
|
15
|
-
attr_accessor :name
|
16
|
-
# 当前token
|
17
|
-
attr_accessor :token
|
18
|
-
# 缓存
|
19
|
-
attr_accessor :cache
|
20
|
-
# 配置
|
21
|
-
attr_accessor :config
|
22
|
-
# 是否更新
|
23
|
-
attr_accessor :is_update
|
24
|
-
# 工作目录
|
25
|
-
attr_accessor :workspace
|
26
|
-
# 是否是还有 git 地址参数
|
27
|
-
attr_accessor :single_git
|
28
|
-
# git 工具类
|
29
|
-
attr_accessor :git_util
|
30
|
-
# 需要更新的 pod 集合
|
31
|
-
attr_accessor :libs
|
32
|
-
# 下载类
|
33
|
-
attr_accessor :downloader
|
34
|
-
# lock_info
|
35
|
-
attr_accessor :lock_info
|
36
|
-
# 实际下载请求参数
|
37
|
-
attr_accessor :request_params
|
38
|
-
# 传入的请求参数
|
39
|
-
attr_accessor :checkout_options
|
40
|
-
# 网络ip 信息
|
41
|
-
attr_accessor :net_ping
|
42
|
-
|
43
|
-
public
|
44
|
-
def get_lock_info
|
45
|
-
lock_file = self.workspace.join("Podfile.lock")
|
46
|
-
if lock_file.exist?
|
47
|
-
begin
|
48
|
-
json = YAML.load_file(lock_file.to_path)
|
49
|
-
rescue
|
50
|
-
json = {}
|
51
|
-
end
|
52
|
-
external_source = json["EXTERNAL SOURCES"] ||= {}
|
53
|
-
checkout_options = json["CHECKOUT OPTIONS"] ||= {}
|
54
|
-
{ "external_source" => external_source, "checkout_options" => checkout_options }
|
55
|
-
else
|
56
|
-
{ "external_source" => {}, "checkout_options" => {} }
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
# 获取缓存用的hash_map
|
61
|
-
public
|
62
|
-
def get_cache_key_params
|
63
|
-
hash_map = Hash.new
|
64
|
-
git = self.checkout_options[:git] ||= self.request_params[:git]
|
65
|
-
tag = self.checkout_options[:tag] ||= self.request_params[:tag]
|
66
|
-
branch = self.checkout_options[:branch] ||= self.request_params[:branch]
|
67
|
-
commit = self.checkout_options[:commit] ||= self.request_params[:commit]
|
68
|
-
return hash_map unless git
|
69
|
-
hash_map[:git] = git
|
70
|
-
if git && commit
|
71
|
-
hash_map[:commit] = commit
|
72
|
-
elsif git && tag
|
73
|
-
hash_map[:tag] = tag
|
74
|
-
elsif git && branch && commit
|
75
|
-
hash_map[:commit] = commit
|
76
|
-
end
|
77
|
-
hash_map
|
78
|
-
end
|
79
|
-
|
80
|
-
public
|
81
|
-
def get_lock_params
|
82
|
-
begin
|
83
|
-
_external_source = self.lock_info["external_source"][self.name] ||= {}
|
84
|
-
_checkout_options = self.lock_info["checkout_options"][self.name] ||= {}
|
85
|
-
rescue
|
86
|
-
_external_source = {}
|
87
|
-
_checkout_options = {}
|
88
|
-
end
|
89
|
-
|
90
|
-
git = self.checkout_options[:git]
|
91
|
-
tag = self.checkout_options[:tag]
|
92
|
-
commit = self.checkout_options[:commit]
|
93
|
-
branch = self.checkout_options[:branch]
|
94
|
-
|
95
|
-
lock_commit = _checkout_options[:commit] ||= ""
|
96
|
-
lock_branch = _external_source[:branch] ||= ""
|
97
|
-
hash_map = Hash.new
|
98
|
-
hash_map[:git] = git if git
|
99
|
-
if git && tag
|
100
|
-
hash_map[:tag] = tag
|
101
|
-
return hash_map
|
102
|
-
elsif git && branch
|
103
|
-
if branch == lock_branch && !self.is_update
|
104
|
-
hash_map[:branch] = branch if branch
|
105
|
-
if lock_commit && !lock_commit.empty?
|
106
|
-
hash_map[:commit] = lock_commit
|
107
|
-
end
|
108
|
-
return hash_map
|
109
|
-
else
|
110
|
-
hash_map[:branch] = branch if branch
|
111
|
-
_, new_commit = LGitUtil.git_ls_remote_refs(self.name ,git, branch, tag, commit)
|
112
|
-
if new_commit && !new_commit.empty?
|
113
|
-
hash_map[:commit] = new_commit
|
114
|
-
elsif lock_commit && !lock_commit.empty?
|
115
|
-
hash_map[:commit] = lock_commit
|
116
|
-
end
|
117
|
-
if !new_commit || !lock_commit || new_commit.empty? || lock_commit.empty?
|
118
|
-
hash_map["is_delete"] = false
|
119
|
-
elsif (new_commit != lock_commit)
|
120
|
-
hash_map["is_delete"] = false
|
121
|
-
else
|
122
|
-
hash_map["is_delete"] = true
|
123
|
-
end
|
124
|
-
end
|
125
|
-
elsif git && commit
|
126
|
-
hash_map[:commit] = commit if commit
|
127
|
-
return hash_map
|
128
|
-
else
|
129
|
-
_, new_commit = LGitUtil.git_ls_remote_refs(self.name ,git, nil, nil, nil)
|
130
|
-
if new_commit && !new_commit.empty?
|
131
|
-
hash_map[:commit] = new_commit
|
132
|
-
elsif lock_commit && !lock_commit.empty?
|
133
|
-
hash_map[:commit] = lock_commit
|
134
|
-
end
|
135
|
-
if !new_commit || !lock_commit || new_commit.empty? || lock_commit.empty?
|
136
|
-
hash_map["is_delete"] = false
|
137
|
-
elsif (new_commit != lock_commit)
|
138
|
-
hash_map["is_delete"] = false
|
139
|
-
else
|
140
|
-
hash_map["is_delete"] = true
|
141
|
-
end
|
142
|
-
end
|
143
|
-
hash_map
|
144
|
-
end
|
145
|
-
|
146
|
-
public
|
147
|
-
|
148
|
-
#获取下载参数
|
149
|
-
def get_request_params
|
150
|
-
if self.lock_info == nil
|
151
|
-
self.lock_info = self.get_lock_info
|
152
|
-
end
|
153
|
-
Hash.new.merge!(self.get_lock_params)
|
154
|
-
end
|
155
|
-
|
156
|
-
public
|
157
|
-
def setup_pod_info(name, workspace, options = {})
|
158
|
-
self.name = name
|
159
|
-
tag = options[:tag]
|
160
|
-
git = options[:git]
|
161
|
-
commit = options[:commit]
|
162
|
-
branch = options[:branch]
|
163
|
-
self.workspace = workspace
|
164
|
-
if (git && branch) || (git && commit) || (git && tag)
|
165
|
-
self.single_git = false
|
166
|
-
else
|
167
|
-
self.single_git = true
|
168
|
-
end
|
169
|
-
self.net_ping = Ping.new(git)
|
170
|
-
self.net_ping.network_ok = self.net_ping.ping
|
171
|
-
self.checkout_options = Hash.new.deep_merge(options)
|
172
|
-
self.request_params = self.get_request_params
|
173
|
-
self.config = LConfig.getConfig(git)
|
174
|
-
self.cache = LCache.new(self.workspace)
|
175
|
-
self.git_util = LGitUtil.new(name, self.checkout_options)
|
176
|
-
self.downloader = LDownloader.new(name, self.checkout_options)
|
177
|
-
end
|
178
|
-
|
179
|
-
def self.shared
|
180
|
-
return LRequest.instance
|
181
|
-
end
|
182
|
-
|
183
|
-
end
|
184
|
-
|
185
|
-
end
|