bigkeeper 0.8.6 → 0.8.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/README.md +3 -5
- data/docs/zh-CN/README.md +3 -1
- data/lib/big_keeper.rb +9 -0
- data/lib/big_keeper/command/feature&hotfix.rb +14 -0
- data/lib/big_keeper/command/feature&hotfix/start.rb +4 -0
- data/lib/big_keeper/command/image.rb +4 -0
- data/lib/big_keeper/command/pod.rb +9 -2
- data/lib/big_keeper/command/release.rb +5 -0
- data/lib/big_keeper/command/spec.rb +20 -0
- data/lib/big_keeper/command/spec/analyze.rb +3 -0
- data/lib/big_keeper/command/spec/list.rb +1 -0
- data/lib/big_keeper/command/spec/sync.rb +12 -0
- data/lib/big_keeper/service/git_service.rb +0 -4
- data/lib/big_keeper/util/bigkeeper_parser.rb +27 -11
- data/lib/big_keeper/util/git_operator.rb +1 -1
- data/lib/big_keeper/util/leancloud_logger.rb +72 -0
- data/lib/big_keeper/util/logger.rb +10 -4
- data/lib/big_keeper/util/pod_operator.rb +11 -3
- data/lib/big_keeper/version.rb +1 -1
- metadata +5 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: de93b6981bad3cd5f43cdbe6e5712a67600f9263
         | 
| 4 | 
            +
              data.tar.gz: a68797291ccc46b21d05c9a410f5349fd6c26312
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 4e710fb6b2f19b5b550751e3c680c34af4729545e85c21929de5ff761084b8f7f2b4dbb3537ce2be6ae8a718d3990bdc649e36b6dfaa2d8fcc8b4c7e7b486158
         | 
| 7 | 
            +
              data.tar.gz: 79f59e5f641e8710984efd88e9720885b2dd58267736b3ff5cf279c2ed5d5d3b61e9e80de82f0371eee886f611754eee95ecf301247d8838f53bd1b1b11eac34
         | 
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -23,12 +23,13 @@ bigkeeper 是一个 **iOS&Android 模块化项目**效率提升工具,旨在 | |
| 23 23 |  | 
| 24 24 | 
             
            在模块化项目的过渡阶段,我们往往会碰到业务拆分不是那么彻底的情况(PS:比如主项目中仍然存在业务相关代码),这样就会导致一系列问题:
         | 
| 25 25 |  | 
| 26 | 
            -
            -  | 
| 26 | 
            +
            - 开发流程方面:开发者在开发一个 feature 时需要维护多个项目的分支,同时还要频繁修改主项目的 `Podfile`;
         | 
| 27 27 | 
             
            - 项目管理者需要花很大精力去和团队成员同步项目管理规范流程,尤其对于新人,挑战很大;
         | 
| 28 28 | 
             
            - 开发过程中如果碰到突发情况需要开新分支处理问题时对当前工作区的保存操作会很繁琐(PS:因为涉及到多个项目);
         | 
| 29 29 | 
             
            - 日常开发过程中类似 commit、pull、push 等操作比较繁琐(PS:因为涉及到多个项目);
         | 
| 30 30 | 
             
            - 资源(比如图片)散落在各个业务模块,可能存在重名、重复等问题,难以管理;
         | 
| 31 31 | 
             
            - 业务模块可能存在横向依赖的问题,导致业务模块间耦合严重,不能单独编译运行。
         | 
| 32 | 
            +
            - 各模块依赖的版本没有统一的同步更新方式,导致各个模块的开发环境不一致,问题百出。
         | 
| 32 33 |  | 
| 33 34 | 
             
            bigkeeper 的出现就是为了解决这些问题。
         | 
| 34 35 |  | 
| @@ -53,10 +54,6 @@ bigkeeper 的出现就是为了解决这些问题。 | |
| 53 54 |  | 
| 54 55 | 
             
            ## 使用方法
         | 
| 55 56 |  | 
| 56 | 
            -
            > 注:每个流程我们都提供详细的流程图来让你了解我们都做了些什么,为了方便你更好的了解我们的流程,我们提供了一个流程参考图,如下:
         | 
| 57 | 
            -
            >
         | 
| 58 | 
            -
            > 
         | 
| 59 | 
            -
             | 
| 60 57 | 
             
            - [Bigkeeper 文件配置](./docs/zh-CN/BIGKEEPER_FILE.md)
         | 
| 61 58 | 
             
            - `bigkeeper` 工具使用:
         | 
| 62 59 |  | 
| @@ -107,6 +104,7 @@ bigkeeper 的出现就是为了解决这些问题。 | |
| 107 104 | 
             
            ## 其他
         | 
| 108 105 |  | 
| 109 106 | 
             
            - [一些建议](./docs/zh-CN/RECOMMEND.md)
         | 
| 107 | 
            +
            - [一些思考]()
         | 
| 110 108 |  | 
| 111 109 | 
             
            ## 协议
         | 
| 112 110 |  | 
    
        data/docs/zh-CN/README.md
    CHANGED
    
    | @@ -23,12 +23,13 @@ bigkeeper 是一个 **iOS&Android 模块化项目**效率提升工具,旨在 | |
| 23 23 |  | 
| 24 24 | 
             
            在模块化项目的过渡阶段,我们往往会碰到业务拆分不是那么彻底的情况(PS:比如主项目中仍然存在业务相关代码),这样就会导致一系列问题:
         | 
