cocoapods-x 0.0.1

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.
Files changed (35) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +22 -0
  3. data/README.md +36 -0
  4. data/lib/cocoapods-x.rb +1 -0
  5. data/lib/cocoapods-x/command.rb +16 -0
  6. data/lib/cocoapods-x/command/edit.rb +70 -0
  7. data/lib/cocoapods-x/command/environment.rb +17 -0
  8. data/lib/cocoapods-x/command/environment/init.rb +30 -0
  9. data/lib/cocoapods-x/command/environment/install.rb +29 -0
  10. data/lib/cocoapods-x/command/environment/update.rb +30 -0
  11. data/lib/cocoapods-x/command/libary.rb +16 -0
  12. data/lib/cocoapods-x/command/libary/build.rb +14 -0
  13. data/lib/cocoapods-x/command/libary/create.rb +49 -0
  14. data/lib/cocoapods-x/command/repos.rb +74 -0
  15. data/lib/cocoapods-x/command/xcode.rb +15 -0
  16. data/lib/cocoapods-x/command/xcode/clean.rb +75 -0
  17. data/lib/cocoapods-x/command/xcode/open.rb +51 -0
  18. data/lib/cocoapods-x/extension.rb +3 -0
  19. data/lib/cocoapods-x/extension/configure.rb +79 -0
  20. data/lib/cocoapods-x/extension/environment.rb +112 -0
  21. data/lib/cocoapods-x/extension/environment/definition.rb +90 -0
  22. data/lib/cocoapods-x/extension/environment/dsl.rb +76 -0
  23. data/lib/cocoapods-x/extension/environment/pod.rb +23 -0
  24. data/lib/cocoapods-x/extension/environment/podfile.rb +40 -0
  25. data/lib/cocoapods-x/extension/environment/source.rb +24 -0
  26. data/lib/cocoapods-x/extension/sandbox.rb +64 -0
  27. data/lib/cocoapods-x/extension/sandbox/project.rb +51 -0
  28. data/lib/cocoapods-x/extension/sandbox/projects.rb +25 -0
  29. data/lib/cocoapods-x/extension/sandbox/protocol.rb +24 -0
  30. data/lib/cocoapods-x/extension/sandbox/repos.rb +57 -0
  31. data/lib/cocoapods-x/extension/sandbox/template.rb +77 -0
  32. data/lib/cocoapods-x/extension/sandbox/workspace.rb +45 -0
  33. data/lib/cocoapods-x/gem_version.rb +3 -0
  34. data/lib/cocoapods_plugin.rb +2 -0
  35. metadata +106 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 32cff653b80d3343bae35af858d10331bd2d68cd024c03da3f32d7c4dfcadc91
