ormdev 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -16
- data/README.md +1 -1
- data/Rakefile +7 -3
- data/bin/ormdev +2 -2
- data/lib/ormdev/command/create.rb +4 -8
- data/lib/ormdev/command/lint.rb +50 -0
- data/lib/ormdev/command/publish.rb +51 -0
- data/lib/ormdev/command/run.rb +51 -0
- data/lib/ormdev/command/setup.rb +37 -0
- data/lib/ormdev/command.rb +19 -17
- data/lib/ormdev/source/core/create_helper.rb +79 -42
- data/lib/ormdev/source/core/run_helper.rb +95 -0
- data/lib/ormdev/source/util/log_util.rb +31 -4
- data/lib/ormdev/source/util/sh_util.rb +5 -69
- data/lib/ormdev/version.rb +2 -2
- data/lib/ormdev.rb +1 -1
- data/ormdev.gemspec +14 -12
- metadata +13 -12
- data/lib/ormdev/command/package.rb +0 -0
- data/lib/ormdev/command/push.rb +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0fbabc8c3500cdb0dd3fe8d510f172754c82353c6404113a58de311c62e08809
|
4
|
+
data.tar.gz: f1582483ec8ca6c2631f69affe15998e0ded1daf709cf4c56f6ed52941226b37
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6bb861ab0ac000d8047d2b0892f505cfe3ec3487623e0152ca5aeab38a93e641d38dcf45c7757062b681cbc3f9946e036ec7525867de7a8a07caba10578faeb4
|
7
|
+
data.tar.gz: afb19db51b5ab04b4b65c73a4854b2762d6b6a714c81145e4e163cc8a3e4704b5f5a6235f6f5e43b4a9118861f93e7353ee1b967ba3c5ebc9896c7dfceab9376
|
data/Gemfile.lock
CHANGED
@@ -1,35 +1,22 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ormdev (0.0.
|
4
|
+
ormdev (0.0.3)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
|
9
|
+
minitest (5.11.3)
|
10
10
|
rake (10.4.2)
|
11
|
-
rspec (3.7.0)
|
12
|
-
rspec-core (~> 3.7.0)
|
13
|
-
rspec-expectations (~> 3.7.0)
|
14
|
-
rspec-mocks (~> 3.7.0)
|
15
|
-
rspec-core (3.7.1)
|
16
|
-
rspec-support (~> 3.7.0)
|
17
|
-
rspec-expectations (3.7.0)
|
18
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
19
|
-
rspec-support (~> 3.7.0)
|
20
|
-
rspec-mocks (3.7.0)
|
21
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
22
|
-
rspec-support (~> 3.7.0)
|
23
|
-
rspec-support (3.7.1)
|
24
11
|
|
25
12
|
PLATFORMS
|
26
13
|
ruby
|
27
14
|
|
28
15
|
DEPENDENCIES
|
29
16
|
bundler (~> 1.17)
|
17
|
+
minitest (~> 5.0)
|
30
18
|
ormdev!
|
31
19
|
rake (~> 10.0)
|
32
|
-
rspec (~> 3.0)
|
33
20
|
|
34
21
|
BUNDLED WITH
|
35
22
|
1.17.1
|
data/README.md
CHANGED
@@ -26,7 +26,7 @@ TODO: Write usage instructions here
|
|
26
26
|
|
27
27
|
## Development
|
28
28
|
|
29
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake
|
29
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
30
30
|
|
31
31
|
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 tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
32
32
|
|
data/Rakefile
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
-
require "
|
2
|
+
require "rake/testtask"
|
3
3
|
|
4
|
-
|
4
|
+
Rake::TestTask.new(:test) do |t|
|
5
|
+
t.libs << "test"
|
6
|
+
t.libs << "lib"
|
7
|
+
t.test_files = FileList["test/**/*_test.rb"]
|
8
|
+
end
|
5
9
|
|
6
|
-
task :default => :
|
10
|
+
task :default => :test
|
data/bin/ormdev
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require_relative '../source/core/create_helper'
|
2
2
|
|
3
|
-
module
|
3
|
+
module OrmDev
|
4
4
|
class Command
|
5
5
|
class Create < Command
|
6
6
|
self.summary = '创建Orm插件模板工程。'
|
@@ -40,13 +40,9 @@ module Ormdev
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def run
|
43
|
-
create =
|
44
|
-
create.setup(@
|
45
|
-
|
46
|
-
create.clone_template
|
47
|
-
project_name = create.setup
|
48
|
-
create.print_info
|
49
|
-
Ormdev::Log.info "【create】Success!!! Please run command:\n cd #{@name} \n orm init #{project_name}"
|
43
|
+
create = OrmDev::CreateHelper.new(@name, @fast, @prefix, @template_url)
|
44
|
+
create.setup(@skip)
|
45
|
+
OrmDev::LogUtil.info "【create】Success!!! "
|
50
46
|
end
|
51
47
|
end
|
52
48
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'cocoapods'
|
2
|
+
|
3
|
+
require_relative '../source/util/sh_util'
|
4
|
+
|
5
|
+
module OrmDev
|
6
|
+
class Command
|
7
|
+
class Lint < Command
|
8
|
+
self.summary = '验证本地插件pod仓库。'
|
9
|
+
self.description = <<-DESC
|
10
|
+
插件管理.
|
11
|
+
验证本地插件。
|
12
|
+
DESC
|
13
|
+
|
14
|
+
self.arguments = [
|
15
|
+
CLAide::Argument.new('PATH', false)
|
16
|
+
]
|
17
|
+
|
18
|
+
def self.options
|
19
|
+
[
|
20
|
+
].concat(super)
|
21
|
+
end
|
22
|
+
|
23
|
+
def initialize(argv)
|
24
|
+
@podspec_file = argv.shift_argument
|
25
|
+
@podspec_files = Pathname.pwd.children.select { |pn| pn.extname == '.podspec' }
|
26
|
+
super
|
27
|
+
end
|
28
|
+
|
29
|
+
def validate!
|
30
|
+
super
|
31
|
+
if @podspec_file
|
32
|
+
help! "podspec file at #{@podspec_file} does not exist" unless File.exist? @podspec_file
|
33
|
+
@podspec_path = @podspec_file
|
34
|
+
else
|
35
|
+
raise Pod::Informative, 'No podspec file found, please specify one' unless @podspec_files.length > 0
|
36
|
+
raise Pod::Informative, 'Multiple podspec file found, please specify one' unless @podspec_files.length == 1
|
37
|
+
@podspec_path = @podspec_files.first
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def run
|
42
|
+
super
|
43
|
+
OrmDev::LogUtil.info '[插件管理] 验证Pod'.green
|
44
|
+
@spec = Pod::Specification.from_file(@podspec_path)
|
45
|
+
pod_lint_command = 'pod lib lint --sources=orm,master --allow-warnings --verbose --use-libraries'
|
46
|
+
OrmDev::SHUtil.run_command(pod_lint_command,'更验证Pod',false)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'cocoapods'
|
2
|
+
|
3
|
+
require_relative '../source/core/run_helper'
|
4
|
+
|
5
|
+
module OrmDev
|
6
|
+
class Command
|
7
|
+
class Publish < Command
|
8
|
+
self.summary = '发布插件'
|
9
|
+
self.description = <<-DESC
|
10
|
+
发布插件.
|
11
|
+
指定'插件名.podspec'的路径`PATH`。
|
12
|
+
DESC
|
13
|
+
|
14
|
+
self.arguments = [
|
15
|
+
CLAide::Argument.new('PATH', false)
|
16
|
+
]
|
17
|
+
|
18
|
+
def self.options
|
19
|
+
[
|
20
|
+
].concat(super)
|
21
|
+
end
|
22
|
+
|
23
|
+
def initialize(argv)
|
24
|
+
@podspec_file = argv.shift_argument
|
25
|
+
@podspec_files = Pathname.pwd.children.select { |pn| pn.extname == '.podspec' }
|
26
|
+
super
|
27
|
+
end
|
28
|
+
|
29
|
+
def validate!
|
30
|
+
super
|
31
|
+
# raise Pod::Informative, "No `Cimfile' found in the project directory." unless @cipfile_path.exist?
|
32
|
+
if @podspec_file
|
33
|
+
help! "podspec file at #{@podspec_file} does not exist" unless File.exist? @podspec_file
|
34
|
+
@podspec_path = @podspec_file
|
35
|
+
else
|
36
|
+
raise Pod::Informative, 'No podspec file found, please specify one' unless @podspec_files.length > 0
|
37
|
+
raise Pod::Informative, 'Multiple podspec file found, please specify one' unless @podspec_files.length == 1
|
38
|
+
@podspec_path = @podspec_files.first
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def run
|
43
|
+
super
|
44
|
+
OrmDev::LogUtil.info '[插件发布] '.green
|
45
|
+
installer = OrmDev::RunHelper.new(@podspec_path)
|
46
|
+
installer.setup()
|
47
|
+
OrmDev::LogUtil.info "Success!!! Please run command:\n orm ipa \#{platform}"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'cocoapods'
|
2
|
+
|
3
|
+
require_relative '../source/core/run_helper'
|
4
|
+
|
5
|
+
module OrmDev
|
6
|
+
class Command
|
7
|
+
class Run < Command
|
8
|
+
self.summary = '运行插件发布整个流程[检查运行环境、framwork、zip]'
|
9
|
+
self.description = <<-DESC
|
10
|
+
运行插件发布整个流程.
|
11
|
+
指定'插件名.podspec'的路径`PATH`。
|
12
|
+
DESC
|
13
|
+
|
14
|
+
self.arguments = [
|
15
|
+
CLAide::Argument.new('PATH', false)
|
16
|
+
]
|
17
|
+
|
18
|
+
def self.options
|
19
|
+
[
|
20
|
+
].concat(super)
|
21
|
+
end
|
22
|
+
|
23
|
+
def initialize(argv)
|
24
|
+
@podspec_file = argv.shift_argument
|
25
|
+
@podspec_files = Pathname.pwd.children.select { |pn| pn.extname == '.podspec' }
|
26
|
+
super
|
27
|
+
end
|
28
|
+
|
29
|
+
def validate!
|
30
|
+
super
|
31
|
+
# raise Pod::Informative, "No `Cimfile' found in the project directory." unless @cipfile_path.exist?
|
32
|
+
if @podspec_file
|
33
|
+
help! "podspec file at #{@podspec_file} does not exist" unless File.exist? @podspec_file
|
34
|
+
@podspec_path = @podspec_file
|
35
|
+
else
|
36
|
+
raise Pod::Informative, 'No podspec file found, please specify one' unless @podspec_files.length > 0
|
37
|
+
raise Pod::Informative, 'Multiple podspec file found, please specify one' unless @podspec_files.length == 1
|
38
|
+
@podspec_path = @podspec_files.first
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def run
|
43
|
+
super
|
44
|
+
OrmDev::LogUtil.info '[插件发布] '.green
|
45
|
+
installer = OrmDev::RunHelper.new(@podspec_path)
|
46
|
+
installer.setup()
|
47
|
+
OrmDev::LogUtil.info "Success!!! Please run command:\n orm ipa \#{platform}"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'cocoapods'
|
2
|
+
|
3
|
+
require_relative '../source/util/sh_util'
|
4
|
+
|
5
|
+
module OrmDev
|
6
|
+
class Command
|
7
|
+
class Setup < Command
|
8
|
+
self.summary = '初始化pod仓库。'
|
9
|
+
self.description = <<-DESC
|
10
|
+
初始化pod仓库。
|
11
|
+
DESC
|
12
|
+
|
13
|
+
self.arguments = [
|
14
|
+
]
|
15
|
+
|
16
|
+
def self.options
|
17
|
+
[
|
18
|
+
].concat(super)
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize(argv)
|
22
|
+
super
|
23
|
+
end
|
24
|
+
|
25
|
+
def validate!
|
26
|
+
super
|
27
|
+
end
|
28
|
+
|
29
|
+
def run
|
30
|
+
super
|
31
|
+
OrmDev::LogUtil.info '[插件开发] 初始化pod仓库'.green
|
32
|
+
OrmDev::SHUtil.run_command('pod repo add orm https://gitee.com/mvn/ios.git','更验证Pod',false)
|
33
|
+
OrmDev::SHUtil.run_command('pod repo update orm','更验证Pod',false)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/lib/ormdev/command.rb
CHANGED
@@ -1,20 +1,22 @@
|
|
1
1
|
require 'claide'
|
2
2
|
|
3
|
-
module
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
3
|
+
module OrmDev
|
4
|
+
class Command < CLAide::Command
|
5
|
+
|
6
|
+
require 'ormdev/command/setup'
|
7
|
+
require 'ormdev/command/create'
|
8
|
+
require 'ormdev/command/lint'
|
9
|
+
require 'ormdev/command/run'
|
10
|
+
require 'ormdev/command/publish'
|
11
|
+
|
12
|
+
self.abstract_command = true
|
13
|
+
self.command = 'ormdev'
|
14
|
+
self.version = OrmDev::VERSION
|
15
|
+
self.description = 'OriginalM —— 混合模式移动应用(Hybrid App)持续集成(Continuous Integration)工具包,用于构建、编译、测试、分发、部署的工具。'
|
16
|
+
|
17
|
+
def run
|
18
|
+
OrmDev::LogUtil.info '* 开始执行orm … *'
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
20
22
|
end
|
@@ -1,29 +1,49 @@
|
|
1
1
|
require 'cocoapods'
|
2
2
|
|
3
|
-
|
3
|
+
require_relative '../util/sh_util'
|
4
|
+
|
5
|
+
module OrmDev
|
4
6
|
class CreateHelper
|
5
7
|
|
6
|
-
|
8
|
+
ORMDEV_PLUGIN_TEMPLATE_URL = 'https://gitee.com/mvn/pod-plugin-template.git'.freeze
|
9
|
+
ORMDEV_PLUGIN_FAST_TEMPLATE_URL = 'https://gitee.com/mvn/pod-plugin-fast-template.git'.freeze
|
7
10
|
|
11
|
+
attr_reader :fast_build
|
8
12
|
attr_reader :project_name
|
9
13
|
attr_reader :class_prefix
|
10
14
|
attr_reader :template_url
|
11
15
|
|
12
|
-
def initialize(name, prefix = '', template_url =
|
16
|
+
def initialize(name, fast = false, prefix = '', template_url = nil)
|
13
17
|
@project_name = name
|
14
18
|
@class_prefix = prefix
|
15
|
-
@
|
19
|
+
@fast_build = fast
|
20
|
+
if @fast_build then
|
21
|
+
@template_url = template_url || ORMDEV_PLUGIN_FAST_TEMPLATE_URL
|
22
|
+
else
|
23
|
+
@template_url = template_url || ORMDEV_PLUGIN_TEMPLATE_URL
|
24
|
+
end
|
16
25
|
end
|
17
26
|
|
18
|
-
def setup(
|
19
|
-
if
|
20
|
-
|
21
|
-
|
27
|
+
def setup(skip= false)
|
28
|
+
if @fast_build then
|
29
|
+
clone_template
|
30
|
+
configure_template(skip)
|
31
|
+
print_info
|
22
32
|
else
|
23
|
-
|
33
|
+
create_command = "pod lib create #{@project_name} --template-url=#{@template_url}"
|
34
|
+
OrmDev::SHUtil.run_command(create_command,'创建ORM插件工程')
|
24
35
|
end
|
25
36
|
end
|
26
37
|
|
38
|
+
private
|
39
|
+
|
40
|
+
#----------------------------------------#
|
41
|
+
|
42
|
+
# !@group Private helpers
|
43
|
+
|
44
|
+
extend Pod::Executable
|
45
|
+
executable :git
|
46
|
+
|
27
47
|
# Clones the template from the remote in the working directory using
|
28
48
|
# the name of the Pod.
|
29
49
|
#
|
@@ -31,7 +51,7 @@ module ORM
|
|
31
51
|
#
|
32
52
|
def clone_template
|
33
53
|
Pod::UI.section("Cloning `#{template_repo_url}` into `#{@project_name}`.") do
|
34
|
-
|
54
|
+
git! ['clone', template_repo_url, @project_name]
|
35
55
|
end
|
36
56
|
end
|
37
57
|
|
@@ -39,13 +59,12 @@ module ORM
|
|
39
59
|
#
|
40
60
|
# @return [void]
|
41
61
|
#
|
42
|
-
def
|
62
|
+
def configure_template(skip_open = false)
|
43
63
|
string_replacements = {
|
44
64
|
# "PROJECT_OWNER" => @configurator.user_name,
|
45
65
|
"TODAYS_DATE" => Time.now.strftime("%m/%d/%Y"),
|
46
66
|
"TODAYS_YEAR" => Time.now.year.to_s,
|
47
|
-
"
|
48
|
-
"OrmPro" => @class_prefix
|
67
|
+
"CIPPROJECT" => @project_name
|
49
68
|
}
|
50
69
|
Dir.glob(project_folder + "/**/**/**/**").each do |name|
|
51
70
|
next if Dir.exists? name
|
@@ -59,36 +78,45 @@ module ORM
|
|
59
78
|
end
|
60
79
|
|
61
80
|
# shared schemes have project specific names
|
62
|
-
scheme_path = project_folder + "/
|
81
|
+
scheme_path = project_folder + "/Example/CIPPROJECT.xcodeproj/xcshareddata/xcschemes/"
|
82
|
+
|
63
83
|
raise Pod::Informative, 'No Xcode project shared schemes found, please specify one' unless Dir.exists? scheme_path
|
64
|
-
File.rename(scheme_path + "
|
84
|
+
File.rename(scheme_path + "CIPPROJECT-Example.xcscheme", scheme_path + @project_name + "-Example.xcscheme")
|
65
85
|
|
66
86
|
# rename xcproject
|
67
|
-
File.rename(project_folder + "/
|
68
|
-
|
69
|
-
# change app file prefixes
|
70
|
-
["OrmProAppDelegate.h", "OrmProAppDelegate.m"].each do |file|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
end
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
87
|
+
File.rename(project_folder + "/Example/CIPPROJECT.xcodeproj", File.join(project_folder, "Example/#{@project_name}.xcodeproj"))
|
88
|
+
|
89
|
+
# # change app file prefixes
|
90
|
+
# ["OrmProAppDelegate.h", "OrmProAppDelegate.m"].each do |file|
|
91
|
+
# before = project_folder + "/PROJECT/" + file
|
92
|
+
# next unless File.exists? before
|
93
|
+
#
|
94
|
+
# after = project_folder + "/PROJECT/" + file.gsub("OrmPro", @class_prefix)
|
95
|
+
# File.rename before, after
|
96
|
+
# end
|
97
|
+
|
98
|
+
# rename project related files
|
99
|
+
safe_rename_file("#{project_folder}/Example/CIPPROJECT.xcworkspace", "#{project_folder}/Example/#{@project_name}.xcworkspace")
|
100
|
+
safe_rename_file("#{project_folder}/Example/CIPPROJECT/CIPPROJECT-Info.plist", "#{project_folder}/Example/CIPPROJECT/#{@project_name}-Info.plist")
|
101
|
+
safe_rename_file("#{project_folder}/Example/CIPPROJECT/CIPPROJECT-Prefix.pch", "#{project_folder}/Example/CIPPROJECT/#{@project_name}-Prefix.pch")
|
102
|
+
safe_rename_file("#{project_folder}/Example/CIPPROJECT", "#{project_folder}/Example/#{@project_name}")
|
103
|
+
safe_rename_file("#{project_folder}/CIPPROJECT/Classes/CIPPROJECT.h", "#{project_folder}/CIPPROJECT/Classes/#{@project_name}.h")
|
104
|
+
safe_rename_file("#{project_folder}/CIPPROJECT/Classes/CIPPROJECT.m", "#{project_folder}/CIPPROJECT/Classes/#{@project_name}.m")
|
105
|
+
safe_rename_file("#{project_folder}/CIPPROJECT/Classes/CIPPROJECTAPI.h", "#{project_folder}/CIPPROJECT/Classes/#{@project_name}API.h")
|
106
|
+
safe_rename_file("#{project_folder}/CIPPROJECT/Classes/CIPPROJECTConst.h", "#{project_folder}/CIPPROJECT/Classes/#{@project_name}Const.h")
|
107
|
+
safe_rename_file("#{project_folder}/CIPPROJECT/Classes/CIPPROJECTConst.m", "#{project_folder}/CIPPROJECT/Classes/#{@project_name}Const.m")
|
108
|
+
safe_rename_file("#{project_folder}/CIPPROJECT/Classes/CIPPROJECTMacros.h", "#{project_folder}/CIPPROJECT/Classes/#{@project_name}Macros.h")
|
109
|
+
safe_rename_file("#{project_folder}/CIPPROJECT", "#{project_folder}/#{@project_name}")
|
110
|
+
safe_rename_file("#{project_folder}/CIPPROJECT.podspec", "#{project_folder}/#{@project_name}.podspec")
|
82
111
|
reinitialize_svn_repo
|
83
|
-
"#{@project_name}.xcodeproj"
|
84
|
-
end
|
85
112
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
113
|
+
OrmDev::LogUtil.info "\nRunning " + "pod install".magenta + " on your new library."
|
114
|
+
Dir.chdir("#{project_folder}/Example") do
|
115
|
+
system "pod install"
|
116
|
+
OrmDev::LogUtil.info " open '#{project_folder}/Example/#{@project_name}.xcworkspace'".magenta
|
117
|
+
system "open '#{@project_name}.xcworkspace'" unless skip_open
|
118
|
+
end
|
119
|
+
project_folder
|
92
120
|
end
|
93
121
|
|
94
122
|
private
|
@@ -97,9 +125,6 @@ module ORM
|
|
97
125
|
|
98
126
|
# !@group Private helpers
|
99
127
|
|
100
|
-
extend Pod::Executable
|
101
|
-
executable :svn
|
102
|
-
|
103
128
|
def project_folder
|
104
129
|
@project_name
|
105
130
|
end
|
@@ -120,12 +145,24 @@ module ORM
|
|
120
145
|
end
|
121
146
|
end
|
122
147
|
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
|
152
|
+
# Runs the template configuration utilities.
|
153
|
+
#
|
154
|
+
# @return [void]
|
155
|
+
#
|
156
|
+
def print_info
|
157
|
+
Pod::UI.puts "\nTo learn more about the template see `#{template_repo_url}`."
|
158
|
+
end
|
159
|
+
|
123
160
|
# Checks if a template URL is given else returns the TEMPLATE_REPO URL
|
124
161
|
#
|
125
162
|
# @return String
|
126
163
|
#
|
127
164
|
def template_repo_url
|
128
|
-
@template_url ||
|
165
|
+
@template_url || ORM_PLUGIN_TEMPLATE_URL
|
129
166
|
end
|
130
167
|
end
|
131
168
|
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'cocoapods'
|
2
|
+
|
3
|
+
require_relative '../util/sh_util'
|
4
|
+
|
5
|
+
module OrmDev
|
6
|
+
class RunHelper
|
7
|
+
attr_reader :spec
|
8
|
+
|
9
|
+
def initialize(path)
|
10
|
+
@spec = Pod::Specification.from_file(path)
|
11
|
+
end
|
12
|
+
|
13
|
+
def setup()
|
14
|
+
task_start_time = Time.now
|
15
|
+
time_info_logs = ["开始运行:#{task_start_time}"]
|
16
|
+
start_time = task_start_time
|
17
|
+
|
18
|
+
if step == 0 || step == 0 then
|
19
|
+
check_environment
|
20
|
+
current_time = Time.new
|
21
|
+
time_info_logs << "检查运行环境:#{current_time - start_time}秒"
|
22
|
+
start_time = current_time
|
23
|
+
end
|
24
|
+
|
25
|
+
if step == 0 || step == 3 then
|
26
|
+
pod_package_framwork
|
27
|
+
current_time = Time.new
|
28
|
+
time_info_logs << "打包静态库:#{current_time - start_time}秒"
|
29
|
+
start_time = current_time
|
30
|
+
end
|
31
|
+
|
32
|
+
if step == 0 || step == 5 then
|
33
|
+
upload_zip_framwork
|
34
|
+
current_time = Time.new
|
35
|
+
time_info_logs << "上传静态framework:#{current_time - start_time}秒"
|
36
|
+
end
|
37
|
+
|
38
|
+
time_info_logs << "#{@spec.name}总耗时:#{Time.new - task_start_time}秒"
|
39
|
+
puts time_info_logs
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
# 检测运行环境
|
44
|
+
def check_environment
|
45
|
+
OrmDev::SHUtil.run_command('bundle install','检测配置运行环境',false)
|
46
|
+
end
|
47
|
+
|
48
|
+
# 静态化
|
49
|
+
def pod_package_framwork
|
50
|
+
pod_package_command = "#{@spec.name}_SOURCE=1 pod package #{@spec.name}.podspec --exclude-deps --no-mangle --force --spec-sources=git@gitee.com:mvn/ios.git,https://github.com/CocoaPods/Specs.git"
|
51
|
+
OrmDev::SHUtil.run_command(pod_package_command,'静态化插件')
|
52
|
+
destination_path = "#{@spec.name}/lib"
|
53
|
+
source_path = "#{@spec.name}-#{@spec.version}"
|
54
|
+
FileUtils.rm_rf(destination_path) if Dir.exist?(destination_path)
|
55
|
+
FileUtils.cp_r("#{source_path}/ios", destination_path)
|
56
|
+
FileUtils.rm_rf(source_path)
|
57
|
+
# 去除.a armv7s i386的架构
|
58
|
+
Dir.chdir(destination_path) do
|
59
|
+
lopo_remove_command = "lipo #{@spec.name}.framework/#{@spec.name} -remove armv7s -remove i386 -output #{@spec.name}.framework/#{@spec.name}"
|
60
|
+
lopo_info_command = "lipo -info #{@spec.name}.framework/#{@spec.name}"
|
61
|
+
OrmDev::SHUtil.run_command(lopo_remove_command,'移除framework armv7s i386的架构', false)
|
62
|
+
OrmDev::SHUtil.run_command(lopo_info_command,'framework支持架构')
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
# 压缩上传
|
67
|
+
def upload_zip_framwork
|
68
|
+
zip_path = "#{@spec.name}.zip"
|
69
|
+
FileUtils.rm_rf(zip_path) if File::exist?(zip_path)
|
70
|
+
Zip::File.open(zip_path, Zip::File::CREATE) do |zipfile|
|
71
|
+
[
|
72
|
+
"#{@spec.name}.podspec",
|
73
|
+
'LICENSE',
|
74
|
+
'README.md',
|
75
|
+
'Dependencies',
|
76
|
+
"#{@spec.name}/lib",
|
77
|
+
].each do |filename|
|
78
|
+
add_file_to_zip(filename, zipfile)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
zip_path
|
82
|
+
OrmDev::LogUtil.print_success "运行成功,#{zip_path}"
|
83
|
+
end
|
84
|
+
|
85
|
+
def add_file_to_zip(file_path, zip)
|
86
|
+
if File.directory?(file_path)
|
87
|
+
Dir.foreach(file_path) do |sub_file_name|
|
88
|
+
add_file_to_zip("#{file_path}/#{sub_file_name}", zip) unless sub_file_name == '.' or sub_file_name == '..'
|
89
|
+
end
|
90
|
+
else
|
91
|
+
zip.add(file_path, file_path)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -1,15 +1,42 @@
|
|
1
|
+
require 'date'
|
1
2
|
require 'logger'
|
2
3
|
|
3
|
-
module
|
4
|
-
class
|
5
|
-
|
4
|
+
module OrmDev
|
5
|
+
class LogUtil
|
6
|
+
|
7
|
+
ORMDEV_CLT_INFO_LOG_FLAG = '[OrmDev]'
|
6
8
|
|
7
9
|
def self.debug(msg = '')
|
8
10
|
puts msg
|
9
11
|
end
|
10
12
|
|
11
13
|
def self.info(msg = '')
|
12
|
-
puts "#{
|
14
|
+
puts "#{ORMDEV_CLT_INFO_LOG_FLAG}#{msg}"
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.print_command(content)
|
18
|
+
puts content.green.bold
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.print_success(content)
|
22
|
+
puts '****************************************'.green
|
23
|
+
puts "* #{Time.new} *".green
|
24
|
+
puts '* *'.green
|
25
|
+
puts '* OK ~ *'.green.bold
|
26
|
+
puts '* *'.green
|
27
|
+
puts content
|
28
|
+
puts '****************************************'.green
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.print_error(content)
|
32
|
+
puts '****************************************'.red
|
33
|
+
puts "* #{Time.new} *".red
|
34
|
+
puts '* *'.red
|
35
|
+
puts '* Error ~ *'.red.bold
|
36
|
+
puts '* *'.red
|
37
|
+
puts content
|
38
|
+
puts '****************************************'.red
|
13
39
|
end
|
40
|
+
|
14
41
|
end
|
15
42
|
end
|
@@ -1,80 +1,16 @@
|
|
1
|
-
|
1
|
+
require_relative 'log_util'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
module Ormdev
|
3
|
+
module OrmDev
|
6
4
|
class SHUtil
|
7
|
-
|
8
5
|
# 工具方法
|
9
6
|
def self.run_command(command, message = '', abort = true)
|
10
7
|
result = system(command) if command.is_a?(String)
|
11
|
-
|
8
|
+
OrmDev::LogUtil.print_command message
|
12
9
|
unless result then
|
13
|
-
|
10
|
+
OrmDev::LogUtil.print_error "操作内容:#{message}\n操作命令:#{command}"
|
14
11
|
abort(message) if abort
|
15
12
|
end
|
16
13
|
result
|
17
14
|
end
|
18
|
-
|
19
|
-
# Execute a shell command
|
20
|
-
# This method will output the string and execute it
|
21
|
-
# Just an alias for sh_no_action
|
22
|
-
# When running this in tests, it will return the actual command instead of executing it
|
23
|
-
# @param log [Boolean] should fastlane print out the executed command
|
24
|
-
# @param error_callback [Block] a callback invoked with the command output if there is a non-zero exit status
|
25
|
-
def self.sh(command, log: true, error_callback: nil)
|
26
|
-
sh_control_output(command, print_command: log, print_command_output: log, error_callback: error_callback)
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.sh_no_action(command, log: true, error_callback: nil)
|
30
|
-
sh_control_output(command, print_command: log, print_command_output: log, error_callback: error_callback)
|
31
|
-
end
|
32
|
-
|
33
|
-
# @param command [String] The command to be executed
|
34
|
-
# @param print_command [Boolean] Should we print the command that's being executed
|
35
|
-
# @param print_command_output [Boolean] Should we print the command output during execution
|
36
|
-
# @param error_callback [Block] A block that's called if the command exits with a non-zero status
|
37
|
-
def self.sh_control_output(command, print_command: true, print_command_output: true, error_callback: nil)
|
38
|
-
print_command = print_command_output = true if $troubleshoot
|
39
|
-
# Set the encoding first, the user might have set it wrong
|
40
|
-
previous_encoding = [Encoding.default_external, Encoding.default_internal]
|
41
|
-
Encoding.default_external = Encoding::UTF_8
|
42
|
-
Encoding.default_internal = Encoding::UTF_8
|
43
|
-
|
44
|
-
command = command.join(' ') if command.kind_of?(Array) # since it's an array of one element when running from the Fastfile
|
45
|
-
FastlaneCore::UI.command(command) if print_command
|
46
|
-
|
47
|
-
result = ''
|
48
|
-
|
49
|
-
exit_status = nil
|
50
|
-
IO.popen(command, err: [:child, :out]) do |io|
|
51
|
-
io.sync = true
|
52
|
-
io.each do |line|
|
53
|
-
FastlaneCore::UI.command_output(line.strip) if print_command_output
|
54
|
-
result << line
|
55
|
-
end
|
56
|
-
io.close
|
57
|
-
exit_status = $?.exitstatus
|
58
|
-
end
|
59
|
-
|
60
|
-
if exit_status != 0
|
61
|
-
message = if print_command
|
62
|
-
"Exit status of command '#{command}' was #{exit_status} instead of 0."
|
63
|
-
else
|
64
|
-
"Shell command exited with exit status #{exit_status} instead of 0."
|
65
|
-
end
|
66
|
-
message += "\n#{result}" if print_command_output
|
67
|
-
|
68
|
-
error_callback.call(result) if error_callback
|
69
|
-
FastlaneCore::UI.shell_error!(message)
|
70
|
-
end
|
71
|
-
|
72
|
-
result
|
73
|
-
rescue => ex
|
74
|
-
raise ex
|
75
|
-
ensure
|
76
|
-
Encoding.default_external = previous_encoding.first
|
77
|
-
Encoding.default_internal = previous_encoding.last
|
78
|
-
end
|
79
15
|
end
|
80
|
-
end
|
16
|
+
end
|
data/lib/ormdev/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
module
|
2
|
-
VERSION = "0.0.
|
1
|
+
module OrmDev
|
2
|
+
VERSION = "0.0.3"
|
3
3
|
end
|
data/lib/ormdev.rb
CHANGED
data/ormdev.gemspec
CHANGED
@@ -5,16 +5,16 @@ require "ormdev/version"
|
|
5
5
|
require 'date'
|
6
6
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
|
-
spec.name =
|
9
|
-
spec.version =
|
8
|
+
spec.name = 'ormdev'
|
9
|
+
spec.version = OrmDev::VERSION
|
10
10
|
spec.date = Date.today
|
11
|
-
spec.authors = [
|
12
|
-
spec.email = [
|
11
|
+
spec.authors = ['devorm']
|
12
|
+
spec.email = ['devorm@163.com']
|
13
13
|
|
14
|
-
spec.summary = %q{Hybrid App(混合模式移动应用)核心打包工具.技术支持:devorm@163.com
|
14
|
+
spec.summary = %q{Hybrid App(混合模式移动应用)核心打包工具.技术支持:devorm@163.com..}
|
15
15
|
spec.description = %q{Hybrid App,混合模式移动应用,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”。 }
|
16
|
-
spec.homepage =
|
17
|
-
spec.license =
|
16
|
+
spec.homepage = 'https://gitee.com/mvn/ormdev'
|
17
|
+
spec.license = 'MIT'
|
18
18
|
spec.post_install_message = %q(
|
19
19
|
_____ __ __ ________
|
20
20
|
/ ___ \ / / / / / _ _ /
|
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
|
|
32
32
|
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
33
33
|
# if spec.respond_to?(:metadata)
|
34
34
|
# spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
|
35
|
-
|
35
|
+
#
|
36
36
|
# spec.metadata["homepage_uri"] = spec.homepage
|
37
37
|
# spec.metadata["source_code_uri"] = "TODO: Put your gem's public repo URL here."
|
38
38
|
# spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
|
@@ -46,11 +46,13 @@ Gem::Specification.new do |spec|
|
|
46
46
|
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
47
47
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
48
48
|
end
|
49
|
-
spec.bindir = "
|
50
|
-
spec.
|
51
|
-
spec.
|
49
|
+
# spec.bindir = "exe"
|
50
|
+
spec.bindir = 'bin'
|
51
|
+
# spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
52
|
+
spec.executables = ['ormdev']
|
53
|
+
spec.require_paths = ['lib']
|
52
54
|
|
53
55
|
spec.add_development_dependency "bundler", "~> 1.17"
|
54
56
|
spec.add_development_dependency "rake", "~> 10.0"
|
55
|
-
spec.add_development_dependency "
|
57
|
+
spec.add_development_dependency "minitest", "~> 5.0"
|
56
58
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ormdev
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- devorm
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -39,26 +39,24 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: minitest
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '5.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '5.0'
|
55
55
|
description: 'Hybrid App,混合模式移动应用,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”。 '
|
56
56
|
email:
|
57
|
-
-
|
57
|
+
- devorm@163.com
|
58
58
|
executables:
|
59
|
-
- console
|
60
59
|
- ormdev
|
61
|
-
- setup
|
62
60
|
extensions: []
|
63
61
|
extra_rdoc_files: []
|
64
62
|
files:
|
@@ -77,9 +75,12 @@ files:
|
|
77
75
|
- lib/ormdev.rb
|
78
76
|
- lib/ormdev/command.rb
|
79
77
|
- lib/ormdev/command/create.rb
|
80
|
-
- lib/ormdev/command/
|
81
|
-
- lib/ormdev/command/
|
78
|
+
- lib/ormdev/command/lint.rb
|
79
|
+
- lib/ormdev/command/publish.rb
|
80
|
+
- lib/ormdev/command/run.rb
|
81
|
+
- lib/ormdev/command/setup.rb
|
82
82
|
- lib/ormdev/source/core/create_helper.rb
|
83
|
+
- lib/ormdev/source/core/run_helper.rb
|
83
84
|
- lib/ormdev/source/util/log_util.rb
|
84
85
|
- lib/ormdev/source/util/sh_util.rb
|
85
86
|
- lib/ormdev/version.rb
|
@@ -110,5 +111,5 @@ rubyforge_project:
|
|
110
111
|
rubygems_version: 2.7.8
|
111
112
|
signing_key:
|
112
113
|
specification_version: 4
|
113
|
-
summary: Hybrid App(混合模式移动应用)核心打包工具.技术支持:devorm@163.com
|
114
|
+
summary: Hybrid App(混合模式移动应用)核心打包工具.技术支持:devorm@163.com..
|
114
115
|
test_files: []
|
File without changes
|
data/lib/ormdev/command/push.rb
DELETED
File without changes
|