| 25 25 |  | 
| 26 | 
            -
            -  | 
| 26 | 
            +
            - 开发流程方面:开发者在开发一个 feature 时需要维护多个项目的分支,同时还要频繁修改主项目的 `Podfile`;
         | 
| 27 27 | 
             
            - 项目管理者需要花很大精力去和团队成员同步项目管理规范流程,尤其对于新人,挑战很大;
         | 
| 28 28 | 
             
            - 开发过程中如果碰到突发情况需要开新分支处理问题时对当前工作区的保存操作会很繁琐(PS:因为涉及到多个项目);
         | 
| 29 29 | 
             
            - 日常开发过程中类似 commit、pull、push 等操作比较繁琐(PS:因为涉及到多个项目);
         | 
| 30 30 | 
             
            - 资源(比如图片)散落在各个业务模块,可能存在重名、重复等问题,难以管理;
         | 
| 31 31 | 
             
            - 业务模块可能存在横向依赖的问题,导致业务模块间耦合严重,不能单独编译运行。
         | 
| 32 | 
            +
            - 各模块依赖的版本没有统一的同步更新方式,导致各个模块的开发环境不一致,问题百出。
         | 
| 32 33 |  | 
| 33 34 | 
             
            bigkeeper 的出现就是为了解决这些问题。
         | 
| 34 35 |  | 
| @@ -103,6 +104,7 @@ bigkeeper 的出现就是为了解决这些问题。 | |
| 103 104 | 
             
            ## 其他
         | 
| 104 105 |  | 
| 105 106 | 
             
            - [一些建议](RECOMMEND.md)
         | 
| 107 | 
            +
            - [一些思考]()
         | 
| 106 108 |  | 
| 107 109 | 
             
            ## 协议
         | 
| 108 110 |  | 
    
        data/lib/big_keeper.rb
    CHANGED
    
    | @@ -15,6 +15,7 @@ require 'big_keeper/command/spec' | |
| 15 15 | 
             
            require 'big_keeper/command/image'
         | 
| 16 16 |  | 
| 17 17 | 
             
            require 'big_keeper/service/git_service'
         | 
| 18 | 
            +
            require 'big_keeper/util/leancloud_logger'
         | 
| 18 19 |  | 
| 19 20 | 
             
            require 'gli'
         | 
| 20 21 |  | 
| @@ -38,6 +39,14 @@ module BigKeeper | |
| 38 39 | 
             
                exit
         | 
| 39 40 | 
             
              end
         | 
| 40 41 |  | 
| 42 | 
            +
              pre do |global_options,command,options,args|
         | 
| 43 | 
            +
                LeanCloudLogger.instance.start_log(global_options, args)
         | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              post do |global_options,command,options,args|
         | 
| 47 | 
            +
                LeanCloudLogger.instance.end_log(true)
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
             | 
| 41 50 | 
             
              feature_and_hotfix_command(GitflowType::FEATURE)
         | 
| 42 51 |  | 
| 43 52 | 
             
              feature_and_hotfix_command(GitflowType::HOTFIX)
         | 
| @@ -8,6 +8,7 @@ require 'big_keeper/command/feature&hotfix/rebase' | |
| 8 8 | 
             
            require 'big_keeper/command/feature&hotfix/publish'
         | 
| 9 9 | 
             
            require 'big_keeper/command/feature&hotfix/delete'
         | 
| 10 10 | 
             
            require 'big_keeper/command/feature&hotfix/list'
         | 
| 11 | 
            +
            require 'big_keeper/util/leancloud_logger'
         | 
| 11 12 |  | 
| 12 13 | 
             
            module BigKeeper
         | 
| 13 14 | 
             
              def self.feature_and_hotfix_command(type)
         | 
| @@ -19,6 +20,7 @@ module BigKeeper | |
| 19 20 | 
             
                      path = File.expand_path(global_options[:path])
         | 
| 20 21 | 
             
                      version = global_options[:ver]
         | 
| 21 22 | 
             
                      user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
         | 
| 23 | 
            +
                      LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/start")
         | 
| 22 24 |  | 
| 23 25 | 
             
                      help_now!('user name is required') if user and user.empty?
         | 
| 24 26 | 
             
                      help_now!("#{GitflowType.name(type)} name is required") if args.length < 1
         | 
| @@ -33,6 +35,7 @@ module BigKeeper | |
| 33 35 | 
             
                    update.action do |global_options, options, args|
         | 
| 34 36 | 
             
                      path = File.expand_path(global_options[:path])
         | 
| 35 37 | 
             
                      user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
         | 
| 38 | 
            +
                      LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/update")
         | 
| 36 39 |  | 
| 37 40 | 
             
                      help_now!('user name is required') if user and user.empty?
         | 
| 38 41 | 
             
                      modules = args[(0...args.length)] if args.length > 0
         | 
| @@ -46,6 +49,7 @@ module BigKeeper | |
| 46 49 | 
             
                      path = File.expand_path(global_options[:path])
         | 
| 47 50 | 
             
                      version = global_options[:ver]
         | 
| 48 51 | 
             
                      user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
         | 
| 52 | 
            +
                      LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/switch")
         | 
| 49 53 |  | 
| 50 54 | 
             
                      help_now!('user name is required') if user and user.empty?
         | 