4
+ data.tar.gz: ed192ed7ae254679f47c191acc1325e6474bb6fa4b85aba514a3bab25b3b0d16
5
+ SHA512:
6
+ metadata.gz: 9442ee5105a037b7e272f04070b0c0737b7bf931bb2e62b96805f2f5abcbcae795cfa532348e5d4386955882f9fc914b7e02feae5bf53e36a9c6200f9cea761c
7
+ data.tar.gz: 6c018a866b92ee0f43490f464f5bebfa9237248cf5c5720c8cae461ff42a630449559673462ea1bf96e93d7c91d4337b40977e60fce612854700c0552ab85d88
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2020 panghu <panghu.lee@gmail.com>
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,36 @@
1
+ # cocoapods-x
2
+
3
+ 扩展pod x命令, 实现快速清理缓存, 快速打开Xcode等操作, 使用souce, pods两个dsl实现快速切换pod 'NAME', :path=>'url'开发模式, 对壳工程无入侵.
4
+
5
+ ## Installation
6
+
7
+ $ gem install cocoapods-x
8
+
9
+ ## Usage
10
+
11
+ alias pox="pod x"
12
+ pox env install # 拉取必要的模版文件在~/.cocoapods/x中, 用于包括lib模版 pods模版 source模版
13
+ pox env update # 更新到最新的模版文件
14
+ pox env init # 在拥有Podfile的项目中初始化构建环境, 映射的工程目录在~/.cocoapods/x/projects/{name}中
15
+ pox lib create NAME # 创建项目脚手架
16
+ pox lib build # 尚未开发完成
17
+ pox xc clean # 清理 Pods Podfile.lock 和 DerivedData
18
+ pox xc open # 打开Xcode, 优先打开当前目录的 *.xcworkspace
19
+
20
+ 例: 在项目Demo中, 将AFNetworking切换到Development Pods开发模式
21
+ (Demo) $ pox env init
22
+ (Demo) $ pox edit --pods # 编辑pods文件
23
+ 在pods文件中添加
24
+ pod 'AFNetworking'
25
+ (Demo) $ pox edit --source # 编辑source文件
26
+ 在source文件中添加
27
+ source 'https://github.com' do # source 'git@github.com' do
28
+ pod 'AFNetworking'
29
+ end
30
+ (Demo) $ pod install
31
+ 完成AFNetworking开发模式切换, AFNetworking将被存放在Demo映射项目下的repos中.
32
+ 通过命令快速打开AFNetworking所在目录
33
+ (Demo) $ pox repos AFNetworking
34
+
35
+ pods 文件用于声明需要切换Development Pods的pod, 不同的项目拥有各自的pods文件, 项目隔离.
36
+ source 文件用于声明pod对应git源地址, 全局公用一份.
@@ -0,0 +1 @@
1
+ require 'cocoapods-x/gem_version'
@@ -0,0 +1,16 @@
1
+ require 'cocoapods-x/command/edit'
2
+ require 'cocoapods-x/command/environment'
3
+ require 'cocoapods-x/command/libary'
4
+ require 'cocoapods-x/command/repos'
5
+ require 'cocoapods-x/command/xcode'
6
+
7
+ module Pod
8
+ class Command
9
+ class X < Command
10
+
11
+ self.abstract_command = true
12
+ self.summary = 'Cocoapods Extension X.'
13
+
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,70 @@
1
+ require 'cocoapods-x/extension/sandbox'
2
+ require 'cocoapods-x/extension/environment'
3
+
4
+ module Pod
5
+ class Command
6
+ class X < Command
7
+ class Edit < X
8
+
9
+ self.summary = 'Cocoapods X Edit.'
10
+ self.description = 'Cocoapods X Edit.'
11
+
12
+ def self.options
13
+ [
14
+ ['--pods', 'Edit source.rb file.'],
15
+ ['--source', 'Edit source.rb file.'],
16
+ ['--podfile', 'Edit Podfile file.']
17
+ ].concat(super)
18
+ end
19
+
20
+ def initialize(argv)
21
+ @wipe_pods = argv.flag?('pods')
22
+ @wipe_source = argv.flag?('source')
23
+ @wipe_podfile = argv.flag?('podfile')
24
+ super
25
+ end
26
+
27
+ def run
28
+ begin
29
+ if @wipe_pods
30
+ open_pods!
31
+ end
32
+
33
+ if @wipe_source
34
+ open_source!
35
+ end
36
+
37
+ if @wipe_podfile
38
+ open_podfile!
39
+ end
40
+ rescue => exception
41
+ puts "[!] Pod::X #{exception}".red
42
+ end
43
+
44
+ end
45
+
46
+ private
47
+
48
+ extend Executable
49
+ executable :open
50
+
51
+ def open_pods!
52
+ project = Pod::X::Environment::init!
53
+ open! ['-a', 'Xcode', project.pods_file]
54
+ end
55
+
56
+ def open_source!
57
+ workspace = Pod::X::Environment::install!
58
+ open! ['-a', 'Xcode', workspace.source_file]
59
+ end
60
+
61
+ def open_podfile!
62
+ project_url = Pathname(Dir.pwd)
63
+ podfile = Pod::X::Sandbox::podfile_exists! project_url
64
+ open! ['-a', 'Xcode', podfile]
65
+ end
66
+
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,17 @@
1
+ require 'cocoapods-x/command/environment/init'
2
+ require 'cocoapods-x/command/environment/install'
3
+ require 'cocoapods-x/command/environment/update'
4
+
5
+ module Pod
6
+ class Command
7
+ class X < Command
8
+ class Env < X
9
+
10
+ self.abstract_command = true
11
+ self.summary = 'Cocoapods X Environment.'
12
+
13
+ end
14
+ end
15
+ end
16
+ end
17
+
@@ -0,0 +1,30 @@
1
+ require 'cocoapods-x/extension/environment'
2
+
3
+ module Pod
4
+ class Command
5
+ class X < Command
6
+ class Env < X
7
+ class Init < Env
8
+
9
+ self.summary = 'Init project X environment.'
10
+ self.description = 'Init project X environment.'
11
+
12
+ def initialize(argv)
13
+ super
14
+ end
15
+
16
+ def run
17
+ begin
18
+ UI.puts "Initing X environment."
19
+ project = Pod::X::Environment::init!
20
+
21
+ UI.puts "Pod::X '#{project.project_name}' initialization complete!".green
22
+ rescue => exception
23
+ puts "[!] Pod::X #{exception}".red
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,29 @@
1
+ require 'cocoapods-x/extension/environment'
2
+
3
+ module Pod
4
+ class Command
5
+ class X < Command
6
+ class Env < X
7
+ class Install < Env
8
+
9
+ self.summary = 'Install X environment.'
10
+ self.description = 'Install X environment.'
11
+
12
+ def initialize(argv)
13
+ super
14
+ end
15
+
16
+ def run
17
+ begin
18
+ UI.puts "Installing X environment."
19
+ Pod::X::Environment::install!
20
+ UI.puts "Pod::X Env installation complete!".green
21
+ rescue => exception
22
+ puts "[!] Pod::X #{exception}".red
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,30 @@
1
+ require 'cocoapods-x/extension/environment'
2
+
3
+ module Pod
4
+ class Command
5
+ class X < Command
6
+ class Env < X
7
+ class Update < Env
8
+
9
+ self.summary = 'Update X environment.'
10
+ self.description = 'Update X environment.'
11
+
12
+ def initialize(argv)
13
+ super
14
+ end
15
+
16
+ def run
17
+ begin
18
+ UI.puts "Updating X environment."
19
+ Pod::X::Environment::update!
20
+ UI.puts "Pod::X Env installation complete!".green
21
+ rescue => exception
22
+ puts "[!] Pod::X #{exception}".red
23
+ end
24
+ end
25
+
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,16 @@
1
+ require 'cocoapods-x/command/libary/build'
2
+ require 'cocoapods-x/command/libary/create'
3
+
4
+ module Pod
5
+ class Command
6
+ class X < Command
7
+ class Lib < X
8
+
9
+ self.abstract_command = true
10
+ self.summary = 'Cocoapods Extension X Lib.'
11
+
12
+ end
13
+ end
14
+ end
15
+ end
16
+
@@ -0,0 +1,14 @@
1
+ module Pod
2
+ class Command
3
+ class X < Command
4
+ class Lib < X
5
+ class Build < Lib
6
+
7
+ self.abstract_command = true
8
+ self.summary = 'Cocoapods X Lib Build.'
9
+
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,49 @@
1
+ require 'cocoapods-x/extension/sandbox'
2
+
3
+ module Pod
4
+ class Command
5
+ class X < Command
6
+ class Lib < X
7
+ class Create < Lib
8
+
9
+ extend Executable
10
+ executable :rm
11
+
12
+ self.summary = 'Creates a new project'
13
+ self.description = <<-DESC
14
+ Creates a scaffold for the development of a new project named `NAME`.
15
+ DESC
16
+
17
+ self.arguments = [
18
+ CLAide::Argument.new('NAME', true),
19
+ ]
20
+
21
+ def initialize(argv)
22
+ @name = argv.shift_argument
23
+ super
24
+ end
25
+
26
+ def run
27
+ project_name = @name
28
+ target_url = File.join(Dir::pwd, project_name)
29
+ configure_url = Pod::X::Sandbox::workspace::template::configure
30
+ template_url = Pod::X::Sandbox::workspace::template::ios_template
31
+ if Dir::exist?(target_url) && !Dir::empty?(target_url)
32
+ UI.puts "fatal: destination path '#{project_name}' already exists and is not an empty directory.".red
33
+ else
34
+ rm! ['-rf', target_url]
35
+ if !template_url.exist?
36
+ Pod::X::Sandbox::update!
37
+ end
38
+ UI.section("Configuring #{project_name} template.") do
39
+ system('ruby', configure_url.to_s, template_url.to_s, target_url.to_s, project_name.to_s)
40
+ end
41
+ end
42
+
43
+ end
44
+
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,74 @@
1
+ require 'cocoapods-x/extension/sandbox'
2
+ require 'cocoapods-x/extension/configure'
3
+ require 'cocoapods-x/extension/environment'
4
+
5
+ module Pod
6
+ class Command
7
+ class X < Command
8
+ class Repos < X
9
+
10
+ self.summary = 'Opens repos'
11
+ self.description = <<-DESC
12
+ Open a dir of pod named `NAME`.
13
+ DESC
14
+
15
+ self.arguments = [
16
+ CLAide::Argument.new('NAME', true),
17
+ ]
18
+
19
+ def initialize(argv)
20
+ @name = argv.shift_argument
21
+ super
22
+ end
23
+
24
+ def run
25
+ begin
26
+ if @name.nil? || @name.size <= 0
27
+ open_project_repos!
28
+ open_workspace_repos!
29
+ else
30
+ open_repo! @name
31
+ end
32
+ rescue => exception
33
+ puts "[!] Pod::X #{exception}".red
34
+ end
35
+ end
36
+
37
+ private
38
+
39
+ extend Executable
40
+ executable :open
41
+
42
+ def open_project_repos!
43
+ begin
44
+ project = Pod::X::Environment::init!
45
+ open! [project.root]
46
+ rescue => exception
47
+ end
48
+ end
49
+
50
+ def open_workspace_repos!
51
+ workspace = Pod::X::Environment::install!
52
+ open! [workspace.root]
53
+ end
54
+
55
+ def open_repo! name
56
+ environment = Pod::X::Environment::environment
57
+ podinfo = environment.podinfo?(name, '')
58
+ unless podinfo.nil?
59
+ path = environment.pod_path? podinfo
60
+ unless path.nil?
61
+ open! [path]
62
+ else
63
+ raise Informative, "No `#{name}' found in the project directory."
64
+ end
65
+ else
66
+ raise Informative, "No `#{name}' found in the project directory."
67
+ end
68
+ end
69
+
70
+ end
71
+ end
72
+ end
73
+ end
74
+
@@ -0,0 +1,15 @@
1
+ require 'cocoapods-x/command/xcode/clean'
2
+ require 'cocoapods-x/command/xcode/open'
3
+
4
+ module Pod
5
+ class Command
6
+ class X < Command
7
+ class XC < X
8
+
9
+ self.abstract_command = true
10
+ self.summary = 'Cocoapods X Xcode.'
11
+
12
+ end
13
+ end
14
+ end
15
+ end