ormdev 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a2234a4aa5bef84b4d28241b07542b6a20b995d040d36d4be7625468e96e7736
4
- data.tar.gz: fc9e03ee35da7372fe6abde7070930257ae69b31d75fd96fcbc96ceffbf54e11
3
+ metadata.gz: aaa6f40f14ace8560f3e083effef9da172c6f0bd137bbf150816b27200d31d7b
4
+ data.tar.gz: f60a3f50414e664d2b0042034e3ee850c7d34ce2dccdc2d973326123de7aa769
5
5
  SHA512:
6
- metadata.gz: 4452d20675829749c6975faaed551c31b67a940b227686e8d24d1a7ab3cb5dbb342bcb781cc7d664b60533a119c7aa5934c147020f243023906899b217817761
7
- data.tar.gz: 82ec134514ca765bf3b3ff67c1c0dfa8eb5b44be9e1060cbfa3bc1d574c72bf92e232c669e49e807f474347e473fc8712da54e63e14294055825ea899706a289
6
+ metadata.gz: fbd23e30f20ac7ebf18e4259fe884c7fc8fb712fa3bf81fe0ff159a7f48384c07b7df75d0c63696c498e22653edcaccd63fad247698d468aeaef0935a4c2041f
7
+ data.tar.gz: 285967cd22e1908eb553fe46e4a7f5982ea1f0e36ae9e9c64b1747859a21612d69c8433e1dc436316323ec56448b3405d4aedde2b2938854b471f819334e03de
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ormdev (0.0.1)
4
+ ormdev (0.0.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/bin/ormdev ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env bash
2
+
3
+ require 'ormdev'
4
+
5
+ ORM::Command.run(ARGV)
@@ -0,0 +1,53 @@
1
+ require_relative '../source/core/create_helper'
2
+
3
+ module Ormdev
4
+ class Command
5
+ class Create < Command
6
+ self.summary = '创建Orm插件模板工程。'
7
+
8
+ self.description = <<-DESC
9
+ 新建 iOS => Application => Single View Application 工程,工程名为`NAME`
10
+ DESC
11
+
12
+ self.arguments = [
13
+ CLAide::Argument.new('NAME', true)
14
+ ]
15
+
16
+ def self.options
17
+ [
18
+ ['--template-url=URL', 'Orm插件模板git地址'],
19
+ ['--fast', '快速创建Orm插件模板工程(带测试用例)'],
20
+ ['--prefix=XXX', 'Orm插件模板工程前缀(fast有效)'],
21
+ ['--skip', '跳过打开Orm插件模板工程(fast有效)'],
22
+ ].concat(super)
23
+ end
24
+
25
+ def initialize(argv)
26
+ @name = argv.shift_argument
27
+ @template_url = argv.option('template-url')
28
+ @prefix = argv.option('prefix', '')
29
+ @fast = argv.flag?('fast', false)
30
+ @skip = argv.flag?('skip', false)
31
+ super
32
+ end
33
+
34
+ def validate!
35
+ super
36
+ help! 'A name for the Pod is required.' unless @name
37
+ help! 'The Pod name cannot contain spaces.' if @name =~ /\s/
38
+ help! 'The Pod name cannot contain plusses.' if @name =~ /\+/
39
+ help! "The Pod name cannot begin with a '.'" if @name[0, 1] == '.'
40
+ end
41
+
42
+ def run
43
+ create = Ormdev::CreateHelper.new(@name, @prefix, @template_url)
44
+ create.setup(@fast, @skip)
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}"
50
+ end
51
+ end
52
+ end
53
+ end
File without changes
File without changes
@@ -0,0 +1,20 @@
1
+ require 'claide'
2
+
3
+ module Ormdev
4
+ # class Command < CLAide::Command
5
+ #
6
+ # require 'ormdev/command/create'
7
+ # require 'ormdev/command/package'
8
+ # require 'ormdev/command/push'
9
+ #
10
+ # self.abstract_command = true
11
+ # self.command = 'orm'
12
+ # self.version = ORM::VERSION
13
+ # self.description = 'OriginalM —— 混合模式移动应用(Hybrid App)持续集成(Continuous Integration)工具包,用于构建、编译、测试、分发、部署的工具。'
14
+ #
15
+ # def run
16
+ # ORM::Log.info '* 开始执行orm … *'
17
+ # end
18
+ #
19
+ # end
20
+ end
@@ -0,0 +1,131 @@
1
+ require 'cocoapods'
2
+
3
+ module ORM
4
+ class CreateHelper
5
+
6
+ ORM_PLUGIN_TEMPLATE_URL = "https://gitee.com/mvn/pod-template.git".freeze
7
+
8
+ attr_reader :project_name
9
+ attr_reader :class_prefix
10
+ attr_reader :template_url
11
+
12
+ def initialize(name, prefix = '', template_url = ORM_TEMPLATE_TAG_VERSION)
13
+ @project_name = name
14
+ @class_prefix = prefix
15
+ @template_url = template_url
16
+ end
17
+
18
+ def setup(fast = false, skip= false)
19
+ if fast then
20
+ p '1111111======='
21
+ p Ormdev::SHUtil.run('ls -la')
22
+ else
23
+
24
+ end
25
+ end
26
+
27
+ # Clones the template from the remote in the working directory using
28
+ # the name of the Pod.
29
+ #
30
+ # @return [void]
31
+ #
32
+ def clone_template
33
+ Pod::UI.section("Cloning `#{template_repo_url}` into `#{@project_name}`.") do
34
+ svn! ['checkout', template_repo_url, @project_name]
35
+ end
36
+ end
37
+
38
+ # Runs the template configuration utilities.
39
+ #
40
+ # @return [void]
41
+ #
42
+ def setup
43
+ string_replacements = {
44
+ # "PROJECT_OWNER" => @configurator.user_name,
45
+ "TODAYS_DATE" => Time.now.strftime("%m/%d/%Y"),
46
+ "TODAYS_YEAR" => Time.now.year.to_s,
47
+ "PROJECT" => @project_name,
48
+ "OrmPro" => @class_prefix
49
+ }
50
+ Dir.glob(project_folder + "/**/**/**/**").each do |name|
51
+ next if Dir.exists? name
52
+ text = File.read(name)
53
+
54
+ for find, replace in string_replacements
55
+ text = text.gsub(find, replace)
56
+ end
57
+
58
+ File.open(name, "w") { |file| file.puts text }
59
+ end
60
+
61
+ # shared schemes have project specific names
62
+ scheme_path = project_folder + "/PROJECT.xcodeproj/xcshareddata/xcschemes/"
63
+ raise Pod::Informative, 'No Xcode project shared schemes found, please specify one' unless Dir.exists? scheme_path
64
+ File.rename(scheme_path + "PROJECT.xcscheme", scheme_path + @project_name + ".xcscheme")
65
+
66
+ # rename xcproject
67
+ File.rename(project_folder + "/PROJECT.xcodeproj", File.join(project_folder, "#{@project_name}.xcodeproj"))
68
+
69
+ # change app file prefixes
70
+ ["OrmProAppDelegate.h", "OrmProAppDelegate.m"].each do |file|
71
+ before = project_folder + "/PROJECT/" + file
72
+ next unless File.exists? before
73
+
74
+ after = project_folder + "/PROJECT/" + file.gsub("OrmPro", @class_prefix)
75
+ File.rename before, after
76
+ end
77
+ safe_rename_file("#{project_folder}/PROJECTTests/PROJECTTests.m", "#{project_folder}/PROJECTTests/#{@project_name}Tests.m")
78
+ safe_rename_file("#{project_folder}/PROJECTUITests/PROJECTUITests.m", "#{project_folder}/PROJECTUITests/#{@project_name}UITests.m")
79
+ safe_rename_dir("#{project_folder}/PROJECT", "#{project_folder}/#{@project_name}")
80
+ safe_rename_dir("#{project_folder}/PROJECTTests", "#{project_folder}/#{@project_name}Tests")
81
+ safe_rename_dir("#{project_folder}/PROJECTUITests", "#{project_folder}/#{@project_name}UITests")
82
+ reinitialize_svn_repo
83
+ "#{@project_name}.xcodeproj"
84
+ end
85
+
86
+ # Runs the template configuration utilities.
87
+ #
88
+ # @return [void]
89
+ #
90
+ def print_info
91
+ Pod::UI.puts "\nTo learn more about the template see `#{template_repo_url}`."
92
+ end
93
+
94
+ private
95
+
96
+ #----------------------------------------#
97
+
98
+ # !@group Private helpers
99
+
100
+ extend Pod::Executable
101
+ executable :svn
102
+
103
+ def project_folder
104
+ @project_name
105
+ end
106
+
107
+ def reinitialize_svn_repo
108
+ `rm -rf .svn`
109
+ end
110
+
111
+ def safe_rename_dir(old, dir_name)
112
+ if Dir.exist? old
113
+ File.rename(old, dir_name)
114
+ end
115
+ end
116
+
117
+ def safe_rename_file(old, file_name)
118
+ if File.exist? old
119
+ File.rename(old, file_name)
120
+ end
121
+ end
122
+
123
+ # Checks if a template URL is given else returns the TEMPLATE_REPO URL
124
+ #
125
+ # @return String
126
+ #
127
+ def template_repo_url
128
+ @template_url || ORM_TEMPLATE_TAG_URL
129
+ end
130
+ end
131
+ end
@@ -0,0 +1,15 @@
1
+ require 'logger'
2
+
3
+ module Ormdev
4
+ class Log
5
+ ORM_CLT_INFO_LOG_FLAG = '[ORM]'
6
+
7
+ def self.debug(msg = '')
8
+ puts msg
9
+ end
10
+
11
+ def self.info(msg = '')
12
+ puts "#{ORM_CLT_INFO_LOG_FLAG}#{msg}"
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,80 @@
1
+ require 'fastlane'
2
+
3
+ require_relative '../util/log_util'
4
+
5
+ module Ormdev
6
+ class SHUtil
7
+
8
+ # 工具方法
9
+ def self.run_command(command, message = '', abort = true)
10
+ result = system(command) if command.is_a?(String)
11
+ ORM::LogUtil.print_command message
12
+ unless result then
13
+ ORM::LogUtil.print_error "操作内容:#{message}\n操作命令:#{command}"
14
+ abort(message) if abort
15
+ end
16
+ result
17
+ 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
+ end
80
+ end
@@ -1,3 +1,3 @@
1
1
  module Ormdev
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/ormdev.rb CHANGED
@@ -3,4 +3,5 @@ require "ormdev/version"
3
3
  module Ormdev