| 51 55 | 
             
                      help_now!("#{GitflowType.name(type)} name is required") if args.length < 1
         | 
| @@ -59,6 +63,7 @@ module BigKeeper | |
| 59 63 | 
             
                    pull.action do |global_options, options, args|
         | 
| 60 64 | 
             
                      path = File.expand_path(global_options[:path])
         | 
| 61 65 | 
             
                      user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
         | 
| 66 | 
            +
                      LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/pull")
         | 
| 62 67 |  | 
| 63 68 | 
             
                      help_now!('user name is required') if user and user.empty?
         | 
| 64 69 | 
             
                      pull(path, user, type)
         | 
| @@ -70,6 +75,7 @@ module BigKeeper | |
| 70 75 | 
             
                    push.action do |global_options, options, args|
         | 
| 71 76 | 
             
                      path = File.expand_path(global_options[:path])
         | 
| 72 77 | 
             
                      user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
         | 
| 78 | 
            +
                      LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/push")
         | 
| 73 79 |  | 
| 74 80 | 
             
                      help_now!('user name is required') if user and user.empty?
         | 
| 75 81 | 
             
                      help_now!('comment message is required') if args.length < 1
         | 
| @@ -84,6 +90,7 @@ module BigKeeper | |
| 84 90 | 
             
                    rebase.action do |global_options, options, args|
         | 
| 85 91 | 
             
                      path = File.expand_path(global_options[:path])
         | 
| 86 92 | 
             
                      user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
         | 
| 93 | 
            +
                      LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/rebase")
         | 
| 87 94 |  | 
| 88 95 | 
             
                      help_now!('user name is required') if user and user.empty?
         | 
| 89 96 | 
             
                      rebase(path, user, type)
         | 
| @@ -95,6 +102,7 @@ module BigKeeper | |
| 95 102 | 
             
                    finish.action do |global_options, options, args|
         | 
| 96 103 | 
             
                      path = File.expand_path(global_options[:path])
         | 
| 97 104 | 
             
                      user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
         | 
| 105 | 
            +
                      LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/finish")
         | 
| 98 106 |  | 
| 99 107 | 
             
                      help_now!('user name is required') if user and user.empty?
         | 
| 100 108 | 
             
                      finish(path, user, type)
         | 
| @@ -106,6 +114,7 @@ module BigKeeper | |
| 106 114 | 
             
                    publish.action do |global_options, options, args|
         | 
| 107 115 | 
             
                      path = File.expand_path(global_options[:path])
         | 
| 108 116 | 
             
                      user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
         | 
| 117 | 
            +
                      LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/publish")
         | 
| 109 118 |  | 
| 110 119 | 
             
                      help_now!('user name is required') if user and user.empty?
         | 
| 111 120 | 
             
                      publish(path, user, type)
         | 
| @@ -117,6 +126,7 @@ module BigKeeper | |
| 117 126 | 
             
                    delete.action do |global_options, options, args|
         | 
| 118 127 | 
             
                      path = File.expand_path(global_options[:path])
         | 
| 119 128 | 
             
                      user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
         | 
| 129 | 
            +
                      LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/delete")
         | 
| 120 130 |  | 
| 121 131 | 
             
                      help_now!('user name is required') if user and user.empty?
         | 
| 122 132 | 
             
                      help_now!("#{GitflowType.name(type)} name is required") if args.length < 1
         | 
| @@ -131,6 +141,8 @@ module BigKeeper | |
| 131 141 | 
             
                    list.desc "Print list of TREE format."
         | 
| 132 142 | 
             
                    list.command :tree do |tree|
         | 
| 133 143 | 
             
                      tree.action do |global_options, options, args|
         | 
| 144 | 
            +
                        LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/list/tree")
         | 
| 145 | 
            +
             | 
| 134 146 | 
             
                        Logger.highlight("Generating #{GitflowType.name(type)} tree of all version...") if args.length < 1
         | 
| 135 147 | 
             
                        path = File.expand_path(global_options[:path])
         | 
| 136 148 | 
             
                        user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
         | 
| @@ -141,6 +153,8 @@ module BigKeeper | |
| 141 153 | 
             
                    list.desc "Print list of JSON format."
         | 
| 142 154 | 
             
                    list.command :json do |json|
         | 
| 143 155 | 
             
                      json.action do |global_options, options, args|
         | 
| 156 | 
            +
                        LeanCloudLogger.instance.set_command("#{GitflowType.command(type)}/list/json")
         | 
| 157 | 
            +
             | 
| 144 158 | 
             
                        options[:json] = true
         | 
| 145 159 | 
             
                        path = File.expand_path(global_options[:path])
         | 
| 146 160 | 
             
                        user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
         | 
| @@ -40,6 +40,10 @@ module BigKeeper | |
| 40 40 | 
             
                  # Start home feature
         | 
| 41 41 | 
             
                  GitService.new.start(path, full_name, type)
         | 
| 42 42 |  | 
| 43 | 
            +
                  if FileOperator.definitely_exists?("#{path}/.bigkeeper")
         | 
| 44 | 
            +
                     p "rm -rf #{path}/.bigkeeper"
         | 
| 45 | 
            +
                  end
         | 
| 46 | 
            +
             | 
| 43 47 | 
             
                  # Cache all path modules
         | 
| 44 48 | 
             
                  ModuleCacheOperator.new(path).cache_path_modules(modules, modules, [])
         | 
