fast_pack 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +37 -0
- data/bin/uki +12 -0
- data/lib/cocoapods-uki-packager/command/pack.rb +74 -0
- data/lib/cocoapods-uki-packager/shell.rb +112 -0
- data/lib/cocoapods-uki-packager/uki_config.rb +116 -0
- data/lib/cocoapods-uki-packager/version.rb +5 -0
- data/lib/packager.rb +0 -0
- metadata +85 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c37e9bd1ecedf35fa75841b21868ba2fc7d9dc78863d038fb9b82b9819ab7f24
|
4
|
+
data.tar.gz: 57b75838cc69665bec44e92a1087597f3c47d41d86c9a489bacca56a30211e06
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e2bdf832bd5237e0e046db23df3099a4f17bbe72f640d5aa9563fa5a35ad102c6106e4d3c0fc08952872f1ca90a31444bb351af6a47a5cacc552998f266890dc
|
7
|
+
data.tar.gz: d496492686dec5279e70f937ebb80c5e71d5e123c43da196f7c50720428d96ccafe80315d7931ab8a0405e796fcee8993ccf9494b7857181b059acb8b7f20f96
|
data/README.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# Packager
|
2
|
+
|
3
|
+
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/packager`. To experiment with that code, run `bin/console` for an interactive prompt.
|
4
|
+
|
5
|
+
TODO: Delete this and the text above, and describe your gem
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Install the gem and add to the application's Gemfile by executing:
|
10
|
+
|
11
|
+
$ bundle add packager
|
12
|
+
|
13
|
+
If bundler is not being used to manage dependencies, install the gem by executing:
|
14
|
+
|
15
|
+
$ gem install packager
|
16
|
+
|
17
|
+
## Usage
|
18
|
+
|
19
|
+
TODO: Write usage instructions here
|
20
|
+
|
21
|
+
## Development
|
22
|
+
|
23
|
+
After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
24
|
+
|
25
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
26
|
+
|
27
|
+
## Contributing
|
28
|
+
|
29
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/packager. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/packager/blob/master/CODE_OF_CONDUCT.md).
|
30
|
+
|
31
|
+
## License
|
32
|
+
|
33
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
34
|
+
|
35
|
+
## Code of Conduct
|
36
|
+
|
37
|
+
Everyone interacting in the Packager project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/packager/blob/master/CODE_OF_CONDUCT.md).
|
data/bin/uki
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
if $PROGRAM_NAME == __FILE__
|
5
|
+
ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile', __dir__)
|
6
|
+
require 'bundler/setup'
|
7
|
+
end
|
8
|
+
|
9
|
+
|
10
|
+
require "cocoapods-uki-packager/command/pack"
|
11
|
+
|
12
|
+
Pod::Command.run(ARGV)
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'cocoapods'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'cocoapods-uki-packager/uki_config.rb'
|
4
|
+
require 'cocoapods-uki-packager/shell.rb'
|
5
|
+
|
6
|
+
module Pod
|
7
|
+
|
8
|
+
class Command
|
9
|
+
|
10
|
+
class Pack < Command
|
11
|
+
|
12
|
+
include Uki_config::Mixin
|
13
|
+
include Shell_Command::Mixin
|
14
|
+
|
15
|
+
self.summary = 'Uki 打包工具'
|
16
|
+
self.description = '支持国内 海外打包'
|
17
|
+
|
18
|
+
def self.options
|
19
|
+
[
|
20
|
+
['--overseas', '海外打包, 默认为海外'],
|
21
|
+
['--internal', '国内打包'],
|
22
|
+
['--no-build', '不执行编译命令,直接起飞'],
|
23
|
+
['--dsym', '是否生成dsym, 默认不生成'],
|
24
|
+
['--verbose', '详细流程'],
|
25
|
+
['--release', '是否是正式环境'],
|
26
|
+
|
27
|
+
].concat(super).uniq
|
28
|
+
end
|
29
|
+
|
30
|
+
# verbose Pods 会过滤掉 所以这里拿不到, 但是可以直接使用
|
31
|
+
def initialize(argv)
|
32
|
+
super
|
33
|
+
@no_build = !argv.flag?('build', true)
|
34
|
+
@project_sea = true
|
35
|
+
@project_sea = false if argv.flag?('internal', false)
|
36
|
+
@dsym = argv.flag?('dsym', false)
|
37
|
+
@release = argv.flag?('release', false)
|
38
|
+
|
39
|
+
uki_config.verbose = @verbose
|
40
|
+
uki_config.project_sea = @project_sea
|
41
|
+
uki_config.dsym = @dsym
|
42
|
+
uki_config.release = @release
|
43
|
+
uki_config.no_build = @no_build
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
def run
|
48
|
+
if verify_workspace_exists?
|
49
|
+
if uki_config.no_build
|
50
|
+
#直接导出
|
51
|
+
shell.export
|
52
|
+
elsif
|
53
|
+
# 编译导出
|
54
|
+
shell.build
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
def verify_workspace_exists?
|
62
|
+
uki_config.auto_work_space_name
|
63
|
+
unless uki_config.workspace_name
|
64
|
+
puts("大兄弟,请前往xxxx.workspace同级目录执行哦")
|
65
|
+
return false
|
66
|
+
end
|
67
|
+
|
68
|
+
return true
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
require 'cocoapods-uki-packager/uki_config.rb'
|
2
|
+
require 'cocoapods'
|
3
|
+
|
4
|
+
class Shell_Command
|
5
|
+
|
6
|
+
include Uki_config::Mixin
|
7
|
+
|
8
|
+
def build
|
9
|
+
|
10
|
+
puts %x{echo "********************************************************* 开始编译"}
|
11
|
+
|
12
|
+
log = %x{
|
13
|
+
|
14
|
+
xcodebuild build -workspace #{uki_config.workspace} -scheme #{uki_config.scheme} -destination generic/platform=iOS -configuration #{uki_config.configuration} DEBUG_INFORMATION_FORMAT=#{uki_config.dsym_config} DWARF_DSYM_FOLDER_PATH=#{uki_config.dsym_path}
|
15
|
+
|
16
|
+
if [[ $? -ne 0 ]]; then
|
17
|
+
echo "************************************* 编译失败 *************************************"
|
18
|
+
exit 1
|
19
|
+
fi
|
20
|
+
}
|
21
|
+
|
22
|
+
puts %x{echo "********************************************************* 编译完成"}
|
23
|
+
|
24
|
+
if uki_config.verbose?
|
25
|
+
# puts(log)
|
26
|
+
end
|
27
|
+
|
28
|
+
# 直接开始导出
|
29
|
+
self.export
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
# 暂时先不copy到跟目录, 防止Git提交代码时提交上去
|
34
|
+
# 需安装Fir 不太友好
|
35
|
+
# 安装命令 sudo gem install fir-cli
|
36
|
+
def export
|
37
|
+
|
38
|
+
unless uki_config.build_exe_path
|
39
|
+
puts "未生成目标文件目录"
|
40
|
+
return
|
41
|
+
end
|
42
|
+
|
43
|
+
puts %x{echo "********************************************************* 开始导出ipa"}
|
44
|
+
|
45
|
+
log = %x{
|
46
|
+
product_path=#{uki_config.build_exe_path}
|
47
|
+
if [[ $product_path == "" ]]; then
|
48
|
+
echo "===no path input==="
|
49
|
+
product_path=`dirname $0`
|
50
|
+
fi
|
51
|
+
|
52
|
+
echo -e “=====path=$product_path =====“
|
53
|
+
|
54
|
+
cd $product_path
|
55
|
+
|
56
|
+
fir_log="fir auto release"
|
57
|
+
|
58
|
+
#计时
|
59
|
+
SECONDS=0
|
60
|
+
|
61
|
+
APP=$(find $product_path -type d | grep ".app$" | head -n 1)
|
62
|
+
APP=${APP%.*}
|
63
|
+
|
64
|
+
echo -e “=====APP=$APP =====“
|
65
|
+
|
66
|
+
rm -rf "$APP.ipa";
|
67
|
+
rm -rf ./Payload;
|
68
|
+
mkdir Payload;
|
69
|
+
cp -rf "$APP.app" ./Payload;
|
70
|
+
zip -r -q "$APP.ipa" ./Payload;
|
71
|
+
rm -rf ./Payload;
|
72
|
+
|
73
|
+
echo "===生成ipa开始上传 time: ${SECONDS}s==="
|
74
|
+
|
75
|
+
|
76
|
+
fir_token="207c7aad886da8009a73486d5154a7a6"
|
77
|
+
fir publish "$APP.ipa" -T $fir_token -c "$fir_log" -Q -q
|
78
|
+
|
79
|
+
size=$(ls -l $APP.ipa | awk '{ print $5 }')
|
80
|
+
|
81
|
+
sizeM=`echo "scale=2; ${size}/1024.0/1024" | bc`
|
82
|
+
#sizeM="$((${size}/1000.0))
|
83
|
+
echo -e "===size=${sizeM}m==="
|
84
|
+
|
85
|
+
notification="Did uploaded to fir caost time:${SECONDS}s"
|
86
|
+
echo "===$notification==="
|
87
|
+
|
88
|
+
osascript -e 'display notification "size:'$sizeM'm\ncaost:'$SECONDS's" with title "Uploaded to fir!" sound name "default" '
|
89
|
+
}
|
90
|
+
|
91
|
+
puts("恭喜打包完成")
|
92
|
+
|
93
|
+
if uki_config.verbose?
|
94
|
+
puts(log)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def self.instance
|
99
|
+
@instance ||= new
|
100
|
+
end
|
101
|
+
|
102
|
+
class << self
|
103
|
+
attr_writer :instance
|
104
|
+
end
|
105
|
+
|
106
|
+
module Mixin
|
107
|
+
def shell
|
108
|
+
Shell_Command.instance
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
|
2
|
+
class Uki_config
|
3
|
+
|
4
|
+
# scheme info
|
5
|
+
PROJECT_SCHEME = ['UkiOverseas', 'miaohong'].freeze
|
6
|
+
|
7
|
+
# workspace name
|
8
|
+
PROJECT_WORKSPACENAME = ['UkiOverseas.xcworkspace', 'miaohong.xcworkspace']
|
9
|
+
|
10
|
+
# 是否展示详细信息
|
11
|
+
attr_accessor :verbose
|
12
|
+
# 是否海外
|
13
|
+
attr_accessor :project_sea
|
14
|
+
# 是否执行编译命令
|
15
|
+
attr_accessor :no_build
|
16
|
+
# 是否编译release环境
|
17
|
+
attr_accessor :release
|
18
|
+
# 是否产生dsym
|
19
|
+
attr_accessor :dsym
|
20
|
+
# 自动workspace名称
|
21
|
+
attr_accessor :workspace_name
|
22
|
+
|
23
|
+
alias_method :verbose?, :verbose
|
24
|
+
|
25
|
+
def scheme
|
26
|
+
unless project_sea
|
27
|
+
return PROJECT_SCHEME.last
|
28
|
+
end
|
29
|
+
return PROJECT_SCHEME.first
|
30
|
+
end
|
31
|
+
|
32
|
+
def workspace
|
33
|
+
unless project_sea
|
34
|
+
return PROJECT_WORKSPACENAME.last
|
35
|
+
end
|
36
|
+
|
37
|
+
return PROJECT_WORKSPACENAME.first
|
38
|
+
end
|
39
|
+
|
40
|
+
def configuration
|
41
|
+
unless release
|
42
|
+
return "Debug"
|
43
|
+
end
|
44
|
+
return "Release"
|
45
|
+
end
|
46
|
+
|
47
|
+
def archive_path
|
48
|
+
return @installation_root
|
49
|
+
end
|
50
|
+
|
51
|
+
def dsym_config
|
52
|
+
unless dsym
|
53
|
+
return "dwarf"
|
54
|
+
end
|
55
|
+
|
56
|
+
return "dwarf-with-dsym"
|
57
|
+
end
|
58
|
+
|
59
|
+
def dsym_path
|
60
|
+
return File.join(@installation_root.to_s, "dsym")
|
61
|
+
end
|
62
|
+
|
63
|
+
def ipa_path
|
64
|
+
return File.join(@installation_root.to_s, "ipa")
|
65
|
+
end
|
66
|
+
|
67
|
+
def verbose(v)
|
68
|
+
@verbose
|
69
|
+
end
|
70
|
+
|
71
|
+
# 路径相关
|
72
|
+
|
73
|
+
def installation_root
|
74
|
+
@installation_root ||= begin
|
75
|
+
current_dir = Pathname.new(Dir.pwd.unicode_normalize(:nfkc))
|
76
|
+
installation_root = current_dir
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
def auto_work_space_name
|
82
|
+
installation_root
|
83
|
+
|
84
|
+
Dir.foreach(@installation_root) do |entry|
|
85
|
+
if entry.end_with?('xcworkspace')
|
86
|
+
@workspace_name = entry.split('.').first
|
87
|
+
next
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
# 读取产物记录文件
|
93
|
+
def app_file_path
|
94
|
+
return File.join(@installation_root, "app_path")
|
95
|
+
end
|
96
|
+
|
97
|
+
# 产物路径
|
98
|
+
def build_exe_path
|
99
|
+
return IO.readlines(app_file_path).first
|
100
|
+
end
|
101
|
+
|
102
|
+
def self.instance
|
103
|
+
@instance ||= new
|
104
|
+
end
|
105
|
+
|
106
|
+
class << self
|
107
|
+
attr_writer :instance
|
108
|
+
end
|
109
|
+
|
110
|
+
module Mixin
|
111
|
+
def uki_config
|
112
|
+
Uki_config.instance
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
data/lib/packager.rb
ADDED
File without changes
|
metadata
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fast_pack
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- 耿磊
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-07-31 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: cocoapods
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: fir-cli
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.0'
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 2.0.14
|
37
|
+
type: :runtime
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - "~>"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '2.0'
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 2.0.14
|
47
|
+
description: Test
|
48
|
+
email:
|
49
|
+
- glworkfine@gmail.com
|
50
|
+
executables:
|
51
|
+
- uki
|
52
|
+
extensions: []
|
53
|
+
extra_rdoc_files: []
|
54
|
+
files:
|
55
|
+
- README.md
|
56
|
+
- bin/uki
|
57
|
+
- lib/cocoapods-uki-packager/command/pack.rb
|
58
|
+
- lib/cocoapods-uki-packager/shell.rb
|
59
|
+
- lib/cocoapods-uki-packager/uki_config.rb
|
60
|
+
- lib/cocoapods-uki-packager/version.rb
|
61
|
+
- lib/packager.rb
|
62
|
+
homepage: https://github.com/iOSGL/package.git
|
63
|
+
licenses:
|
64
|
+
- MIT
|
65
|
+
metadata: {}
|
66
|
+
post_install_message:
|
67
|
+
rdoc_options: []
|
68
|
+
require_paths:
|
69
|
+
- lib
|
70
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: 2.6.0
|
75
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
requirements: []
|
81
|
+
rubygems_version: 3.0.9
|
82
|
+
signing_key:
|
83
|
+
specification_version: 4
|
84
|
+
summary: Test
|
85
|
+
test_files: []
|