4
4
  class Error < StandardError; end
5
5
  # Your code goes here...
6
+ autoload :Command, 'ormdev/command'
6
7
  end
data/ormdev.gemspec CHANGED
@@ -2,17 +2,31 @@
2
2
  lib = File.expand_path("../lib", __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require "ormdev/version"
5
+ require 'date'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
8
  spec.name = "ormdev"
8
9
  spec.version = Ormdev::VERSION
10
+ spec.date = Date.today
9
11
  spec.authors = ["ormdev"]
10
12
  spec.email = ["ormdev@163.com"]
11
13
 
12
- spec.summary = %q{orm.}
13
- spec.description = %q{orm for 2018.}
14
- spec.homepage = "https://gitee.com/mvn/ormdev.git"
14
+ spec.summary = %q{Hybrid App(混合模式移动应用)核心打包工具.技术支持:devorm@163.com.}
15
+ spec.description = %q{Hybrid App,混合模式移动应用,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”。 }
16
+ spec.homepage = "https://gitee.com/mvn/ormdev"
15
17
  spec.license = "MIT"
18
+ spec.post_install_message = %q(
19
+ _____ __ __ ________
20
+ / ___ \ / / / / / _ _ /
21
+ / / / // /_/ / / // // /
22
+ / / / // ____/ / // // /
23
+ / /__/ // / / // // /
24
+ \_____//_/ /_//_//_/
25
+
26
+
27
+ ---- 欢迎使用originalm ----
28
+ ---- 技术支持:devorm@163.com ----
29
+ )
16
30
 
17
31
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
32
  # to allow pushing to a single host or delete this section to allow pushing to any host.
@@ -20,8 +34,8 @@ Gem::Specification.new do |spec|
20
34
  # spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
21
35
 
22
36
  # spec.metadata["homepage_uri"] = spec.homepage
23
- # spec.metadata["source_code_uri"] = "https://gitee.com/mvn/ormdev.git"
24
- # spec.metadata["changelog_uri"] = "https://gitee.com/mvn/ormdev"
37
+ # spec.metadata["source_code_uri"] = "TODO: Put your gem's public repo URL here."
38
+ # spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
25
39
  # else
26
40
  # raise "RubyGems 2.0 or newer is required to protect against " \
27
41
  # "public gem pushes."
@@ -32,8 +46,8 @@ Gem::Specification.new do |spec|
32
46
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
33
47
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
34
48
  end
35
- spec.bindir = "exe"
36
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
49
+ spec.bindir = "bin"
50
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
37
51
  spec.require_paths = ["lib"]
38
52
 
39
53
  spec.add_development_dependency "bundler", "~> 1.17"
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.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ormdev
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-28 00:00:00.000000000 Z
11
+ date: 2018-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,10 +52,13 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
- description: orm for 2018.
55
+ description: 'Hybrid App,混合模式移动应用,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”。 '
56
56
  email:
57
57
  - ormdev@163.com
58
- executables: []
58
+ executables:
59
+ - console
60
+ - ormdev
61
+ - setup
59
62
  extensions: []
60
63
  extra_rdoc_files: []
61
64
  files:
@@ -69,15 +72,26 @@ files:
69
72
  - README.md
70
73
  - Rakefile
71
74
  - bin/console
75
+ - bin/ormdev
72
76
  - bin/setup
73
77
  - lib/ormdev.rb
78
+ - lib/ormdev/command.rb
79
+ - lib/ormdev/command/create.rb
80
+ - lib/ormdev/command/package.rb
81
+ - lib/ormdev/command/push.rb
82
+ - lib/ormdev/source/core/create_helper.rb
83
+ - lib/ormdev/source/util/log_util.rb
84
+ - lib/ormdev/source/util/sh_util.rb
74
85
  - lib/ormdev/version.rb
75
86
  - ormdev.gemspec
76
- homepage: https://gitee.com/mvn/ormdev.git
87
+ homepage: https://gitee.com/mvn/ormdev
77
88
  licenses:
78
89
  - MIT
79
90
  metadata: {}
80
- post_install_message:
91
+ post_install_message: "\n _____ __ __ ________\n / ___ \\
92
+ / / / / / _ _ /\n / / / // /_/ / / // // /\n / / / // ____/
93
+ / // // /\n / /__/ // / / // // /\n \\_____//_/ /_//_//_/\n\n\n
94
+ \ ---- 欢迎使用originalm ----\n ---- 技术支持:devorm@163.com ----\n "
81
95
  rdoc_options: []
82
96
  require_paths:
83
97
  - lib
@@ -96,5 +110,5 @@ rubyforge_project:
96
110
  rubygems_version: 2.7.8
97
111
  signing_key:
98
112
  specification_version: 4
99
- summary: orm.
113
+ summary: Hybrid App(混合模式移动应用)核心打包工具.技术支持:devorm@163.com.
100
114
  test_files: []