| 45 49 | 
             
                  modules = ModuleCacheOperator.new(path).remain_path_modules
         | 
| @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            require 'big_resources/util/image/name_analyze_util'
         | 
| 2 | 
            +
            require 'big_keeper/util/leancloud_logger'
         | 
| 2 3 |  | 
| 3 4 | 
             
            module BigKeeper
         | 
| 4 5 | 
             
              def self.image_command
         | 
| @@ -7,6 +8,8 @@ module BigKeeper | |
| 7 8 | 
             
                  c.desc "Detect duplicate name images."
         | 
| 8 9 | 
             
                  c.command :name do | name |
         | 
| 9 10 | 
             
                    name.action do | global_options, options, args |
         | 
| 11 | 
            +
                      LeanCloudLogger.instance.set_command("image/name")
         | 
| 12 | 
            +
             | 
| 10 13 | 
             
                      path = File.expand_path(global_options[:path])
         | 
| 11 14 | 
             
                      BigResources::ImageAnalyzeUtil.get_duplicate_name_file_with_type(path, BigResources::PNG)
         | 
| 12 15 | 
             
                    end
         | 
| @@ -15,6 +18,7 @@ module BigKeeper | |
| 15 18 | 
             
                  c.desc "Detect duplicate content images."
         | 
| 16 19 | 
             
                  c.command :content do | content |
         | 
| 17 20 | 
             
                    content.action do | global_options, options, args |
         | 
| 21 | 
            +
                      LeanCloudLogger.instance.set_command("image/content")
         | 
| 18 22 | 
             
                      path = File.expand_path(global_options[:path])
         | 
| 19 23 | 
             
                      BigResources::ImageAnalyzeUtil.get_duplicate_content_file_with_type(path, BigResources::PNG)
         | 
| 20 24 | 
             
                    end
         | 
| @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            require 'big_keeper/command/pod/podfile'
         | 
| 2 | 
            +
            require 'big_keeper/util/leancloud_logger'
         | 
| 2 3 |  | 
| 3 4 | 
             
            module BigKeeper
         | 
| 4 5 |  | 
| @@ -10,6 +11,8 @@ module BigKeeper | |
| 10 11 | 
             
                  podfile.desc 'Detect podname should be locked.'
         | 
| 11 12 | 
             
                  podfile.command :detect do |detect|
         | 
| 12 13 | 
             
                    detect.action do |global_options, options, args|
         | 
| 14 | 
            +
                      LeanCloudLogger.instance.set_command("podfile/detect")
         | 
| 15 | 
            +
             | 
| 13 16 | 
             
                      path = File.expand_path(global_options[:path])
         | 
| 14 17 | 
             
                      podfile_detect(path)
         | 
| 15 18 | 
             
                    end
         | 
| @@ -18,14 +21,18 @@ module BigKeeper | |
| 18 21 | 
             
                  podfile.desc 'Lock podname should be locked.'
         | 
| 19 22 | 
             
                  podfile.command :lock do |lock|
         | 
| 20 23 | 
             
                    lock.action do |global_options, options, args|
         | 
| 24 | 
            +
                      LeanCloudLogger.instance.set_command("podfile/lock")
         | 
| 25 | 
            +
             | 
| 21 26 | 
             
                      path = File.expand_path(global_options[:path])
         | 
| 22 27 | 
             
                      podfile_lock(path)
         | 
| 23 28 | 
             
                    end
         | 
| 24 29 | 
             
                  end
         | 
| 25 30 |  | 
| 26 31 | 
             
                  podfile.desc 'Update modules should be upgrade.'
         | 
| 27 | 
            -
                  podfile.command :update do | | 
| 28 | 
            -
                     | 
| 32 | 
            +
                  podfile.command :update do |update|
         | 
| 33 | 
            +
                    update.action do |global_options, options, args|
         | 
| 34 | 
            +
                      LeanCloudLogger.instance.set_command("podfile/update")
         | 
| 35 | 
            +
             | 
| 29 36 | 
             
                      path = File.expand_path(global_options[:path])
         | 
| 30 37 | 
             
                      podfile_modules_update(path)
         | 
| 31 38 | 
             
                    end
         | 
| @@ -1,5 +1,6 @@ | |
| 1 1 | 
             
            require 'big_keeper/command/release/home'
         | 
| 2 2 | 
             
            require 'big_keeper/command/release/module'
         | 
| 3 | 
            +
            require 'big_keeper/util/leancloud_logger'
         | 
| 3 4 |  | 
| 4 5 | 
             
            module BigKeeper
         | 
| 5 6 | 
             
              def self.release_command
         | 
| @@ -14,6 +15,7 @@ module BigKeeper | |
| 14 15 | 
             
                        path = File.expand_path(global_options[:path])
         | 
| 15 16 | 
             
                        version = global_options[:ver]
         | 
| 16 17 | 
             
                        user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
         | 
| 18 | 
            +
                        LeanCloudLogger.instance.set_command("release/home/start")
         | 
| 17 19 |  | 
| 18 20 | 
             
                        help_now!('user name is required') if user and user.empty?
         | 
| 19 21 | 
             
                        raise Logger.error("release version is required") if version == nil
         | 
| @@ -26,6 +28,7 @@ module BigKeeper | |
| 26 28 | 
             
                      finish.action do |global_options, options, args|
         | 
