bigkeeper 0.8.5 → 0.8.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +28 -22
  3. data/docs/en-US/README.md +4 -0
  4. data/docs/zh-CN/BIGKEEPER_FILE.md +22 -0
  5. data/docs/zh-CN/FEATURE&HOTFIX.md +19 -59
  6. data/docs/zh-CN/IMAGE.md +0 -0
  7. data/docs/zh-CN/README.md +28 -24
  8. data/docs/zh-CN/RELEASE.md +57 -40
  9. data/docs/zh-CN/SPEC.md +39 -0
  10. data/lib/big_keeper.rb +0 -3
  11. data/lib/big_keeper/command/image.rb +12 -14
  12. data/lib/big_keeper/command/spec.rb +20 -1
  13. data/lib/big_keeper/command/spec/add.rb +1 -1
  14. data/lib/big_keeper/command/spec/analyze.rb +9 -12
  15. data/lib/big_keeper/command/spec/delete.rb +1 -1
  16. data/lib/big_keeper/command/{module → spec}/list.rb +1 -1
  17. data/lib/big_keeper/command/spec/search.rb +1 -1
  18. data/lib/big_keeper/util/git_operator.rb +2 -2
  19. data/lib/big_keeper/version.rb +1 -1
  20. data/resources/banner.png +0 -0
  21. data/resources/command.png +0 -0
  22. metadata +6 -29
  23. data/lib/big_keeper/command/module.rb +0 -23
  24. data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.001.jpeg +0 -0
  25. data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.002.jpeg +0 -0
  26. data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.003.jpeg +0 -0
  27. data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.004.jpeg +0 -0
  28. data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.005.jpeg +0 -0
  29. data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.006.jpeg +0 -0
  30. data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.007.jpeg +0 -0
  31. data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.008.jpeg +0 -0
  32. data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.009.jpeg +0 -0
  33. data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.010.jpeg +0 -0
  34. data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.011.jpeg +0 -0
  35. data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.012.jpeg +0 -0
  36. data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.013.jpeg +0 -0
  37. data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.014.jpeg +0 -0
  38. data/resources/readme/big-keeper-readme.002.png +0 -0
  39. data/resources/readme/big-keeper-readme.003.png +0 -0
  40. data/resources/readme/big-keeper-readme.004.png +0 -0
  41. data/resources/readme/big-keeper-readme.005.png +0 -0
  42. data/resources/readme/big-keeper-readme.006.png +0 -0
  43. data/resources/readme/big-keeper-readme.007.png +0 -0
  44. data/resources/readme/big-keeper-readme.008.png +0 -0
  45. data/resources/readme/big-keeper-readme.009.png +0 -0
  46. data/resources/readme/big-keeper-readme.010.png +0 -0
  47. data/resources/readme/big-keeper-readme.011.png +0 -0
  48. data/resources/readme/big-keeper-readme.012.png +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 94a86d4f15a32e4d04576c9e244da060e5c1fb44
4
- data.tar.gz: 138d77e976d07a10306b7e16b7462f03773785fa
3
+ metadata.gz: f110eccd6b2a0185f889a7af2324d30da13c9477
4
+ data.tar.gz: 40582adaa6066a3710e6b2f3ea7686b2ef7e991e
5
5
  SHA512:
6
- metadata.gz: 7b2914cc67868b6fd125b5fbe615012efbb70bb8c8e78edf5ae90aa33a98d4d81b1675c72ae8db80e527e214f0b0aaf9961678f37a7196dc278f238f81c9bd07
7
- data.tar.gz: 1e7ba514b4724074df6c28bae6f1a64d83810399e829087db8de59885317b297d6df96336c0ac3fd1974185abc38ece3ba4d3d1703f5314d52ea675632a2430a
6
+ metadata.gz: b3d3418c579636978d527e9618c4d2a0157e609d08e41213c1af69fb3f339bf281c15cc62c53dbb6dbc2985f5a91425597239d5eb71e53b6610e608bda7c3184
7
+ data.tar.gz: f6e1804ea25f309520dbafa108b192a26d6f54a7c52dd610e0efff8ba748b69893dfe9776ee70dfd2e004d76f1f74ed49e6619aab0e7b89f5136cb7544edcb07
data/README.md CHANGED
@@ -1,11 +1,11 @@
1
- ![](./resources/banner.png)
2
-
3
1
  [English](./docs/en-US/README.md)
4
2
 
5
3
  ---
6
4
 
7
5
  # bigkeeper
8
6
 
