fast_pack 0.3.0
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 +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: []
|