| 27 29 | 
             
                        path = File.expand_path(global_options[:path])
         | 
| 28 30 | 
             
                        version = global_options[:ver]
         | 
| 31 | 
            +
                        LeanCloudLogger.instance.set_command("release/home/finish")
         | 
| 29 32 |  | 
| 30 33 | 
             
                        raise Logger.error("release version is required") if version == nil
         | 
| 31 34 | 
             
                        release_home_finish(path, version)
         | 
| @@ -42,6 +45,7 @@ module BigKeeper | |
| 42 45 | 
             
                        path = File.expand_path(global_options[:path])
         | 
| 43 46 | 
             
                        version = global_options[:ver]
         | 
| 44 47 | 
             
                        user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
         | 
| 48 | 
            +
                        LeanCloudLogger.instance.set_command("release/module/start")
         | 
| 45 49 |  | 
| 46 50 | 
             
                        help_now!('module name is required') if args.length != 1
         | 
| 47 51 | 
             
                        raise Logger.error("release version is required") if version == nil
         | 
| @@ -57,6 +61,7 @@ module BigKeeper | |
| 57 61 | 
             
                        path = File.expand_path(global_options[:path])
         | 
| 58 62 | 
             
                        version = global_options[:ver]
         | 
| 59 63 | 
             
                        user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
         | 
| 64 | 
            +
                        LeanCloudLogger.instance.set_command("release/module/finish")
         | 
| 60 65 |  | 
| 61 66 | 
             
                        help_now!('module name is required') if args.length != 1
         | 
| 62 67 | 
             
                        raise Logger.error("release version is required") if version == nil
         | 
| @@ -3,6 +3,8 @@ require 'big_keeper/command/spec/list' | |
| 3 3 | 
             
            require 'big_keeper/command/spec/add'
         | 
| 4 4 | 
             
            require 'big_keeper/command/spec/delete'
         | 
| 5 5 | 
             
            require 'big_keeper/command/spec/search'
         | 
| 6 | 
            +
            require 'big_keeper/command/spec/sync'
         | 
| 7 | 
            +
            require 'big_keeper/util/leancloud_logger'
         | 
| 6 8 |  | 
| 7 9 | 
             
            module BigKeeper
         | 
| 8 10 |  | 
| @@ -14,6 +16,8 @@ module BigKeeper | |
| 14 16 | 
             
                  spec.desc 'Analyze spec dependency infomation.'
         | 
| 15 17 | 
             
                  spec.command :analyze do |analyze|
         | 
| 16 18 | 
             
                    analyze.action do |global_options, options, args|
         | 
| 19 | 
            +
                      LeanCloudLogger.instance.set_command("spec/analyze")
         | 
| 20 | 
            +
             | 
| 17 21 | 
             
                      path = File.expand_path(global_options[:path])
         | 
| 18 22 | 
             
                      is_all = options[:all]
         | 
| 19 23 | 
             
                      module_names = args
         | 
| @@ -24,6 +28,8 @@ module BigKeeper | |
| 24 28 | 
             
                  spec.desc 'List all the specs.'
         | 
| 25 29 | 
             
                  spec.command :list do | list |
         | 
| 26 30 | 
             
                    list.action do |global_options, options, args|
         | 
| 31 | 
            +
                      LeanCloudLogger.instance.set_command("spec/list")
         | 
| 32 | 
            +
             | 
| 27 33 | 
             
                      path = File.expand_path(global_options[:path])
         | 
| 28 34 | 
             
                      version = global_options[:ver]
         | 
| 29 35 | 
             
                      user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
         | 
| @@ -32,6 +38,20 @@ module BigKeeper | |
| 32 38 | 
             
                    end
         | 
| 33 39 | 
             
                  end
         | 
| 34 40 |  | 
| 41 | 
            +
                  spec.desc 'Sync Module dependency from Home.'
         | 
| 42 | 
            +
                  spec.command :sync do | sync|
         | 
| 43 | 
            +
                    sync.action do |global_options, options, args|
         | 
| 44 | 
            +
                      LeanCloudLogger.instance.set_command("spec/sync")
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                      path = File.expand_path(global_options[:path])
         | 
| 47 | 
            +
                      version = global_options[:ver]
         | 
| 48 | 
            +
                      user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
         | 
| 49 | 
            +
                      module_name = args
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                      spec_sync(path, version, user, module_name)
         | 
| 52 | 
            +
                    end
         | 
| 53 | 
            +
                  end
         | 
| 54 | 
            +
             | 
| 35 55 | 
             
                  spec.desc 'Add a spec (Coming soon).'
         | 
| 36 56 | 
             
                  spec.command :add do |add|
         | 
| 37 57 | 
             
                    add.action do
         | 
| @@ -5,6 +5,9 @@ require 'big_keeper/model/library_model' | |
| 5 5 |  | 
| 6 6 | 
             
            module BigKeeper
         | 
| 7 7 | 
             
              def self.spec_analyze(path,is_all,find_module_names)
         | 
| 8 | 
            +
                # Parse Bigkeeper file
         | 
| 9 | 
            +
                BigkeeperParser.parse("#{path}/Bigkeeper")
         | 
| 10 | 
            +
                
         | 
| 8 11 | 
             
                is_default = !is_all&&find_module_names.size==0
         | 
| 9 12 | 
             
                if is_all && find_module_names.size>0
         | 