7
+ ![](./resources/banner.png)
8
+
9
9
  [![Build Status](https://travis-ci.org/BigKeeper/bigkeeper.svg?branch=master)](https://travis-ci.org/BigKeeper/bigkeeper)
10
10
  [![Maintainability](https://api.codeclimate.com/v1/badges/c6dc4161e84fcec9a890/maintainability)](https://codeclimate.com/github/BigKeeper/big-keeper/maintainability)
11
11
  [![Gem Version](https://badge.fury.io/rb/bigkeeper.svg)](https://rubygems.org/gems/bigkeeper)
@@ -13,11 +13,11 @@
13
13
  [![License](https://img.shields.io/badge/license-MIT-000000.svg)](https://github.com/BigKeeper/big-keeper/blob/master/LICENSE)
14
14
  [![Gitter](https://img.shields.io/gitter/room/BigKeeper/BigKeeper.svg)](https://gitter.im/Big-Keeper/Lobby)
15
15
 
16
- bigkeeper 是一个 **iOS&Android 模块化项目**效率提升工具,使用这个工具后,开发者**在主项目内**即可完成**包括其他业务模块在内**所有代码的编写和管理。
16
+ bigkeeper 是一个 **iOS&Android 模块化项目**效率提升工具,旨在帮助有模块化需求的团队更轻松的渡过“半模块化”尴尬期。
17
17
 
18
- > 注:目前只支持依赖 CocoaPods 管理的模块化工程。
18
+ 使用这个工具后,开发者**在主项目内**即可完成**包括其他业务模块在内**所有代码的编写和管理。
19
19
 
20
- 我们借鉴 CocoaPods 的做法,开发团队只需要在主项目中加入一个 Bigkeeper 文件,然后利用我们提供的 `bigkeeper` 工具,即可更便捷的实现**代码分支**和**业务模块**的管理;另外,通过我们提供的工具,也能帮助开发者养成更规范的日常开发习惯,减轻项目管理者的负担。
20
+ 我们借鉴 CocoaPods 的做法,开发团队只需要在主项目中加入一个 Bigkeeper 文件,然后利用我们提供的 `big` 命令,即可更便捷的实现**代码分支**和**业务模块**的管理;另外,通过 `big` 命令提供的流程,也能帮助开发者养成更规范的日常开发习惯,减轻项目管理者的负担。
21
21
 
22
22
  ## 应用场景
23
23
 
@@ -26,7 +26,9 @@ bigkeeper 是一个 **iOS&Android 模块化项目**效率提升工具,使用
26
26
  - 开发者开发一个 feature 时需要维护多个项目的分支,同时还要频繁修改主项目的 `Podfile`;
27
27
  - 项目管理者需要花很大精力去和团队成员同步项目管理规范流程,尤其对于新人,挑战很大;
28
28
  - 开发过程中如果碰到突发情况需要开新分支处理问题时对当前工作区的保存操作会很繁琐(PS:因为涉及到多个项目);
29
- - 日常开发过程中类似 commit、pull、push 等操作比较繁琐(PS:因为涉及到多个项目)。
29
+ - 日常开发过程中类似 commit、pull、push 等操作比较繁琐(PS:因为涉及到多个项目);
30
+ - 资源(比如图片)散落在各个业务模块,可能存在重名、重复等问题,难以管理;
31
+ - 业务模块可能存在横向依赖的问题,导致业务模块间耦合严重,不能单独编译运行。
30
32
 
31
33
  bigkeeper 的出现就是为了解决这些问题。
32
34
 
@@ -62,39 +64,43 @@ bigkeeper 的出现就是为了解决这些问题。
62
64
 
63
65
  ```
64
66
  NAME
65
- big - Efficiency improvement for iOS&Android modular development, iOSer&Android using this tool can make modular development easier.
67
+ big - Efficiency improvement for iOS&Android module development, iOSer&Android using this tool can make module development easier.
66
68
 
67
69
  SYNOPSIS
68
- big [global options] command [command options] [arguments...]
70
+ big [global options] command [command options] [arguments...]
69
71
 
70
- GLOBAL OPTIONS
71
- --help - Show this message
72
- -p, --path=arg - (default: ./)
73
- -u, --user=arg - (default: mmoaay)
74
72
 
75
- -v, --ver=arg - (default: Version in Bigkeeper file)
73
+ GLOBAL OPTIONS
74
+ --help - Show this message
75
+ -p, --path=arg - (default: ./)
76
+ -u, --user=arg - (default: mmoaay)
77
+ -v, --ver=arg - (default: Version in Bigkeeper file)
76
78
 
77
79
  COMMANDS
78
- feature - Feature operations
79
- help - Shows a list of commands or help for one command
80
- hotfix - Hotfix operations
81
- podfile - Podfile operation
82
- release - Release operations
83
- version - Version
80
+ feature - Gitflow feature operations
81
+ help - Shows a list of commands or help for one command
82
+ hotfix - Gitflow hotfix operations
83
+ image - Image operations
84
+ podfile - Podfile operation
85
+ release - Gitflow release operations
86
+ spec - Spec operations
87
+ version - Show version of bigkeeper
84
88
  ```
85
89
 
86
90
  全局参数如下:
87
91
 
88
92
  - -p, --path:主项目所在的目录,默认是执行 bigkeeper 命令的当前目录;
89
- - -v, --ver:版本号,如果没有指定的话,会以主项目 [Bigkeeper 文件](BIGKEEPER_FILE.md)中指定的版本为准。
93
+ - -v, --ver:版本号,如果没有指定的话,会以主项目 [Bigkeeper 文件](./docs/zh-CN/BIGKEEPER_FILE.md)中指定的版本为准。
90
94
  - -u, --user:用户名,默认是 git global config 的 user.name,会显示在命令提示信息中,比如上述提示信息中的默认用户名是 mmoaay
91
95
 
92
96
  功能列表如下:
93
97
 
94
98
  - [feature](./docs/zh-CN/FEATURE&HOTFIX.md):功能开发流程;
95
- - [hotfix](./docs/zh-CN/FEATURE&HOTFIX.md):线上修复流程;
99
+ - [hotfix](./docs/zh-CN/FEATURE&HOTFIX.md):线上 Bug 修复流程;
96
100
  - [release](./docs/zh-CN/RELEASE.md):发布流程;
97
- - [podfile](./docs/zh-CN/PODFILE.md):Podfile 操作流程;
101
+ - [podfile](./docs/zh-CN/PODFILE.md):Podfile 管理;
102
+ - [image](./docs/zh-CN/IMAGE.md):图片管理;
103
+ - [spec](./docs/zh-CN/SPEC.md):spec 管理;
98
104
  - version:查看 bigkeeper 当前版本号;
99
105
  - help:查看 bigkeeper 帮助文档。
100
106
 
data/docs/en-US/README.md CHANGED
@@ -1,9 +1,13 @@
1
+
2
+
1
3
  [中文](../zh-CN/README.md)
2
4
 
3
5
  ---
4
6
 
5
7
  # bigkeeper - All in home project
6
8
 
9
+ ![](../../resources/banner.png)
10
+
7
11
  [![Build Status](https://travis-ci.org/BigKeeper/bigkeeper.svg?branch=master)](https://travis-ci.org/BigKeeper/bigkeeper)
8
12
  [![Maintainability](https://api.codeclimate.com/v1/badges/c6dc4161e84fcec9a890/maintainability)](https://codeclimate.com/github/BigKeeper/bigkeeper/maintainability)
9
13
  [![Gem Version](https://badge.fury.io/rb/bigkeeper.svg)](https://rubygems.org/gems/bigkeeper)
@@ -25,11 +25,33 @@ home 'BigKeeperMain', :git => 'git@github.com:BigKeeper/BigKeeperMain.git', :pul
25
25
  - 主项目的 git 远程仓库地址;
26
26
  - 主项目的 pull request / merge request 页面地址,完成某个 feature / hotfix 时,会自动打开这个页面,让开发者提交 pull request / merge request。
27
27
 
28
+ ## 配置模块源
29
+
30
+ ```
31
+ source 'git@git.elenet.me:LPD-iOS/LPDSpecs.git, elenet-lpdspecs' do
32
+ modules do
33
+ ...
34
+ end
35
+ end
36
+
37
+ source ...
38
+ ...
39
+ end
40
+ ```
41
+
42
+ 考虑到我们的业务模块可能属于不同的源,所以配置业务模块之前,要先在最外层配置源信息:
43
+
44
+ - 源 git 地址;
45
+ - 源名称。
46
+
47
+ 配置这个主要是方便对我们关心的源执行 `pod repo update`,从而节省命令执行的时间。
48
+
28
49
  ## 配置业务模块
29
50
 
30
51
  ```
31
52
  modules do
32
53
  mod 'BigKeeperModular', :git => 'git@github.com:BigKeeper/BigKeeperModular.git', :pulls => 'https://github.com/BigKeeper/BigKeeperModular/pulls'
54
+ mod ...
33
55
  end
34
56
  ```
35
57
 
@@ -52,21 +52,25 @@ COMMANDS
52
52
  - delete:根据 featue 名删除主项目和业务模块所有相关分支;(PS:慎用,因为会删除本地和远程所有相关分支)
53
53
  - list:显示当前的 feature 列表。
54
54
 
55
- ## 各个流程的使用场景
55
+ ## 各个指令的使用场景
56
56
 
57
- - 如果需要开发新的功能,使用 bigkeeper feature start;
58
- - 开发功能过程中如果发现某个模块其实不用改动,使用 bigkeeper feature update 来把这个模块从这个 feature 移除;
59
- - 使用 bigkeeper feature pull 来同步主项目和相关业务模块远端变更;
60
- - 使用 bigkeeper feature push 来推送主项目和相关业务模块变更到远端;
61
- - 使用 bigkeeper feature rebase 来 rebase 主项目和业务模块 `develop` 分支到当前 feature;
62
- - 使用 bigkeeper feature switch 来切换 feature,比如:两个功能并行开发的时候,就可以用这个命令互相切换了;
63
- - 功能开发完成,需要单独打包提交测试时,使用 bigkeeper feature finish 结束开发;
64
- - 开始进行集成测试,需要将代码 PR 到 develop 分支时,使用 bigkeeper feature publish;
65
- - 如果开发过程中突然有新的功能需要紧急开发,直接使用 bigkeeper feature start 进行新功能开发,旧功能未提交的内容我们会保存在 stash 中。
57
+ - 如果需要开发新的功能,使用 big feature start;
58
+ - 开发功能过程中如果发现某个模块其实不用改动,使用 big feature update 来把这个模块从这个 feature 移除;
59
+ - 使用 big feature pull 来同步主项目和相关业务模块远端变更;
60
+ - 使用 big feature push 来推送主项目和相关业务模块变更到远端;
61
+ - 使用 big feature rebase 来 rebase 主项目和业务模块 `develop` 分支到当前 feature;
62
+ - 使用 big feature switch 来切换 feature,比如:两个功能并行开发的时候,就可以用这个命令互相切换了;
63
+ - 功能开发完成,需要单独打包提交测试时,使用 big feature finish 结束开发;
64
+ - 开始进行集成测试,需要将代码 PR 到 develop 分支时,使用 big feature publish;
65
+ - 如果开发过程中突然有新的功能需要紧急开发,直接使用 big feature start 进行新功能开发,旧功能未提交的内容我们会保存在 stash 中。
66
66
 
67
- ## feature 的工作区
67
+ ## 各个指令执行结束后工程的状态
68
68
 
69
- ![](../../resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.002.jpeg)
69
+ ### feature 的工作区
70
+
71
+ 在开始了解各条指令执行后工程的状态之前,我们先了解一下 bigkeeper feature 流程的工作区。
72
+
73
+ ![](../../resources/readme/big-keeper-readme.001.png)
70
74
 
71
75
  feature 的工作区主要由两部分组成:
72
76
 
@@ -79,50 +83,6 @@ feature 的工作区主要由两部分组成:
79
83
  - stash 缓存区,当用户需要切换新的 feature 时,对于用户来不及提交的改动,我们会缓存到各个项目的 stash 中,(PS:所以代码突然不见了不要担心,都在 git 的 stash 里面),而当用户切换回某个 feature 时,我们会把和该 feature 分支同名的 stash 恢复回来,从而使用户可以继续开发之前未完成的部分,因为需要通过 feature 的分支名来匹配 stash,而 git stash 又没有提供给 stash 命名的功能,所以我们实现了 [bigstash](https://github.com/BigKeeper/bigstash) 来完成这个功能;
80
84
  - git。
81
85
 
82
- ## 工作区缓存流程
83
-
84
- ![stash 当前工作区](../../resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.003.jpeg)
85
-
86
- ## master/develop 分支状态检查流程
87
-
88
- ![检查 master/develop 分支状态](../../resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.004.jpeg)
89
-
90
- ## 切换分支流程
91
-
92
- ![切换分支](../../resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.005.jpeg)
93
-
94
- ## 同步业务模块与主项目分支流程
95
-
96
- ![同步业务模块与主项目分支](../../resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.006.jpeg)
97
-
98
- ## finish 业务模块 feature/hotfix 流程
99
-
100
- ![finish 业务模块 feature/hotfix](../../resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.007.jpeg)
101
-
102
- ## 从 feature/hotfix 移除模块流程
103
-
104
- ![从 feature/hotfix 移除模块](../../resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.008.jpeg)
105
-
106
- ## feature start 流程
107
-
108
- ![start](../../resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.009.jpeg)
109
-
110
- ## feature finish 流程
111
-
112
- ![finish](../../resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.010.jpeg)
113
-
114
- ## feature switch 流程
115
-
116
- ![switch](../../resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.011.jpeg)
117
-
118
- ## feature update 流程
119
-
120
- ![update](../../resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.012.jpeg)
121
-
122
- ## feature pull 流程
123
-
124
- ![pull](../../resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.013.jpeg)
125
-
126
- ## feature push 流程
127
-
128
- ![push](../../resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.014.jpeg)
86
+ > 注:
87
+ > 1. 所有的指令我们都做了良好的出错提示和异常恢复机制,当某个步骤报错时,只需要根据提示的错误手动修复问题,重新输入指令,bigkeeper 会继续执行接下来的流程。
88
+ > 2. 所有的代码都会保存在工作区中,除了 delete 操作,bigkeeper 不会删除任何工作区的代码,也就是说:你总是可以在变更区、Stash 中或者远端找到你变更的代码。
File without changes
data/docs/zh-CN/README.md CHANGED
@@ -4,6 +4,8 @@
4
4
 
5
5
  # bigkeeper
6
6
 
7
+ ![](../../resources/banner.png)
8
+
7
9
  [![Build Status](https://travis-ci.org/BigKeeper/bigkeeper.svg?branch=master)](https://travis-ci.org/BigKeeper/bigkeeper)
8
10
  [![Maintainability](https://api.codeclimate.com/v1/badges/c6dc4161e84fcec9a890/maintainability)](https://codeclimate.com/github/BigKeeper/big-keeper/maintainability)
9
11
  [![Gem Version](https://badge.fury.io/rb/bigkeeper.svg)](https://rubygems.org/gems/bigkeeper)
@@ -11,11 +13,11 @@
11
13
  [![License](https://img.shields.io/badge/license-MIT-000000.svg)](https://github.com/BigKeeper/big-keeper/blob/master/LICENSE)
12
14
  [![Gitter](https://img.shields.io/gitter/room/BigKeeper/BigKeeper.svg)](https://gitter.im/Big-Keeper/Lobby)
13
15
 
14
- bigkeeper 是一个 **iOS&Android 模块化项目**效率提升工具,使用这个工具后,开发者**在主项目内**即可完成**包括其他业务模块在内**所有代码的编写和管理。
16
+ bigkeeper 是一个 **iOS&Android 模块化项目**效率提升工具,旨在帮助有模块化需求的团队更轻松的渡过“半模块化”尴尬期。
15
17
 
16
- > 注:目前只支持依赖 CocoaPods 管理的模块化工程。
18
+ 使用这个工具后,开发者**在主项目内**即可完成**包括其他业务模块在内**所有代码的编写和管理。
17
19
 
18
- 我们借鉴 CocoaPods 的做法,开发团队只需要在主项目中加入一个 Bigkeeper 文件,然后利用我们提供的 `bigkeeper` 工具,即可更便捷的实现**代码分支**和**业务模块**的管理;另外,通过我们提供的工具,也能帮助开发者养成更规范的日常开发习惯,减轻项目管理者的负担。
20
+ 我们借鉴 CocoaPods 的做法,开发团队只需要在主项目中加入一个 Bigkeeper 文件,然后利用我们提供的 `big` 命令,即可更便捷的实现**代码分支**和**业务模块**的管理;另外,通过 `big` 命令提供的流程,也能帮助开发者养成更规范的日常开发习惯,减轻项目管理者的负担。
19
21
 
20
22
  ## 应用场景
21
23
 
@@ -24,11 +26,13 @@ bigkeeper 是一个 **iOS&Android 模块化项目**效率提升工具,使用
24
26
  - 开发者开发一个 feature 时需要维护多个项目的分支,同时还要频繁修改主项目的 `Podfile`;
25
27
  - 项目管理者需要花很大精力去和团队成员同步项目管理规范流程,尤其对于新人,挑战很大;
26
28
  - 开发过程中如果碰到突发情况需要开新分支处理问题时对当前工作区的保存操作会很繁琐(PS:因为涉及到多个项目);
27
- - 日常开发过程中类似 commit、pull、push 等操作比较繁琐(PS:因为涉及到多个项目)。
29
+ - 日常开发过程中类似 commit、pull、push 等操作比较繁琐(PS:因为涉及到多个项目);
30
+ - 资源(比如图片)散落在各个业务模块,可能存在重名、重复等问题,难以管理;
31
+ - 业务模块可能存在横向依赖的问题,导致业务模块间耦合严重,不能单独编译运行。
28
32
 
29
33
  bigkeeper 的出现就是为了解决这些问题。
30
34
 
31
- > 注:也有很多人认为直接做一个完整的组件化项目更合理,而不需要采用这样曲折的方案,但是很多时候我们并没有这么多的精力直接去做这些事情,bigkeeper 存在的价值也是为了帮助开发团队在 **iOS&Android 模块化项目过渡阶段**能更轻松的往前走。
35
+ > 注:也有很多人认为直接做一个完整的组件化项目更合理,而不需要采用这样曲折的方案,但是很多时候我们并没有这么多的精力直接去做这些事情,bigkeeper 存在的价值也是为了帮助开发团队在** iOS&Android 模块化项目过渡阶段**能更轻松的往前走。
32
36
 
33
37
  ## 安装
34
38
 
@@ -49,10 +53,6 @@ bigkeeper 的出现就是为了解决这些问题。
49
53
 
50
54
  ## 使用方法
51
55
 
52
- > 注:每个流程我们都提供详细的流程图来让你了解我们都做了些什么,为了方便你更好的了解我们的流程,我们提供了一个流程参考图,如下:
53
- >
54
- > ![](../../resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.001.jpeg)
55
-
56
56
  - [Bigkeeper 文件配置](BIGKEEPER_FILE.md)
57
57
  - `bigkeeper` 工具使用:
58
58
 
@@ -60,25 +60,27 @@ bigkeeper 的出现就是为了解决这些问题。
60
60
 
61
61
  ```
62
62
  NAME
63
- big - Efficiency improvement for iOS&Android modular development, iOSer&Android using this tool can make modular development easier.
63
+ big - Efficiency improvement for iOS&Android module development, iOSer&Android using this tool can make module development easier.
64
64
 
65
65
  SYNOPSIS
66
- big [global options] command [command options] [arguments...]
66
+ big [global options] command [command options] [arguments...]
67
67
 
68
- GLOBAL OPTIONS
69
- --help - Show this message
70
- -p, --path=arg - (default: ./)
71
- -u, --user=arg - (default: mmoaay)
72
68
 
73
- -v, --ver=arg - (default: Version in Bigkeeper file)
69
+ GLOBAL OPTIONS
70
+ --help - Show this message
71
+ -p, --path=arg - (default: ./)
72
+ -u, --user=arg - (default: mmoaay)
73
+ -v, --ver=arg - (default: Version in Bigkeeper file)
74
74
 
75
75
  COMMANDS
76
- feature - Feature operations
77
- help - Shows a list of commands or help for one command
78
- hotfix - Hotfix operations
79
- podfile - Podfile operation
80
- release - Release operations
81
- version - Version
76
+ feature - Gitflow feature operations
77
+ help - Shows a list of commands or help for one command
78
+ hotfix - Gitflow hotfix operations
79
+ image - Image operations
80
+ podfile - Podfile operation
81
+ release - Gitflow release operations
82
+ spec - Spec operations
83
+ version - Show version of bigkeeper
82
84
  ```
83
85
 
84
86
  全局参数如下:
@@ -90,9 +92,11 @@ bigkeeper 的出现就是为了解决这些问题。
90
92
  功能列表如下:
91
93
 
92
94
  - [feature](FEATURE&HOTFIX.md):功能开发流程;
93
- - [hotfix](FEATURE&HOTFIX.md):线上修复流程;
95
+ - [hotfix](FEATURE&HOTFIX.md):线上 Bug 修复流程;
94
96
  - [release](RELEASE.md):发布流程;
95
- - [podfile](PODFILE.md):Podfile 操作流程;
97
+ - [podfile](PODFILE.md):Podfile 管理;
98
+ - [image](IMAGE.md):图片管理;
99
+ - [spec](SPEC.md):spec 管理;
96
100
  - version:查看 bigkeeper 当前版本号;
97
101
  - help:查看 bigkeeper 帮助文档。
98
102
 
@@ -1,43 +1,60 @@
1
- # release - 功能开发流程
2
-
3
- 直接在命令行执行 `big release --help` 可以查看其提供的所有功能:
1
+ 饿了么物流模块化效率提升思考 - 发布流程篇
2
+ ### 背景
3
+ bigkeeper 的目的是为了在项目的模块化过渡阶段提升效率,在过渡到模块化的过程中要做很多的代码抽离,而越来越多的 Pod依赖(假设用Cocoapods做包管理)对项目管理者的负担越来越大.
4
+ 移动端完成一个需求迭代,除了代码开发外,还需要有模块发版,集成,打包,回归这些步骤,而往往在回归到发版的时候,研发同学要花较多时间在发版,这严重影响了开发效率.
5
+ ### 解决方案
6
+ 为了提高要提高发布流程的发布效率,我们开发了big release 功能是来提升发布效率.首先说明,bigkeeper的开发以及发布流程是完全遵循[git-flow 流程](https://jeffkreeftmeijer.com/git-flow/).
7
+ 我们建议直接把`Pods`和`Podfile.lock`移出版本控制系统,因为模块化的操作会频繁进行 `Pods`的增删以及更新,但是这会带来版本锁定的困扰,我们建议把版本锁定的工作从 `Podfile.lock`移到`Podfile`中,为此我们做了一个功能 [big pod](---.).
8
+ `bigkeeper`提供了`release module`模块发版和`release home`主工程发版,每种发版方式分为` start`和` finish`, 这两种方式的最大区别是` start`没有`git push`,不会因为可能存在的问题而污染`origin`仓库,这也留一个口子给研发人员进行二次确认.
9
+ #### 模块发版
10
+ 在过渡到模块化和已经模块化的项目中, 会存在很多依赖库, 一般会分为:
11
+ * 业务模块库
12
+ * 业务基础库
13
+ * 二方库(公司内部库)
14
+ * 三方库
15
+ 一般来说,二方库和三方库的版本稳定,而每次业务迭代频繁改动往往就是业务模块库与业务基础库,这这两种类型的库在发布的时候往往因为会因为依赖库的原因而导致发版失败,浪费开发人员的时间.
16
+ 所以,模块发布提供了两种解决方案:
4
17
  ```
5
- NAME
6
- release - Release operations
7
-
8
- SYNOPSIS
9
- big [global options] release home
10
- big [global options] release module
11
-
12
- COMMANDS
13
- home - Release home project operations
14
- module - Start release module
18
+ big release module finish ExampleModule
19
+ Options:
20
+ -s, --spec : 模块需要发布版本
15
21
  ```
16
- 全局参数如下:
17
-
18
- - -u, --user:用户名,默认是 git global config 的 user.name,会显示在命令提示信息中,比如上述提示信息中的默认用户名是 mmoaay
19
-
20
- - -p, --path:项目路径名,默认是当前所在的路径
21
-
22
- - -v, --version:项目版本号,默认是当前所在的路径
23
-
24
- 功能列表如下:
25
-
26
- - home: 发布主工程命令
27
- - start: 开始发布主工程的某个版本
28
- - finish: 完成发布版本
29
- - module: 发布模块命令
30
- - start: 开始发布模块的某个版本
31
- - finish: 完成发布版本
32
-
33
- ## release 的工作区
34
- feature 工作区
22
+ `--spec`指令决定模块需要发版,如果不需要,那仅会在`master`分支打上`tag`.
23
+ 而在`start`指令中我们也做了一些安全性检查:
24
+ * 根据开发流程的分支命名规范(branch: feature/x.x.x),检查当前是否有分支还没有合并到`develop`分支;
25
+ * 检查`master`分支相较于`develop`分支是否有超前的` commit`,防止有不规范的操作导致污染` master`分支代码.
26
+ ```
27
+ big release module start ExampleModule
28
+ Options:
29
+ -i, --ignore : 忽略安全性检查(默认开启)
30
+ ```
31
+ #### 主工程发版
32
+ 在模块化完成之后,主工程基本上是个壳工程,只会有`Podfile`和配置文件的改动, 根据`git-flow`的规则`bigkeeper`在发布主工程时会从`develop`切出` release/x.x.x`分支,`release`分支是一个暂时性分支,在代码已经并入`master`之后会删除`release`分支.
33
+ `release home start`中有两种模块的引用方式:
34
+ ```
35
+ pod 'ExampleModule', '0.1.0'
36
+ or
37
+ pod 'ExampleModule', :git => 'ExampleModule.git', :tag => '0.1.0'
38
+ ```
39
+ 如果模块没有发布,` bigkeeper`会根据在根据仓库里的最新`tag`和`.cocoapods/repos` 里的已发布版本去找到合适的依赖方式.
40
+ 在` release home finish`中有一个需要注意的地方就是` release`分支合并到` develop`之前`reset`掉对` Podfile`的操作,这样保持了不会有在` Podfile`文件不会有冲突.
41
+ ### 举个例子
42
+ 模块发版:
43
+ ```
44
+ big -v 0.1.0 release module start ExampleModule
45
+ big -v 0.1.0 release module finish ExampleModule
46
+ Options:
47
+ -v : 发布是指定版本号,如未指定,则用bigkeeper文件中的vesion
48
+ ```
49
+ 主工程发版:
50
+ ```
51
+ big -v 0.1.0 release home start
52
+ big -v 0.1.0 release home finish
53
+ Options:
54
+ -v : 发布是指定版本号,如未指定,则用bigkeeper文件中的vesion
55
+ ```
56
+ ### 展望
57
+ 对于很多中大型公司来说都是自己的CI系统,可以把发版本这种耗时而且占内存的工作放在CI机器上,所以我们也有计划把`release module`最后一步的发版本的步骤留个口子,研发同学可以在这里去触发各自CI系统的发版流程.
58
+ ### 结束语
59
+ `bigkeeper`在饿了么物流已经实践了半年多了,从数个模块到现在40+的模块数量,仅`release`流程节省项目管理者非常多的时间,提升了效率而且规范化了开发流程,也希望大家在使用中有` issue`反馈给到我们.
35
60
 
36
- ## release home start 流程
37
- ![](../../resources/readme/big-keeper-readme.008.png)
38
- ## release home finish 流程
39
- ![](../../resources/readme/big-keeper-readme.009.png)
40
- ## release module start 流程
41
- ![](../../resources/readme/big-keeper-readme.010.png)
42
- ## release module finish 流程
43
- ![](../../resources/readme/big-keeper-readme.012.png)
@@ -0,0 +1,39 @@
1
+ # spec - spec 管理
2
+
3
+ ## 背景
4
+
5
+ 模块化推进过程中势必存在业务模块间的横向依赖,原则上这种依赖我们都需要通过 router 进行解耦,不能直接源码依赖其他业务模块,因为这样的依赖会导致如下的问题:
6
+
7
+ - 因为直接横向依赖业务模块,导致业务模块无法独立编译运行。
8
+ - 各个业务模块如果存在大量类似依赖,必将导致后期模块代码依赖错综复杂,难以维护。
9
+
10
+ ## 功能简介
11
+
12
+ 直接在命令行执行 `big spec --help` 可以查看其提供的所有功能:
13
+
14
+ ```
15
+ NAME
16
+ spec - Spec operations
17
+
18
+ SYNOPSIS
19
+ big [global options] spec [command options] add
20
+ big [global options] spec [command options] analyze
21
+ big [global options] spec [command options] delete
22
+ big [global options] spec [command options] list
23
+ big [global options] spec [command options] search
24
+
25
+ COMMAND OPTIONS
26
+ -a, --[no-]all -
27
+
28
+ COMMANDS
29
+ add - Add a spec (Coming soon).
30
+ analyze - Analyze spec dependency infomation.
31
+ delete - Delete a spec (Coming soon).
32
+ list - List all the specs.
33
+ search - Search a spec with name (Coming soon).
34
+ ```
35
+
36
+ 功能列表如下:
37
+
38
+ - analyze:分析所有指定模块之间的依赖,通常为业务模块。
39
+ - list:显示当前所有的业务 spec。
data/lib/big_keeper.rb CHANGED
@@ -11,7 +11,6 @@ require 'big_keeper/model/gitflow_type'
11
11
  require 'big_keeper/command/feature&hotfix'
12
12
  require 'big_keeper/command/release'
13
13
  require 'big_keeper/command/pod'
14
- require 'big_keeper/command/module'
15
14
  require 'big_keeper/command/spec'
16
15
  require 'big_keeper/command/image'
17
16
 
@@ -47,8 +46,6 @@ module BigKeeper
47
46
 
48
47
  pod_command
49
48
 
50
- module_command
51
-
52
49
  spec_command
53
50
 
54
51
  image_command
@@ -1,26 +1,24 @@
1
1
  require 'big_resources/util/image/name_analyze_util'
2
2
 
3
3
  module BigKeeper
4
-
5
4
  def self.image_command
6
-
7
- desc 'Image operation'
5
+ desc 'Image operations'
8
6
  command :image do | c |
9
7
  c.desc "Detect duplicate name images."
10
- c.command :name do | name |
11
- name.action do | global_options, options, args |
12
- path = File.expand_path(global_options[:path])
13
- BigResources::ImageAnalyzeUtil.get_duplicate_name_file_with_type(path, BigResources::PNG)
14
- end
8
+ c.command :name do | name |
9
+ name.action do | global_options, options, args |
10
+ path = File.expand_path(global_options[:path])
11
+ BigResources::ImageAnalyzeUtil.get_duplicate_name_file_with_type(path, BigResources::PNG)
15
12
  end
13
+ end
16
14
 
17
- c.desc "Detect duplicate content images."
18
- c.command :content do | content |
19
- content.action do | global_options, options, args |
20
- path = File.expand_path(global_options[:path])
21
- BigResources::ImageAnalyzeUtil.get_duplicate_content_file_with_type(path, BigResources::PNG)
22
- end
15
+ c.desc "Detect duplicate content images."
16
+ c.command :content do | content |
17
+ content.action do | global_options, options, args |
18
+ path = File.expand_path(global_options[:path])
19
+ BigResources::ImageAnalyzeUtil.get_duplicate_content_file_with_type(path, BigResources::PNG)
23
20
  end
21
+ end
24
22
  end
25
23
  end
26
24
  end
@@ -1,4 +1,5 @@
1
1
  require 'big_keeper/command/spec/analyze'
2
+ require 'big_keeper/command/spec/list'
2
3
  require 'big_keeper/command/spec/add'
3
4
  require 'big_keeper/command/spec/delete'
4
5
  require 'big_keeper/command/spec/search'
@@ -6,10 +7,11 @@ require 'big_keeper/command/spec/search'
6
7
  module BigKeeper
7
8
 
8
9
  def self.spec_command
9
- desc 'spec command'
10
+ desc 'Spec operations'
10
11
 
11
12
  command :spec do |spec|
12
13
  spec.switch [:a,:all]
14
+ spec.desc 'Analyze spec dependency infomation.'
13
15
  spec.command :analyze do |analyze|
14
16
  analyze.action do |global_options, options, args|
15
17
  path = File.expand_path(global_options[:path])
@@ -18,16 +20,33 @@ module BigKeeper
18
20
  spec_analyze(path, is_all, module_names)
19
21
  end
20
22
  end
23
+
24
+ spec.desc 'List all the specs.'
25
+ spec.command :list do | list |
26
+ list.action do |global_options, options, args|
27
+ path = File.expand_path(global_options[:path])
28
+ version = global_options[:ver]
29
+ user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
30
+
31
+ spec_list(path, user, options)
32
+ end
33
+ end
34
+
35
+ spec.desc 'Add a spec (Coming soon).'
21
36
  spec.command :add do |add|
22
37
  add.action do
23
38
  spec_add()
24
39
  end
25
40
  end
41
+
42
+ spec.desc 'Delete a spec (Coming soon).'
26
43
  spec.command :delete do |delete|
27
44
  delete.action do
28
45
  spec_delete()
29
46
  end
30
47
  end
48
+
49
+ spec.desc 'Search a spec with name (Coming soon).'
31
50
  spec.command :search do |search|
32
51
  search.action do
33
52
  spec_search()
@@ -4,6 +4,6 @@ require 'big_keeper/util/logger'
4
4
 
5
5
  module BigKeeper
6
6
  def self.spec_add
7
- puts "Hello spec_add"
7
+ Logger.default('Coming soon.')
8
8
  end
9
9
  end
@@ -10,15 +10,15 @@ module BigKeeper
10
10
  Logger.error("parameter conflict: [--all] | [module_names]")
11
11
  return
12
12
  end
13
- puts "start spec analyze..."
14
- puts Time.now.to_s
13
+ Logger.highlight('Start spec analyze...')
14
+ Logger.default(Time.now.to_s)
15
15
 
16
16
  # Parse Bigkeeper file
17
17
  # BigkeeperParser.parse("#{path}/Bigkeeper")
18
18
  # module_names = BigkeeperParser.module_names
19
19
 
20
20
  # find modules
21
- puts "get all modules..."
21
+ Logger.highlight('Get all modules...')
22
22
  module_names = []
23
23
  pod_path = path+"/Pods/"
24
24
  dir = Dir.open(pod_path)
@@ -28,16 +28,11 @@ module BigKeeper
28
28
  end
29
29
  end
30
30
 
31
- is_legal = true
32
31
  for input_moudle_name in find_module_names do
33
32
  if !module_names.include?(input_moudle_name)
34
- is_legal = false
35
33
  Logger.error("["+input_moudle_name+"] not exist.")
36
34
  end
37
35
  end
38
- if !is_legal
39
- return
40
- end
41
36
 
42
37
  # setup modules
43
38
  module_list = []
@@ -54,19 +49,21 @@ module BigKeeper
54
49
  end
55
50
  # analyze modules spec
56
51
 
57
- puts "analyze modules "+Time.now.to_s
52
+ Logger.highlight('Analyze modules...')
53
+ Logger.default(Time.now.to_s)
58
54
  file_index = 0
59
55
  for library in module_list do
60
56
  if is_all || find_module_names.include?(library.name)
61
- puts "analyzing "+library.name
57
+ Logger.default('Analyzing ' + library.name)
62
58
  file_index = file_index + library.file_list.size
63
59
  library.spec_dependece_library(module_keyword_map.clone)#(Hash.new(module_keyword_map)).to_hash)
64
60
  progress = (file_index*100.0)/file_count
65
61
  progress = format("%.02f", progress).to_f
66
- puts "progress >>>> "+String(progress)+"% ["+library.name+" done] "
62
+ Logger.default('progress >>>> ' + String(progress) + '% [' + library.name + ' done] ')
67
63
  end
68
64
  end
69
- puts "analyze complete "+Time.now.to_s
65
+ Logger.highlight('Analyze complete.')
66
+ Logger.default(Time.now.to_s)
70
67
 
71
68
  # log spec info
72
69
  for library in module_list do
@@ -4,6 +4,6 @@ require 'big_keeper/util/logger'
4
4
 
5
5
  module BigKeeper
6
6
  def self.spec_delete
7
- puts "Hello spec_delete"
7
+ Logger.default('Coming soon.')
8
8
  end
9
9
  end
@@ -2,7 +2,7 @@ require 'logger'
2
2
  require 'json'
3
3
 
4
4
  module BigKeeper
5
- def self.module_list(path, user, options)
5
+ def self.spec_list(path, user, options)
6
6
  BigkeeperParser.parse("#{path}/Bigkeeper")
7
7
  module_dic = BigkeeperParser.parse_modules
8
8
  module_list = Array.new
@@ -4,6 +4,6 @@ require 'big_keeper/util/logger'
4
4
 
5
5
  module BigKeeper
6
6
  def self.spec_search
7
- puts "Hello spec_search"
7
+ Logger.default('Coming soon.')
8
8
  end
9
9
  end
@@ -13,7 +13,7 @@ module BigKeeper
13
13
  has_branch = false
14
14
  IO.popen("cd #{path}; git branch -r") do |io|
15
15
  io.each do |line|
16
- has_branch = true if line.include? "(#{branch_name})"
16
+ has_branch = true if line.include? branch_name
17
17
  end
18
18
  end
19
19
  has_branch
@@ -91,7 +91,7 @@ module BigKeeper
91
91
  has_commits = false
92
92
  IO.popen("cd #{path}; git log --branches --not --remotes") do |io|
93
93
  io.each do |line|
94
- has_commits = true if line.include? branch_name
94
+ has_commits = true if line.include? "(#{branch_name})"
95
95
  end
96
96
  end
97
97
  has_commits
@@ -1,3 +1,3 @@
1
1
  module BigKeeper
2
- VERSION = "0.8.5"
2
+ VERSION = "0.8.6"
3
3
  end
data/resources/banner.png CHANGED
Binary file
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bigkeeper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.5
4
+ version: 0.8.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - mmoaay
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-16 00:00:00.000000000 Z
11
+ date: 2018-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gli
@@ -247,10 +247,12 @@ files:
247
247
  - docs/en-US/README.md
248
248
  - docs/zh-CN/BIGKEEPER_FILE.md
249
249
  - docs/zh-CN/FEATURE&HOTFIX.md
250
+ - docs/zh-CN/IMAGE.md
250
251
  - docs/zh-CN/PODFILE.md
251
252
  - docs/zh-CN/README.md
252
253
  - docs/zh-CN/RECOMMEND.md
253
254
  - docs/zh-CN/RELEASE.md
255
+ - docs/zh-CN/SPEC.md
254
256
  - lib/big_keeper.rb
255
257
  - lib/big_keeper/command/feature&hotfix.rb
256
258
  - lib/big_keeper/command/feature&hotfix/delete.rb
@@ -265,8 +267,6 @@ files:
265
267
  - lib/big_keeper/command/feature&hotfix/update.rb
266
268
  - lib/big_keeper/command/image.rb
267
269
  - lib/big_keeper/command/image/image.rb
268
- - lib/big_keeper/command/module.rb
269
- - lib/big_keeper/command/module/list.rb
270
270
  - lib/big_keeper/command/pod.rb
271
271
  - lib/big_keeper/command/pod/podfile.rb
272
272
  - lib/big_keeper/command/release.rb
@@ -276,6 +276,7 @@ files:
276
276
  - lib/big_keeper/command/spec/add.rb
277
277
  - lib/big_keeper/command/spec/analyze.rb
278
278
  - lib/big_keeper/command/spec/delete.rb
279
+ - lib/big_keeper/command/spec/list.rb
279
280
  - lib/big_keeper/command/spec/search.rb
280
281
  - lib/big_keeper/dependency/dep_gradle_operator.rb
281
282
  - lib/big_keeper/dependency/dep_operator.rb
@@ -307,35 +308,11 @@ files:
307
308
  - lib/big_keeper/util/xcode_operator.rb
308
309
  - lib/big_keeper/version.rb
309
310
  - resources/banner.png
311
+ - resources/command.png
310
312
  - resources/keynote/big-keeper-readme-example.key
311
313
  - resources/keynote/big-keeper-readme-feature.key
312
- - resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.001.jpeg
313
- - resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.002.jpeg
314
- - resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.003.jpeg
315
- - resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.004.jpeg
316
- - resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.005.jpeg
317
- - resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.006.jpeg
318
- - resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.007.jpeg
319
- - resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.008.jpeg
320
- - resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.009.jpeg
321
- - resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.010.jpeg
322
- - resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.011.jpeg
323
- - resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.012.jpeg
324
- - resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.013.jpeg
325
- - resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.014.jpeg
326
314
  - resources/keynote/big-keeper-readme-release.key
327
315
  - resources/readme/big-keeper-readme.001.png
328
- - resources/readme/big-keeper-readme.002.png
329
- - resources/readme/big-keeper-readme.003.png
330
- - resources/readme/big-keeper-readme.004.png
331
- - resources/readme/big-keeper-readme.005.png
332
- - resources/readme/big-keeper-readme.006.png
333
- - resources/readme/big-keeper-readme.007.png
334
- - resources/readme/big-keeper-readme.008.png
335
- - resources/readme/big-keeper-readme.009.png
336
- - resources/readme/big-keeper-readme.010.png
337
- - resources/readme/big-keeper-readme.011.png
338
- - resources/readme/big-keeper-readme.012.png
339
316
  homepage: https://github.com/BigKeeper/bigkeeper
340
317
  licenses:
341
318
  - MIT
@@ -1,23 +0,0 @@
1
- require 'big_keeper/command/module/list'
2
-
3
- module BigKeeper
4
-
5
- def self.module_command
6
-
7
- desc 'Module operation'
8
- command :module do | mod |
9
-
10
- mod.desc 'module'
11
- mod.desc 'Prase module relevant infomation.'
12
- mod.command :list do | list |
13
- list.action do |global_options, options, args|
14
- path = File.expand_path(global_options[:path])
15
- version = global_options[:ver]
16
- user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
17
-
18
- module_list(path, user, options)
19
- end
20
- end
21
- end
22
- end
23
- end