knapsack_pro 0.12.0 → 0.13.0
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/CHANGELOG.md +6 -0
 - data/README.md +13 -7
 - data/knapsack_pro.gemspec +1 -0
 - data/lib/knapsack_pro/version.rb +1 -1
 - data/lib/tasks/install.rake +302 -0
 - metadata +17 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 331541f2ecd345ac6c68562799b8b00d774a82ee
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 6f2c4dc59a7283f77351fd640dc2632c57db07e1
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: ceaace21c1274a31e97c0ce6e6d7addb1c99b834242c45dc558f783845b03dc1720eabcf2b1d36325da61f8f96955b35574fd64d64453e5cde9e1b5d131aee59
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: b966ee4bb2bc7f7938bbaec8a4db8e850618645177ed36e88fcac5430d11be66eaacf26037955601ff03cac61235ddb5126d22b024a361640c0e28d02dc3f9cc
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | 
         @@ -15,7 +15,7 @@ The knapsack_pro gem supports: 
     | 
|
| 
       15 
15 
     | 
    
         
             
            * [Spinach](https://github.com/codegram/spinach)
         
     | 
| 
       16 
16 
     | 
    
         
             
            * [Turnip](https://github.com/jnicklas/turnip)
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
            __Would you like to try knapsack_pro gem?__ You can [get API token here](http://knapsackpro.com).
         
     | 
| 
      
 18 
     | 
    
         
            +
            __Would you like to try knapsack_pro gem?__ You can [get API token here](http://knapsackpro.com?utm_source=github&utm_medium=readme&utm_campaign=knapsack_pro-ruby_gem&utm_content=get_api_token).
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
            ## Is knapsack_pro gem free?
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
         @@ -109,7 +109,7 @@ end 
     | 
|
| 
       109 
109 
     | 
    
         | 
| 
       110 
110 
     | 
    
         
             
            And then execute:
         
     | 
| 
       111 
111 
     | 
    
         | 
| 
       112 
     | 
    
         
            -
                $ bundle
         
     | 
| 
      
 112 
     | 
    
         
            +
                $ bundle install
         
     | 
| 
       113 
113 
     | 
    
         | 
| 
       114 
114 
     | 
    
         | 
| 
       115 
115 
     | 
    
         
             
            Add this lines at the bottom of `Rakefile` if your project has it:
         
     | 
| 
         @@ -118,6 +118,14 @@ Add this lines at the bottom of `Rakefile` if your project has it: 
     | 
|
| 
       118 
118 
     | 
    
         
             
            KnapsackPro.load_tasks if defined?(KnapsackPro)
         
     | 
| 
       119 
119 
     | 
    
         
             
            ```
         
     | 
| 
       120 
120 
     | 
    
         | 
| 
      
 121 
     | 
    
         
            +
            Run installer to get started. It will ask you a few questions and generate instruction steps for your project.
         
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
      
 123 
     | 
    
         
            +
                $ bundle exec rake knapsack_pro:install
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
            You can read next section only if you want to better understand optional gem configuration and features.
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
            ## How to set up
         
     | 
| 
      
 128 
     | 
    
         
            +
             
     | 
| 
       121 
129 
     | 
    
         
             
            If you are using [VCR gem](https://github.com/vcr/vcr) then add Knapsack Pro API subdomain to [ignore hosts](https://www.relishapp.com/vcr/vcr/v/2-9-3/docs/configuration/ignore-request):
         
     | 
| 
       122 
130 
     | 
    
         | 
| 
       123 
131 
     | 
    
         
             
            ```ruby
         
     | 
| 
         @@ -130,8 +138,6 @@ end 
     | 
|
| 
       130 
138 
     | 
    
         
             
            WebMock.disable_net_connect!(:allow => 'api.knapsackpro.com') if defined?(WebMock)
         
     | 
| 
       131 
139 
     | 
    
         
             
            ```
         
     | 
| 
       132 
140 
     | 
    
         | 
| 
       133 
     | 
    
         
            -
            ## How to set up
         
     | 
| 
       134 
     | 
    
         
            -
             
     | 
| 
       135 
141 
     | 
    
         
             
            ### Usage (How to set up 1 of 3)
         
     | 
| 
       136 
142 
     | 
    
         | 
| 
       137 
143 
     | 
    
         
             
            __Tip:__ You can find here example of rails app with already configured knapsack_pro.
         
     | 
| 
         @@ -184,7 +190,7 @@ require 'knapsack_pro' 
     | 
|
| 
       184 
190 
     | 
    
         | 
| 
       185 
191 
     | 
    
         
             
            # CUSTOM_CONFIG_GOES_HERE
         
     | 
| 
       186 
192 
     | 
    
         | 
| 
       187 
     | 
    
         
            -
            KnapsackPro::Adapters:: 
     | 
| 
      
 193 
     | 
    
         
            +
            KnapsackPro::Adapters::SpinachAdapter.bind
         
     | 
| 
       188 
194 
     | 
    
         
             
            ```
         
     | 
| 
       189 
195 
     | 
    
         | 
| 
       190 
196 
     | 
    
         
             
            #### Custom configuration
         
     | 
| 
         @@ -427,7 +433,7 @@ Please remember to add additional containers for your project in CircleCI settin 
     | 
|
| 
       427 
433 
     | 
    
         | 
| 
       428 
434 
     | 
    
         
             
            #### Info for Travis users
         
     | 
| 
       429 
435 
     | 
    
         | 
| 
       430 
     | 
    
         
            -
            You can  
     | 
| 
      
 436 
     | 
    
         
            +
            You can parallelize your builds across virtual machines with [travis matrix feature](http://docs.travis-ci.com/user/speeding-up-the-build/#Parallelizing-your-builds-across-virtual-machines). Edit `.travis.yml`
         
     | 
| 
       431 
437 
     | 
    
         | 
| 
       432 
438 
     | 
    
         
             
            ```yaml
         
     | 
| 
       433 
439 
     | 
    
         
             
            script:
         
     | 
| 
         @@ -554,7 +560,7 @@ To run specs for Knapsack Pro gem type: 
     | 
|
| 
       554 
560 
     | 
    
         | 
| 
       555 
561 
     | 
    
         
             
            ## Contributing
         
     | 
| 
       556 
562 
     | 
    
         | 
| 
       557 
     | 
    
         
            -
            1. Fork it ( https://github.com/ 
     | 
| 
      
 563 
     | 
    
         
            +
            1. Fork it ( https://github.com/KnapsackPro/knapsack_pro-ruby )
         
     | 
| 
       558 
564 
     | 
    
         
             
            2. Create your feature branch (`git checkout -b my-new-feature`)
         
     | 
| 
       559 
565 
     | 
    
         
             
            3. Commit your changes (`git commit -am 'Add some feature'`)
         
     | 
| 
       560 
566 
     | 
    
         
             
            4. Push to the branch (`git push origin my-new-feature`)
         
     | 
    
        data/knapsack_pro.gemspec
    CHANGED
    
    | 
         @@ -20,6 +20,7 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
              spec.add_dependency 'rake', '>= 0'
         
     | 
| 
       22 
22 
     | 
    
         
             
              spec.add_dependency 'timecop', '>= 0.1.0'
         
     | 
| 
      
 23 
     | 
    
         
            +
              spec.add_dependency 'tty-prompt', '~> 0.7'
         
     | 
| 
       23 
24 
     | 
    
         | 
| 
       24 
25 
     | 
    
         
             
              spec.add_development_dependency 'bundler', '~> 1.6'
         
     | 
| 
       25 
26 
     | 
    
         
             
              spec.add_development_dependency 'rspec', '~> 3.0', '>= 2.0.0'
         
     | 
    
        data/lib/knapsack_pro/version.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,302 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'knapsack_pro'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'tty-prompt'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            def step_for_rspec(prompt)
         
     | 
| 
      
 5 
     | 
    
         
            +
              prompt.say "Step for RSpec", color: :yellow
         
     | 
| 
      
 6 
     | 
    
         
            +
              prompt.say "Add at the beginning of your spec/spec_helper.rb:"
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              prompt.say %{
         
     | 
| 
      
 9 
     | 
    
         
            +
            require 'knapsack_pro'
         
     | 
| 
      
 10 
     | 
    
         
            +
            KnapsackPro::Adapters::RSpecAdapter.bind
         
     | 
| 
      
 11 
     | 
    
         
            +
              }, color: :cyan
         
     | 
| 
      
 12 
     | 
    
         
            +
            end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            def step_for_minitest(prompt)
         
     | 
| 
      
 15 
     | 
    
         
            +
              prompt.say "Step for Minitest", color: :yellow
         
     | 
| 
      
 16 
     | 
    
         
            +
              prompt.say "Add at the beginning of your test/test_helper.rb:"
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              prompt.say %{
         
     | 
| 
      
 19 
     | 
    
         
            +
            require 'knapsack_pro'
         
     | 
| 
      
 20 
     | 
    
         
            +
            knapsack_pro_adapter = KnapsackPro::Adapters::MinitestAdapter.bind
         
     | 
| 
      
 21 
     | 
    
         
            +
            knapsack_pro_adapter.set_test_helper_path(__FILE__)
         
     | 
| 
      
 22 
     | 
    
         
            +
              }, color: :cyan
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            def step_for_cucumber(prompt)
         
     | 
| 
      
 26 
     | 
    
         
            +
              prompt.say "Step for Cucumber", color: :yellow
         
     | 
| 
      
 27 
     | 
    
         
            +
              prompt.say "Create file features/support/knapsack_pro.rb and add there:"
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              prompt.say %{
         
     | 
| 
      
 30 
     | 
    
         
            +
            require 'knapsack_pro'
         
     | 
| 
      
 31 
     | 
    
         
            +
            KnapsackPro::Adapters::CucumberAdapter.bind
         
     | 
| 
      
 32 
     | 
    
         
            +
              }, color: :cyan
         
     | 
| 
      
 33 
     | 
    
         
            +
            end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            def step_for_spinach(prompt)
         
     | 
| 
      
 36 
     | 
    
         
            +
              prompt.say "Step for Spinach", color: :yellow
         
     | 
| 
      
 37 
     | 
    
         
            +
              prompt.say "Create file features/support/knapsack_pro.rb and add there:"
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
              prompt.say %{
         
     | 
| 
      
 40 
     | 
    
         
            +
            require 'knapsack_pro'
         
     | 
| 
      
 41 
     | 
    
         
            +
            KnapsackPro::Adapters::SpinachAdapter.bind
         
     | 
| 
      
 42 
     | 
    
         
            +
              }, color: :cyan
         
     | 
| 
      
 43 
     | 
    
         
            +
            end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            def step_for_vcr(prompt)
         
     | 
| 
      
 46 
     | 
    
         
            +
              prompt.say "Step for VCR gem", color: :yellow
         
     | 
| 
      
 47 
     | 
    
         
            +
              prompt.say "Add Knapsack Pro API subdomain to ignore hosts"
         
     | 
| 
      
 48 
     | 
    
         
            +
              prompt.say "in spec/spec_helper.rb or wherever is your VCR configuration"
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
              prompt.say %{
         
     | 
| 
      
 51 
     | 
    
         
            +
            VCR.configure do |config|
         
     | 
| 
      
 52 
     | 
    
         
            +
              config.ignore_hosts 'localhost', '127.0.0.1', '0.0.0.0', 'api.knapsackpro.com'
         
     | 
| 
      
 53 
     | 
    
         
            +
            end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
            WebMock.disable_net_connect!(:allow => 'api.knapsackpro.com') if defined?(WebMock)
         
     | 
| 
      
 56 
     | 
    
         
            +
              }, color: :cyan
         
     | 
| 
      
 57 
     | 
    
         
            +
            end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
            def step_for_ci_circle(prompt, answers)
         
     | 
| 
      
 60 
     | 
    
         
            +
              prompt.say "Step for https://circleci.com", color: :yellow
         
     | 
| 
      
 61 
     | 
    
         
            +
              prompt.say "Update circle.yml in your project:"
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
              str = ''
         
     | 
| 
      
 64 
     | 
    
         
            +
              answers[:testing_tools].each do |tool|
         
     | 
| 
      
 65 
     | 
    
         
            +
                str << %{
         
     | 
| 
      
 66 
     | 
    
         
            +
                # Step for #{tool}
         
     | 
| 
      
 67 
     | 
    
         
            +
                - bundle exec rake knapsack_pro:#{tool}:
         
     | 
| 
      
 68 
     | 
    
         
            +
                    parallel: true # Caution: there are 8 spaces indentation!
         
     | 
| 
      
 69 
     | 
    
         
            +
                }
         
     | 
| 
      
 70 
     | 
    
         
            +
              end
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
              prompt.say((%{
         
     | 
| 
      
 73 
     | 
    
         
            +
            test:
         
     | 
| 
      
 74 
     | 
    
         
            +
              override:} + str), color: :cyan)
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
              puts
         
     | 
| 
      
 77 
     | 
    
         
            +
              set_api_tokens_on_ci(prompt, answers)
         
     | 
| 
      
 78 
     | 
    
         
            +
            end
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
            def step_for_ci_travis(prompt, answers)
         
     | 
| 
      
 81 
     | 
    
         
            +
              prompt.say "Step for https://travis-ci.org", color: :yellow
         
     | 
| 
      
 82 
     | 
    
         
            +
              prompt.say "You can parallelize your builds across virtual machines with travis matrix feature."
         
     | 
| 
      
 83 
     | 
    
         
            +
              prompt.say "https://docs.travis-ci.com/user/speeding-up-the-build/#Parallelizing-your-builds-across-virtual-machines"
         
     | 
| 
      
 84 
     | 
    
         
            +
              puts
         
     | 
| 
      
 85 
     | 
    
         
            +
              prompt.say "Update .travis.yml"
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
              prompt.say %{
         
     | 
| 
      
 88 
     | 
    
         
            +
            script:
         
     | 
| 
      
 89 
     | 
    
         
            +
              }, color: :cyan
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
              answers[:testing_tools].each do |tool|
         
     | 
| 
      
 92 
     | 
    
         
            +
                prompt.say %{
         
     | 
| 
      
 93 
     | 
    
         
            +
              # Step for #{tool}
         
     | 
| 
      
 94 
     | 
    
         
            +
              - "bundle exec rake knapsack_pro:#{tool}"
         
     | 
| 
      
 95 
     | 
    
         
            +
                }, color: :cyan
         
     | 
| 
      
 96 
     | 
    
         
            +
              end
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
              prompt.say %{
         
     | 
| 
      
 99 
     | 
    
         
            +
            env:
         
     | 
| 
      
 100 
     | 
    
         
            +
              global:
         
     | 
| 
      
 101 
     | 
    
         
            +
                - KNAPSACK_PRO_CI_NODE_TOTAL=2
         
     | 
| 
      
 102 
     | 
    
         
            +
              }, color: :cyan
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
              prompt.say %{
         
     | 
| 
      
 105 
     | 
    
         
            +
              matrix:
         
     | 
| 
      
 106 
     | 
    
         
            +
                - KNAPSACK_PRO_CI_NODE_INDEX=0
         
     | 
| 
      
 107 
     | 
    
         
            +
                - KNAPSACK_PRO_CI_NODE_INDEX=1
         
     | 
| 
      
 108 
     | 
    
         
            +
              }, color: :cyan
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
              puts
         
     | 
| 
      
 111 
     | 
    
         
            +
              prompt.say "If you want more parallel jobs then update accordingly:"
         
     | 
| 
      
 112 
     | 
    
         
            +
              tip_ci_node_total_and_index(prompt)
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
              puts
         
     | 
| 
      
 115 
     | 
    
         
            +
              prompt.say "Open travis settings in web interface to add there Knapsack Pro API token."
         
     | 
| 
      
 116 
     | 
    
         
            +
              puts
         
     | 
| 
      
 117 
     | 
    
         
            +
              set_api_tokens_on_ci(prompt, answers)
         
     | 
| 
      
 118 
     | 
    
         
            +
            end
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
            def step_for_ci_buildkite(prompt, answers)
         
     | 
| 
      
 121 
     | 
    
         
            +
              prompt.say "Step for https://buildkite.com", color: :yellow
         
     | 
| 
      
 122 
     | 
    
         
            +
              prompt.say "Please configure the parallelism parameter in your build step and run the appropiate command in your build:"
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
              answers[:testing_tools].each do |tool|
         
     | 
| 
      
 125 
     | 
    
         
            +
                prompt.say %{
         
     | 
| 
      
 126 
     | 
    
         
            +
            # Step for #{tool}
         
     | 
| 
      
 127 
     | 
    
         
            +
            bundle exec rake knapsack_pro:#{tool}
         
     | 
| 
      
 128 
     | 
    
         
            +
                }, color: :cyan
         
     | 
| 
      
 129 
     | 
    
         
            +
              end
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
              puts
         
     | 
| 
      
 132 
     | 
    
         
            +
              set_api_tokens_on_ci(prompt, answers)
         
     | 
| 
      
 133 
     | 
    
         
            +
            end
         
     | 
| 
      
 134 
     | 
    
         
            +
             
     | 
| 
      
 135 
     | 
    
         
            +
            def step_for_ci_semaphore(prompt, answers)
         
     | 
| 
      
 136 
     | 
    
         
            +
              prompt.say "Step for https://semaphoreci.com", color: :yellow
         
     | 
| 
      
 137 
     | 
    
         
            +
              prompt.say "Set knapsack pro command for each parallel thread. Here is example:"
         
     | 
| 
      
 138 
     | 
    
         
            +
             
     | 
| 
      
 139 
     | 
    
         
            +
              answers[:testing_tools].each do |tool|
         
     | 
| 
      
 140 
     | 
    
         
            +
                puts
         
     | 
| 
      
 141 
     | 
    
         
            +
                prompt.say "Step for #{tool}"
         
     | 
| 
      
 142 
     | 
    
         
            +
                prompt.say %{
         
     | 
| 
      
 143 
     | 
    
         
            +
            # Thread 1
         
     | 
| 
      
 144 
     | 
    
         
            +
            bundle exec rake knapsack_pro:#{tool}
         
     | 
| 
      
 145 
     | 
    
         
            +
             
     | 
| 
      
 146 
     | 
    
         
            +
            # Thread 2
         
     | 
| 
      
 147 
     | 
    
         
            +
            bundle exec rake knapsack_pro:#{tool}
         
     | 
| 
      
 148 
     | 
    
         
            +
                }, color: :cyan
         
     | 
| 
      
 149 
     | 
    
         
            +
              end
         
     | 
| 
      
 150 
     | 
    
         
            +
             
     | 
| 
      
 151 
     | 
    
         
            +
              puts
         
     | 
| 
      
 152 
     | 
    
         
            +
              set_api_tokens_on_ci(prompt, answers)
         
     | 
| 
      
 153 
     | 
    
         
            +
            end
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
      
 155 
     | 
    
         
            +
            def step_for_ci_snap_ci(prompt, answers)
         
     | 
| 
      
 156 
     | 
    
         
            +
              prompt.say "Step for https://snap-ci.com", color: :yellow
         
     | 
| 
      
 157 
     | 
    
         
            +
              prompt.say "Please configure number of workers for your project in configuration settings in order to enable parallelism."
         
     | 
| 
      
 158 
     | 
    
         
            +
              prompt.say "Next thing is to set below commands to be executed in your stage:"
         
     | 
| 
      
 159 
     | 
    
         
            +
             
     | 
| 
      
 160 
     | 
    
         
            +
              answers[:testing_tools].each do |tool|
         
     | 
| 
      
 161 
     | 
    
         
            +
                prompt.say %{
         
     | 
| 
      
 162 
     | 
    
         
            +
            # Step for #{tool}
         
     | 
| 
      
 163 
     | 
    
         
            +
            bundle exec rake knapsack_pro:#{tool}
         
     | 
| 
      
 164 
     | 
    
         
            +
                }, color: :cyan
         
     | 
| 
      
 165 
     | 
    
         
            +
              end
         
     | 
| 
      
 166 
     | 
    
         
            +
             
     | 
| 
      
 167 
     | 
    
         
            +
              puts
         
     | 
| 
      
 168 
     | 
    
         
            +
              set_api_tokens_on_ci(prompt, answers)
         
     | 
| 
      
 169 
     | 
    
         
            +
            end
         
     | 
| 
      
 170 
     | 
    
         
            +
             
     | 
| 
      
 171 
     | 
    
         
            +
            def step_for_ci_other(prompt, answers)
         
     | 
| 
      
 172 
     | 
    
         
            +
              prompt.say "Step for other CI provider", color: :yellow
         
     | 
| 
      
 173 
     | 
    
         
            +
              prompt.say "Set below global variables on your CI server."
         
     | 
| 
      
 174 
     | 
    
         
            +
              puts
         
     | 
| 
      
 175 
     | 
    
         
            +
             
     | 
| 
      
 176 
     | 
    
         
            +
              prompt.say "Git installed on the CI server will be used to determine branch name and current commit hash."
         
     | 
| 
      
 177 
     | 
    
         
            +
             
     | 
| 
      
 178 
     | 
    
         
            +
              prompt.say %{
         
     | 
| 
      
 179 
     | 
    
         
            +
            KNAPSACK_PRO_REPOSITORY_ADAPTER=git
         
     | 
| 
      
 180 
     | 
    
         
            +
              }, color: :cyan
         
     | 
| 
      
 181 
     | 
    
         
            +
              puts
         
     | 
| 
      
 182 
     | 
    
         
            +
             
     | 
| 
      
 183 
     | 
    
         
            +
            prompt.say "Path to the project repository on CI server, for instance:"
         
     | 
| 
      
 184 
     | 
    
         
            +
              prompt.say %{
         
     | 
| 
      
 185 
     | 
    
         
            +
            KNAPSACK_PRO_PROJECT_DIR=/home/ubuntu/my-app-repository
         
     | 
| 
      
 186 
     | 
    
         
            +
              }, color: :cyan
         
     | 
| 
      
 187 
     | 
    
         
            +
              puts
         
     | 
| 
      
 188 
     | 
    
         
            +
             
     | 
| 
      
 189 
     | 
    
         
            +
              prompt.say "You can learn more about those variables here:"
         
     | 
| 
      
 190 
     | 
    
         
            +
              prompt.say "https://github.com/KnapsackPro/knapsack_pro-ruby#when-you-set-global-variable-knapsack_pro_repository_adaptergit-required-when-ci-provider-is-not-supported"
         
     | 
| 
      
 191 
     | 
    
         
            +
              puts
         
     | 
| 
      
 192 
     | 
    
         
            +
             
     | 
| 
      
 193 
     | 
    
         
            +
              set_api_tokens_on_ci(prompt, answers)
         
     | 
| 
      
 194 
     | 
    
         
            +
             
     | 
| 
      
 195 
     | 
    
         
            +
              # set test run command on CI server
         
     | 
| 
      
 196 
     | 
    
         
            +
              prompt.say "Set test run command on CI server", color: :yellow
         
     | 
| 
      
 197 
     | 
    
         
            +
              prompt.say "You must set command responsible for running tests for each CI node."
         
     | 
| 
      
 198 
     | 
    
         
            +
              prompt.say "Let's assume you have 2 CI nodes. Here are commands you need to run for each CI node."
         
     | 
| 
      
 199 
     | 
    
         
            +
             
     | 
| 
      
 200 
     | 
    
         
            +
              answers[:testing_tools].each do |tool|
         
     | 
| 
      
 201 
     | 
    
         
            +
                puts
         
     | 
| 
      
 202 
     | 
    
         
            +
                prompt.say "Step for #{tool}"
         
     | 
| 
      
 203 
     | 
    
         
            +
                prompt.say %{
         
     | 
| 
      
 204 
     | 
    
         
            +
            # Command for first CI node
         
     | 
| 
      
 205 
     | 
    
         
            +
            $ KNAPSACK_PRO_CI_NODE_TOTAL=2 KNAPSACK_PRO_CI_NODE_INDEX=0 bundle exec rake knapsack_pro:#{tool}
         
     | 
| 
      
 206 
     | 
    
         
            +
             
     | 
| 
      
 207 
     | 
    
         
            +
            # Command for second CI node
         
     | 
| 
      
 208 
     | 
    
         
            +
            $ KNAPSACK_PRO_CI_NODE_TOTAL=2 KNAPSACK_PRO_CI_NODE_INDEX=1 bundle exec rake knapsack_pro:#{tool}
         
     | 
| 
      
 209 
     | 
    
         
            +
                }, color: :cyan
         
     | 
| 
      
 210 
     | 
    
         
            +
              end
         
     | 
| 
      
 211 
     | 
    
         
            +
              puts
         
     | 
| 
      
 212 
     | 
    
         
            +
              prompt.say "If you have more CI nodes then update accordingly:"
         
     | 
| 
      
 213 
     | 
    
         
            +
              tip_ci_node_total_and_index(prompt)
         
     | 
| 
      
 214 
     | 
    
         
            +
              puts
         
     | 
| 
      
 215 
     | 
    
         
            +
            end
         
     | 
| 
      
 216 
     | 
    
         
            +
             
     | 
| 
      
 217 
     | 
    
         
            +
            def tip_ci_node_total_and_index(prompt)
         
     | 
| 
      
 218 
     | 
    
         
            +
              prompt.say %{
         
     | 
| 
      
 219 
     | 
    
         
            +
            KNAPSACK_PRO_CI_NODE_TOTAL - total number of your CI nodes
         
     | 
| 
      
 220 
     | 
    
         
            +
            KNAPSACK_PRO_CI_NODE_INDEX - starts from 0, it's index of each CI node
         
     | 
| 
      
 221 
     | 
    
         
            +
              }, color: :cyan
         
     | 
| 
      
 222 
     | 
    
         
            +
            end
         
     | 
| 
      
 223 
     | 
    
         
            +
             
     | 
| 
      
 224 
     | 
    
         
            +
            def set_api_tokens_on_ci(prompt, answers)
         
     | 
| 
      
 225 
     | 
    
         
            +
              prompt.say "Set API token", color: :yellow
         
     | 
| 
      
 226 
     | 
    
         
            +
              prompt.say "You must set different API token on your CI server for each test suite you have:"
         
     | 
| 
      
 227 
     | 
    
         
            +
              puts
         
     | 
| 
      
 228 
     | 
    
         
            +
             
     | 
| 
      
 229 
     | 
    
         
            +
              str = ''
         
     | 
| 
      
 230 
     | 
    
         
            +
              answers[:testing_tools].each do |tool|
         
     | 
| 
      
 231 
     | 
    
         
            +
                str << "KNAPSACK_PRO_TEST_SUITE_TOKEN_#{tool.upcase}\n"
         
     | 
| 
      
 232 
     | 
    
         
            +
              end
         
     | 
| 
      
 233 
     | 
    
         
            +
              prompt.say str, color: :cyan
         
     | 
| 
      
 234 
     | 
    
         
            +
             
     | 
| 
      
 235 
     | 
    
         
            +
              prompt.say "You can generate more API tokens after sign in on https://knapsackpro.com"
         
     | 
| 
      
 236 
     | 
    
         
            +
              puts
         
     | 
| 
      
 237 
     | 
    
         
            +
            end
         
     | 
| 
      
 238 
     | 
    
         
            +
             
     | 
| 
      
 239 
     | 
    
         
            +
            namespace :knapsack_pro do
         
     | 
| 
      
 240 
     | 
    
         
            +
              task :install do
         
     | 
| 
      
 241 
     | 
    
         
            +
                prompt = TTY::Prompt.new
         
     | 
| 
      
 242 
     | 
    
         
            +
                answers = {}
         
     | 
| 
      
 243 
     | 
    
         
            +
             
     | 
| 
      
 244 
     | 
    
         
            +
                puts
         
     | 
| 
      
 245 
     | 
    
         
            +
                prompt.say "Welcome to knapsack_pro gem installer."
         
     | 
| 
      
 246 
     | 
    
         
            +
                puts
         
     | 
| 
      
 247 
     | 
    
         
            +
             
     | 
| 
      
 248 
     | 
    
         
            +
                TESTING_TOOLS_CHOICES = {
         
     | 
| 
      
 249 
     | 
    
         
            +
                  'RSpec' => :rspec,
         
     | 
| 
      
 250 
     | 
    
         
            +
                  'Minitest' => :minitest,
         
     | 
| 
      
 251 
     | 
    
         
            +
                  'Cucumber' => :cucumber,
         
     | 
| 
      
 252 
     | 
    
         
            +
                  'Spinach' => :spinach,
         
     | 
| 
      
 253 
     | 
    
         
            +
                }
         
     | 
| 
      
 254 
     | 
    
         
            +
                answers[:testing_tools] = []
         
     | 
| 
      
 255 
     | 
    
         
            +
                while answers[:testing_tools].empty?
         
     | 
| 
      
 256 
     | 
    
         
            +
                  answers[:testing_tools] = prompt.multi_select("Choose your testing tools:", TESTING_TOOLS_CHOICES)
         
     | 
| 
      
 257 
     | 
    
         
            +
                end
         
     | 
| 
      
 258 
     | 
    
         
            +
             
     | 
| 
      
 259 
     | 
    
         
            +
                answers[:has_vcr] = prompt.yes?('Do you use VCR gem?')
         
     | 
| 
      
 260 
     | 
    
         
            +
             
     | 
| 
      
 261 
     | 
    
         
            +
                CI_PROVIDER_CHOICES = {
         
     | 
| 
      
 262 
     | 
    
         
            +
                  'https://circleci.com' => :circle,
         
     | 
| 
      
 263 
     | 
    
         
            +
                  'https://travis-ci.org' => :travis,
         
     | 
| 
      
 264 
     | 
    
         
            +
                  'https://buildkite.com' => :buildkite,
         
     | 
| 
      
 265 
     | 
    
         
            +
                  'https://semaphoreci.com' => :semaphore,
         
     | 
| 
      
 266 
     | 
    
         
            +
                  'https://snap-ci.com' => :snap_ci,
         
     | 
| 
      
 267 
     | 
    
         
            +
                  'other' => :other,
         
     | 
| 
      
 268 
     | 
    
         
            +
                }
         
     | 
| 
      
 269 
     | 
    
         
            +
                answers[:ci] = prompt.select("What is your CI provider?", CI_PROVIDER_CHOICES)
         
     | 
| 
      
 270 
     | 
    
         
            +
             
     | 
| 
      
 271 
     | 
    
         
            +
                puts
         
     | 
| 
      
 272 
     | 
    
         
            +
             
     | 
| 
      
 273 
     | 
    
         
            +
                # Instructions how to set up the gem
         
     | 
| 
      
 274 
     | 
    
         
            +
                puts
         
     | 
| 
      
 275 
     | 
    
         
            +
                puts
         
     | 
| 
      
 276 
     | 
    
         
            +
                prompt.say "###### Please follow below instructions to finish configuration ######", color: :green
         
     | 
| 
      
 277 
     | 
    
         
            +
                puts
         
     | 
| 
      
 278 
     | 
    
         
            +
             
     | 
| 
      
 279 
     | 
    
         
            +
                answers[:testing_tools].each do |tool|
         
     | 
| 
      
 280 
     | 
    
         
            +
                  send("step_for_#{tool}", prompt)
         
     | 
| 
      
 281 
     | 
    
         
            +
                  puts
         
     | 
| 
      
 282 
     | 
    
         
            +
                end
         
     | 
| 
      
 283 
     | 
    
         
            +
             
     | 
| 
      
 284 
     | 
    
         
            +
                if answers[:has_vcr]
         
     | 
| 
      
 285 
     | 
    
         
            +
                  step_for_vcr(prompt)
         
     | 
| 
      
 286 
     | 
    
         
            +
                  puts
         
     | 
| 
      
 287 
     | 
    
         
            +
                end
         
     | 
| 
      
 288 
     | 
    
         
            +
             
     | 
| 
      
 289 
     | 
    
         
            +
                send("step_for_ci_#{answers[:ci]}", prompt, answers)
         
     | 
| 
      
 290 
     | 
    
         
            +
             
     | 
| 
      
 291 
     | 
    
         
            +
                prompt.say "Now you are ready to use the gem!"
         
     | 
| 
      
 292 
     | 
    
         
            +
                prompt.say "Please push a new commit to repository so knapsack_pro gem will record time execution of your test suite."
         
     | 
| 
      
 293 
     | 
    
         
            +
                prompt.say "Your second tests run on CI will be parallelized with optimal test suite split."
         
     | 
| 
      
 294 
     | 
    
         
            +
                puts
         
     | 
| 
      
 295 
     | 
    
         
            +
                puts
         
     | 
| 
      
 296 
     | 
    
         
            +
                prompt.say "You can learn more about custom configuration and other features:"
         
     | 
| 
      
 297 
     | 
    
         
            +
                prompt.say "https://knapsackpro.com/features"
         
     | 
| 
      
 298 
     | 
    
         
            +
                prompt.say "https://github.com/KnapsackPro/knapsack_pro-ruby#table-of-contents"
         
     | 
| 
      
 299 
     | 
    
         
            +
                puts
         
     | 
| 
      
 300 
     | 
    
         
            +
                prompt.say "###### Please follow above instructions to finish configuration ######", color: :green
         
     | 
| 
      
 301 
     | 
    
         
            +
              end
         
     | 
| 
      
 302 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: knapsack_pro
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.13.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - ArturT
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2016-09- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2016-09-17 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: rake
         
     | 
| 
         @@ -38,6 +38,20 @@ dependencies: 
     | 
|
| 
       38 
38 
     | 
    
         
             
                - - ">="
         
     | 
| 
       39 
39 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       40 
40 
     | 
    
         
             
                    version: 0.1.0
         
     | 
| 
      
 41 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 42 
     | 
    
         
            +
              name: tty-prompt
         
     | 
| 
      
 43 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 44 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 45 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 46 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 47 
     | 
    
         
            +
                    version: '0.7'
         
     | 
| 
      
 48 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 49 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 50 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 51 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 52 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 53 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 54 
     | 
    
         
            +
                    version: '0.7'
         
     | 
| 
       41 
55 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       42 
56 
     | 
    
         
             
              name: bundler
         
     | 
| 
       43 
57 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -249,6 +263,7 @@ files: 
     | 
|
| 
       249 
263 
     | 
    
         
             
            - lib/knapsack_pro/version.rb
         
     | 
| 
       250 
264 
     | 
    
         
             
            - lib/tasks/cucumber.rake
         
     | 
| 
       251 
265 
     | 
    
         
             
            - lib/tasks/encrypted_test_file_names.rake
         
     | 
| 
      
 266 
     | 
    
         
            +
            - lib/tasks/install.rake
         
     | 
| 
       252 
267 
     | 
    
         
             
            - lib/tasks/minitest.rake
         
     | 
| 
       253 
268 
     | 
    
         
             
            - lib/tasks/rspec.rake
         
     | 
| 
       254 
269 
     | 
    
         
             
            - lib/tasks/salt.rake
         
     |