| 10 13 | 
             
                  Logger.error("parameter conflict: [--all] | [module_names]")
         | 
| @@ -0,0 +1,12 @@ | |
| 1 | 
            +
            require 'big_keeper/util/bigkeeper_parser'
         | 
| 2 | 
            +
            require 'big_keeper/dependency/dep_type'
         | 
| 3 | 
            +
            require 'big_keeper/util/logger'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module BigKeeper
         | 
| 6 | 
            +
              def self.spec_sync(path, version, user, module_name)
         | 
| 7 | 
            +
                # Parse Bigkeeper file
         | 
| 8 | 
            +
                BigkeeperParser.parse("#{path}/Bigkeeper")
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                Logger.default('Coming soon.')
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
            end
         | 
| @@ -64,10 +64,6 @@ module BigKeeper | |
| 64 64 | 
             
                    verify_checkout(path, name)
         | 
| 65 65 | 
             
                    git.push_to_remote(path, name)
         | 
| 66 66 | 
             
                  end
         | 
| 67 | 
            -
             | 
| 68 | 
            -
                  if FileOperator.definitely_exists?("#{path}/.bigkeeper/module.cache")
         | 
| 69 | 
            -
                    Logger.error(%Q('#{name}' has '.bigkeeper/module.cache' cache path, you should fix it manually...))
         | 
| 70 | 
            -
                  end
         | 
| 71 67 | 
             
                end
         | 
| 72 68 |  | 
| 73 69 | 
             
                def verify_home_branch(path, branch_name, type)
         | 
| @@ -30,6 +30,16 @@ module BigKeeper | |
| 30 30 | 
             
                yield if block_given?
         | 
| 31 31 | 
             
              end
         | 
| 32 32 |  | 
| 33 | 
            +
              def self.configs
         | 
| 34 | 
            +
                BigkeeperParser.parse_configs
         | 
| 35 | 
            +
                yield if block_given?
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              def self.param(key, value)
         | 
| 39 | 
            +
                BigkeeperParser.parse_param(key, value)
         | 
| 40 | 
            +
                yield if block_given?
         | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
             | 
| 33 43 | 
             
              # Bigkeeper file parser
         | 
| 34 44 | 
             
              class BigkeeperParser
         | 
| 35 45 | 
             
                @@config = {}
         | 
| @@ -47,6 +57,8 @@ module BigKeeper | |
| 47 57 | 
             
                    content.gsub!(/source\s/, 'BigKeeper::source ')
         | 
| 48 58 | 
             
                    content.gsub!(/mod\s/, 'BigKeeper::mod ')
         | 
| 49 59 | 
             
                    content.gsub!(/modules\s/, 'BigKeeper::modules ')
         | 
| 60 | 
            +
                    content.gsub!(/configs\s/, 'BigKeeper::configs ')
         | 
| 61 | 
            +
                    content.gsub!(/param\s/, 'BigKeeper::param ')
         | 
| 50 62 | 
             
                    eval content
         | 
| 51 63 | 
             
                  end
         | 
| 52 64 | 
             
                end
         | 
| @@ -113,6 +125,14 @@ module BigKeeper | |
| 113 125 | 
             
                  @@config[:modules] = modules
         | 
| 114 126 | 
             
                end
         | 
| 115 127 |  | 
| 128 | 
            +
                def self.parse_configs
         | 
| 129 | 
            +
                  @@config[:configs] = {}
         | 
| 130 | 
            +
                end
         | 
| 131 | 
            +
             | 
| 132 | 
            +
                def self.parse_param(key, value)
         | 
| 133 | 
            +
                  @@config[:configs] = @@config[:configs].merge(key => value)
         | 
| 134 | 
            +
                end
         | 
| 135 | 
            +
             | 
| 116 136 | 
             
                def self.version
         | 
| 117 137 | 
             
                  @@config[:version]
         | 
| 118 138 | 
             
                end
         | 
| @@ -142,6 +162,13 @@ module BigKeeper | |
| 142 162 | 
             
                  @@config[:source].keys
         | 
| 143 163 | 
             
                end
         | 
| 144 164 |  | 
| 165 | 
            +
                def self.global_configs(key)
         | 
| 166 | 
            +
                  if @@config[:configs] == nil
         | 
| 167 | 
            +
                    return
         | 
| 168 | 
            +
                  end
         | 
| 169 | 
            +
                  @@config[:configs][key]
         | 
| 170 | 
            +
                end
         | 
| 171 | 
            +
             | 
| 145 172 | 
             
                def self.module_full_path(home_path, user_name, module_name)
         | 
| 146 173 | 
             
                  if @@config[:users] \
         | 
| 147 174 | 
             
                    && @@config[:users][user_name] \
         | 
| @@ -192,15 +219,4 @@ module BigKeeper | |
| 192 219 | 
             
                end
         | 
| 193 220 | 
             
              end
         | 
| 194 221 |  | 
| 195 | 
            -
              # BigkeeperParser.parse('/Users/mmoaay/Documents/eleme/BigKeeperMain/Bigkeeper')
         | 
| 196 | 
            -
              # BigkeeperParser.parse('/Users/mmoaay/Documents/eleme/BigKeeperMain/Bigkeeper')
         | 
| 197 | 
            -
              #
         | 
| 198 | 
            -
              # p BigkeeperParser.home_git()
         | 
| 199 | 
            -
              # p BigkeeperParser.home_pulls()
         | 
| 200 | 
            -
              # p BigkeeperParser.module_path('perry', 'BigKeeperModular')
         | 
| 201 | 
            -
              # p BigkeeperParser.module_path('', 'BigKeeperModular')
         | 
| 202 | 
            -
              # p BigkeeperParser.module_git('BigKeeperModular')
         | 
| 203 | 
            -
              # pulls = BigkeeperParser.module_pulls('BigKeeperModular')
         | 
| 204 | 
            -
              # `open #{pulls}`
         | 
| 205 | 
            -
              # p BigkeeperParser.module_names
         | 
| 206 222 | 
             
            end
         | 
| @@ -0,0 +1,72 @@ | |
| 1 | 
            +
            require 'Singleton'
         | 
| 2 | 
            +
            require 'net/http'
         | 
| 3 | 
            +
            require 'net/https'
         | 
| 4 | 
            +
            require 'big_keeper/util/logger'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            module BigKeeper
         | 
| 7 | 
            +
              class LeanCloudLogger
         | 
| 8 | 
            +
                include Singleton
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                attr_accessor :user, :version, :start_timestamp, :end_timestamp, :command, :parameter, :is_success, :path
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                def set_command(set_command)
         | 
| 13 | 
            +
                  @command = set_command
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                def start_log(global_options, args)
         | 
| 17 | 
            +
                  @start_timestamp = Time.new.to_i
         | 
| 18 | 
            +
                  @user = global_options['user'].to_s
         | 
| 19 | 
            +
                  @parameter = args.join(",")
         | 
| 20 | 
            +
                  @version = global_options['ver']
         | 
| 21 | 
            +
                  @path = global_options['path']
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                def end_log(is_success)
         | 
| 25 | 
            +
                  @end_timestamp = Time.new.to_i
         | 
| 26 | 
            +
                  @is_success = is_success
         | 
| 27 | 
            +
                  @version = BigkeeperParser.version if @version == 'Version in Bigkeeper file'
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  # require
         | 
| 30 | 
            +
                  parameter = {'start_timestamp' => @start_timestamp, 'end_timestamp' =>@end_timestamp, 'user' =>@user, 'is_success' =>@is_success}
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                  # optional
         | 
| 33 | 
            +
                  parameter = parameter.merge('command' => @command) unless @command == nil
         | 
| 34 | 
            +
                  parameter = parameter.merge('version' => @version) unless @version == nil || @version == ""
         | 
| 35 | 
            +
                  parameter = parameter.merge('parameter' => @parameter) unless @parameter == nil || @parameter == ""
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                  leancloud_file = @command.split("/").first
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                  send_log_cloud(leancloud_file, parameter)
         | 
| 40 | 
            +
                end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                def send_log_cloud(file_name, parameter)
         | 
| 43 | 
            +
                  if file_name == nil
         | 
| 44 | 
            +
                    return
         | 
| 45 | 
            +
                  end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                  if BigkeeperParser.global_configs("LeanCloudId") == nil || BigkeeperParser.global_configs("LeanCloudKey") == nil
         | 
| 48 | 
            +
                    return
         | 
| 49 | 
            +
                  end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                  header = assemble_request
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                  uri = URI.parse("https://api.leancloud.cn/1.1/classes/#{file_name}")
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                  https = Net::HTTP.new(uri.host, 443)
         | 
| 56 | 
            +
                  https.use_ssl = true
         | 
| 57 | 
            +
                  https.ssl_version = :TLSv1
         | 
| 58 | 
            +
                  https.verify_mode = OpenSSL::SSL::VERIFY_PEER
         | 
| 59 | 
            +
                  req = Net::HTTP::Post.new(uri.path, header)
         | 
| 60 | 
            +
                  req.body = parameter.to_json
         | 
| 61 | 
            +
                  res = https.request(req)
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                  Logger.highlight("Send LeanCloud success, response #{res.body}")
         | 
| 64 | 
            +
                end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                def assemble_request
         | 
| 67 | 
            +
                  return {'Content-Type' =>'application/json', 'X-LC-Id' =>BigkeeperParser.global_configs("LeanCloudId"), 'X-LC-Key' =>BigkeeperParser.global_configs("LeanCloudKey")}
         | 
| 68 | 
            +
                end
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                protected :send_log_cloud, :assemble_request
         | 
| 71 | 
            +
                end
         | 
| 72 | 
            +
              end
         | 
| @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            require 'colorize'
         | 
| 2 | 
            +
            require 'big_keeper/util/leancloud_logger'
         | 
| 2 3 |  | 
| 3 4 | 
             
            module BigKeeper
         | 
| 4 5 | 
             
              DEFAULT_LOG = 1
         | 
| @@ -18,23 +19,28 @@ module BigKeeper | |
| 18 19 | 
             
                end
         | 
| 19 20 |  | 
| 20 21 | 
             
                def self.default(sentence)
         | 
| 21 | 
            -
                  puts sentence. | 
| 22 | 
            +
                  puts formatter_output(sentence).colorize(:default)
         | 
| 22 23 | 
             
                end
         | 
| 23 24 |  | 
| 24 25 | 
             
                def self.highlight(sentence)
         | 
| 25 | 
            -
                  puts sentence. | 
| 26 | 
            +
                  puts formatter_output(sentence).colorize(:green)
         | 
| 26 27 | 
             
                end
         | 
| 27 28 |  | 
| 28 29 | 
             
                def self.error(sentence)
         | 
| 29 | 
            -
                   | 
| 30 | 
            +
                  LeanCloudLogger.instance.end_log(false)
         | 
| 31 | 
            +
                  raise formatter_output(sentence).colorize(:red)
         | 
| 30 32 | 
             
                end
         | 
| 31 33 |  | 
| 32 34 | 
             
                def self.warning(sentence)
         | 
| 33 | 
            -
                  puts sentence. | 
| 35 | 
            +
                  puts formatter_output(sentence).colorize(:yellow)
         | 
| 34 36 | 
             
                end
         | 
| 35 37 |  | 
| 36 38 | 
             
                def self.separator
         | 
| 37 39 | 
             
                  puts "- - - - - - - - - - - - - - - - - - - - - - - - - - -".colorize(:light_blue)
         | 
| 38 40 | 
             
                end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                def self.formatter_output(sentence)
         | 
| 43 | 
            +
                  "[big] ".concat(sentence.to_s).to_s
         | 
| 44 | 
            +
                end
         | 
| 39 45 | 
             
              end
         | 
| 40 46 | 
             
            end
         | 
| @@ -10,12 +10,20 @@ module BigKeeper | |
| 10 10 | 
             
                  end
         | 
| 11 11 | 
             
                  Logger.highlight('Start pod install, waiting...')
         | 
| 12 12 | 
             
                  cmd = "pod install --project-directory=#{path}"
         | 
| 13 | 
            +
                  is_success = false
         | 
| 14 | 
            +
                  output_lines = ''
         | 
| 13 15 | 
             
                  Open3.popen3(cmd) do |stdin, stdout, stderr, wait_thr|
         | 
| 14 16 | 
             
                    while line = stdout.gets
         | 
| 15 | 
            -
                       | 
| 17 | 
            +
                      output_lines.concat("#{line}\n")
         | 
| 18 | 
            +
                      is_success = true if line.include? "Pod installation complete!"
         | 
| 16 19 | 
             
                    end
         | 
| 17 20 | 
             
                  end
         | 
| 18 | 
            -
                   | 
| 21 | 
            +
                  if is_success
         | 
| 22 | 
            +
                    Logger.highlight('Finish pod install.')
         | 
| 23 | 
            +
                  else
         | 
| 24 | 
            +
                    puts output_lines
         | 
| 25 | 
            +
                    Logger.error("pod install error, please check your Podfile")
         | 
| 26 | 
            +
                  end
         | 
| 19 27 | 
             
                end
         | 
| 20 28 |  | 
| 21 29 | 
             
                def self.pod_repo_push(path, module_name, source, version)
         | 
| @@ -65,6 +73,6 @@ module BigKeeper | |
| 65 73 | 
             
                    end
         | 
| 66 74 | 
             
                  end
         | 
| 67 75 | 
             
                end
         | 
| 68 | 
            -
             | 
| 76 | 
            +
             | 
| 69 77 | 
             
              end
         | 
| 70 78 | 
             
            end
         | 
    
        data/lib/big_keeper/version.rb
    CHANGED
    
    
    
        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. | 
| 4 | 
            +
              version: 0.8.7
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - mmoaay
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2018- | 
| 11 | 
            +
            date: 2018-09-04 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: gli
         | 
| @@ -278,6 +278,7 @@ files: | |
| 278 278 | 
             
            - lib/big_keeper/command/spec/delete.rb
         | 
| 279 279 | 
             
            - lib/big_keeper/command/spec/list.rb
         | 
| 280 280 | 
             
            - lib/big_keeper/command/spec/search.rb
         | 
| 281 | 
            +
            - lib/big_keeper/command/spec/sync.rb
         | 
| 281 282 | 
             
            - lib/big_keeper/dependency/dep_gradle_operator.rb
         | 
| 282 283 | 
             
            - lib/big_keeper/dependency/dep_operator.rb
         | 
| 283 284 | 
             
            - lib/big_keeper/dependency/dep_pod_operator.rb
         | 
| @@ -298,6 +299,7 @@ files: | |
| 298 299 | 
             
            - lib/big_keeper/util/gitflow_operator.rb
         | 
| 299 300 | 
             
            - lib/big_keeper/util/gradle_operator.rb
         | 
| 300 301 | 
             
            - lib/big_keeper/util/info_plist_operator.rb
         | 
| 302 | 
            +
            - lib/big_keeper/util/leancloud_logger.rb
         | 
| 301 303 | 
             
            - lib/big_keeper/util/list_generator.rb
         | 
| 302 304 | 
             
            - lib/big_keeper/util/logger.rb
         | 
| 303 305 | 
             
            - lib/big_keeper/util/pod_operator.rb
         | 
| @@ -334,7 +336,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 334 336 | 
             
                  version: '0'
         | 
| 335 337 | 
             
            requirements: []
         | 
| 336 338 | 
             
            rubyforge_project: 
         | 
| 337 | 
            -
            rubygems_version: 2.5. | 
| 339 | 
            +
            rubygems_version: 2.5.2.3
         | 
| 338 340 | 
             
            signing_key: 
         | 
| 339 341 | 
             
            specification_version: 4
         | 
| 340 342 | 
             
            summary: Efficiency improvement for iOS&Android modular development.
         |