cli-kit 3.0.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 88690eeba1179ef8cb31ebd13b68d978e71f5c8a
4
- data.tar.gz: f63da3dc52f120f759241232fb64953deb0e0b3f
2
+ SHA256:
3
+ metadata.gz: 523252459712e507c4579e244e6330eb3e8a5d8c71334d4e41553903ab651cd6
4
+ data.tar.gz: 459cb0a684e2890718d0cffdd74cd8540bd91a1995dfe1db593df9a189da20d7
5
5
  SHA512:
6
- metadata.gz: abd4591db97ad44a9ebdf3645181ad90b443ad70d3849b3f247cf577cc394b04638646d14ab1cc18273d05a3a55cb1cdb3022ce9052792b025a7498c6d94a309
7
- data.tar.gz: 6c8571d319162adfeb0dd66c294fb225565c10e50fdcb70ab60dcd4bbd705131ec43916691c8ce160939348491ec453d5b1054a2504bc13594e76aecc20cdf01
6
+ metadata.gz: 8579924711573ce6338b52dc44c47ad40c12f925bbd6f3ad6cee5be9f44b2b4f315e6d272adc309788b0418ee6806567660f0386d7e91d9d09a524beeb0a4a1f
7
+ data.tar.gz: b5507292ba97fd6f13b83b6426e81e4500e0ef1480387164c936164b7593bf7daac98e39cbb835362f198c39e562f2d12adf92384365a9c99a7f0ed42c158a45
@@ -0,0 +1 @@
1
+ @Shopify/dev-infra
@@ -0,0 +1,10 @@
1
+ version: 2
2
+
3
+ updates:
4
+ - package-ecosystem: bundler
5
+ directory: "/"
6
+ schedule:
7
+ interval: weekly
8
+ time: "07:00"
9
+ timezone: America/Toronto
10
+ open-pull-requests-limit: 99
@@ -0,0 +1,2 @@
1
+ enabled:
2
+ - cla
@@ -0,0 +1,32 @@
1
+ name: Ruby
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ style:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - uses: actions/checkout@v2
10
+ - name: Set up Ruby
11
+ uses: ruby/setup-ruby@v1
12
+ with:
13
+ ruby-version: '2.7'
14
+ bundler-cache: true
15
+ - name: Check style
16
+ run: bundle exec rake style
17
+ test:
18
+ strategy:
19
+ matrix:
20
+ os: [macos-latest, ubuntu-latest, windows-latest]
21
+ ruby-version: ['2.6', '2.7']
22
+
23
+ runs-on: ${{ matrix.os }}
24
+ steps:
25
+ - uses: actions/checkout@v2
26
+ - name: Set up Ruby
27
+ uses: ruby/setup-ruby@v1
28
+ with:
29
+ ruby-version: ${{ matrix.ruby-version }}
30
+ bundler-cache: true
31
+ - name: Run tests
32
+ run: bundle exec rake test
data/.rubocop.yml CHANGED
@@ -1,22 +1,21 @@
1
- inherit_from:
2
- - http://shopify.github.io/ruby-style-guide/rubocop.yml
1
+ inherit_gem:
2
+ rubocop-shopify: rubocop-cli.yml
3
3
 
4
4
  AllCops:
5
- Exclude: [ 'gen/template/**/*' ]
6
- TargetRubyVersion: 2.3
5
+ Exclude:
6
+ - gen/template/**/*
7
+ - vendor/**/*
8
+ TargetRubyVersion: 2.5
7
9
 
8
- Style/FrozenStringLiteralComment:
9
- Enabled: false
10
-
11
- Shopify/RubocopComments:
12
- Enabled: false
10
+ Style/ClassAndModuleChildren:
11
+ Exclude:
12
+ - lib/cli/kit/support/test_helper.rb
13
13
 
14
- # This doesn't understand that <<~ doesn't exist in 2.0
15
- Layout/IndentHeredoc:
14
+ Style/FrozenStringLiteralComment:
16
15
  Enabled: false
17
16
 
18
17
  # This doesn't take into account retrying from an exception
19
- Lint/HandleExceptions:
18
+ Lint/SuppressedException:
20
19
  Enabled: false
21
20
 
22
21
  # allow String.new to create mutable strings
@@ -35,6 +34,5 @@ Style/RegexpLiteral:
35
34
  Style/MultilineBlockChain:
36
35
  Enabled: false
37
36
 
38
- # allow using names to be more expressive
39
- Performance/RedundantBlockCall:
40
- Enabled: false
37
+ Style/StringLiterals:
38
+ EnforcedStyle: single_quotes
data/Gemfile CHANGED
@@ -1,16 +1,17 @@
1
1
  # NOTE: These are development-only dependencies
2
- source "https://rubygems.org"
2
+ source 'https://rubygems.org'
3
3
 
4
4
  gemspec
5
5
 
6
6
  group :development, :test do
7
7
  gem 'rubocop'
8
+ gem 'rubocop-shopify'
8
9
  gem 'byebug'
9
10
  gem 'method_source'
10
11
  end
11
12
 
12
13
  group :test do
13
- gem 'mocha', require: false
14
+ gem 'mocha', '~> 1.13.0', require: false
14
15
  gem 'minitest', '>= 5.0.0', require: false
15
16
  gem 'minitest-reporters', require: false
16
17
  end
data/Gemfile.lock CHANGED
@@ -1,57 +1,62 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cli-kit (3.0.0)
5
- cli-ui (>= 1.1.0)
4
+ cli-kit (4.0.0)
5
+ cli-ui (>= 1.1.4)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
10
  ansi (1.5.0)
11
- ast (2.3.0)
12
- builder (3.2.3)
13
- byebug (9.0.6)
14
- cli-ui (1.1.0)
15
- metaclass (0.0.4)
16
- method_source (0.8.2)
17
- minitest (5.10.2)
18
- minitest-reporters (1.1.14)
11
+ ast (2.4.2)
12
+ builder (3.2.4)
13
+ byebug (11.1.3)
14
+ cli-ui (1.5.1)
15
+ method_source (1.0.0)
16
+ minitest (5.14.4)
17
+ minitest-reporters (1.4.3)
19
18
  ansi
20
19
  builder
21
20
  minitest (>= 5.0)
22
21
  ruby-progressbar
23
- mocha (1.2.1)
24
- metaclass (~> 0.0.1)
25
- parallel (1.11.2)
26
- parser (2.4.0.0)
27
- ast (~> 2.2)
28
- powerpack (0.1.1)
29
- rainbow (2.2.2)
30
- rake
31
- rake (10.5.0)
32
- rubocop (0.49.1)
22
+ mocha (1.13.0)
23
+ parallel (1.21.0)
24
+ parser (3.0.2.0)
25
+ ast (~> 2.4.1)
26
+ rainbow (3.0.0)
27
+ rake (13.0.6)
28
+ regexp_parser (2.1.1)
29
+ rexml (3.2.5)
30
+ rubocop (1.22.3)
33
31
  parallel (~> 1.10)
34
- parser (>= 2.3.3.1, < 3.0)
35
- powerpack (~> 0.1)
36
- rainbow (>= 1.99.1, < 3.0)
32
+ parser (>= 3.0.0.0)
33
+ rainbow (>= 2.2.2, < 4.0)
34
+ regexp_parser (>= 1.8, < 3.0)
35
+ rexml
36
+ rubocop-ast (>= 1.12.0, < 2.0)
37
37
  ruby-progressbar (~> 1.7)
38
- unicode-display_width (~> 1.0, >= 1.0.1)
39
- ruby-progressbar (1.8.1)
40
- unicode-display_width (1.3.0)
38
+ unicode-display_width (>= 1.4.0, < 3.0)
39
+ rubocop-ast (1.12.0)
40
+ parser (>= 3.0.1.1)
41
+ rubocop-shopify (2.3.0)
42
+ rubocop (~> 1.22)
43
+ ruby-progressbar (1.11.0)
44
+ unicode-display_width (2.1.0)
41
45
 
42
46
  PLATFORMS
43
47
  ruby
44
48
 
45
49
  DEPENDENCIES
46
- bundler (~> 1.15)
50
+ bundler (~> 2.1)
47
51
  byebug
48
52
  cli-kit!
49
53
  method_source
50
54
  minitest (>= 5.0.0)
51
55
  minitest-reporters
52
- mocha
53
- rake (~> 10.0)
56
+ mocha (~> 1.13.0)
57
+ rake (~> 13.0)
54
58
  rubocop
59
+ rubocop-shopify
55
60
 
56
61
  BUNDLED WITH
57
- 1.16.0
62
+ 2.2.24
data/README.md CHANGED
@@ -11,8 +11,106 @@
11
11
  to build a number of internal developer tools, along with
12
12
  [cli-ui](https://github.com/shopify/cli-ui).
13
13
 
14
- ## Example Usage
14
+ ## Getting Started
15
15
 
16
- You can see example usage [here](https://github.com/Shopify/cli-kit-example). We may one day build
17
- an application generator, as this framework paradigm requires a small amount of boilerplate. For
18
- now, the best way to get going is to use this example application as a starting point.
16
+ To begin creating your first `cli-kit` application, run:
17
+ ```bash
18
+ gem install cli-kit
19
+ cli-kit new myproject
20
+ ```
21
+
22
+ Where `myproject` is the name of the application you wish to create. Then, you will be prompted to
23
+ select how the project consumes `cli-kit` and `cli-ui`. The available options are:
24
+ - Vendor (faster execution, more difficult to update dependencies)
25
+ - Bundler (slower execution, easier dependency management)
26
+
27
+ You're now ready to write your very first `cli-kit` application!
28
+
29
+ ## How do `cli-kit` Applications Work?
30
+
31
+ The executable for your `cli-kit` app is stored in the "exe" directory. To execute the app, simply
32
+ run:
33
+ ```bash
34
+ ./exe/myproject
35
+ ```
36
+
37
+ ### Folder Structure
38
+ * `/exe/` - Location of the executables for your application.
39
+ * `/lib/` - Location of the resources for your app (modules, classes, helpers, etc).
40
+ * `myproject.rb` - This file is the starting point for where to look for all other files. It
41
+ configures autoload and autocall for the app.
42
+ * `myproject/` - Stores the various commands/entry points.
43
+ * `entry_point.rb` - This is the file that is first called from the executable. It handles
44
+ loading and commands.
45
+ * `commands.rb` - Registers the various commands that your application is able to handle.
46
+ * `commands/` - Stores Ruby files for each command (help, new, add, etc).
47
+
48
+ ## Adding a New Command to your App
49
+
50
+ ### Registering the Command
51
+
52
+ Let's say that you'd like your program to be able to handle a specific task, and you'd like to
53
+ _register_ a new handler for the command for that task, like `myproject add` to add 2 numbers, like
54
+ in a calculator app.
55
+ To do this, open `/lib/myproject/commands.rb`. Then, add a new line into the module, like this:
56
+ ```ruby
57
+ register :Add, 'add', 'myproject/commands/add'
58
+ ```
59
+
60
+ The format for this is `register :<CommandClass>, '<command-at-cli>', '<path/to/command.rb>'`
61
+
62
+ ### Creating the Command Action
63
+
64
+ The action for a specific command is stored in its own Ruby file, in the `/lib/myproject/commands/`
65
+ directory. Here is an example of the `add` command in our previous to-do app example:
66
+ ```ruby
67
+ require 'myproject'
68
+
69
+ module Myproject
70
+ module Commands
71
+ class Add < Myproject::Command
72
+ def call(args, _name)
73
+ # command action goes here
74
+ end
75
+
76
+ def self.help
77
+ # help or instructions go here
78
+ end
79
+ end
80
+ end
81
+ end
82
+
83
+ ```
84
+
85
+ The `call(args, _name)` method is what actually runs when the `myproject add` command is executed.
86
+
87
+ - **Note:** The `args` parameter represents all the arguments the user has specified.
88
+
89
+ Let's say that you are trying to compute the sum of 2 numbers that the user has specified as
90
+ arguments. For example:
91
+ ```ruby
92
+ def call(args, _name)
93
+ sum = args.map(&:to_i).inject(&:+)
94
+ puts sum
95
+ end
96
+ ```
97
+
98
+ ### Getting Help
99
+
100
+ Above, you'll notice that we also have a `self.help` method. This method is what runs when the user
101
+ has incorrectly used the command, or has requested help. For example:
102
+ ```ruby
103
+ def self.help
104
+ "Print the sum of 2 numbers.\nUsage: {{command:#{Myproject::TOOL_NAME} add}} 5 7"
105
+ end
106
+ ```
107
+
108
+ ## User Interfaces
109
+
110
+ `cli-kit` also features `cli-ui`, another gem from us here at Shopify, which allows for the use of
111
+ powerful command-line user interface elements. For more details on how to use `cli-ui`, visit the
112
+ [`cli-ui`](https://github.com/Shopify/cli-ui) repo.
113
+
114
+ ## Examples
115
+
116
+ - [A Simple To-Do App](https://github.com/Shopify/cli-kit-example)
data/Rakefile ADDED
@@ -0,0 +1,27 @@
1
+ $LOAD_PATH.unshift(File.expand_path('../lib', __FILE__))
2
+ require 'rake/testtask'
3
+ require 'rubocop/rake_task'
4
+ require 'bundler/gem_tasks'
5
+
6
+ TEST_ROOT = File.expand_path('../test', __FILE__)
7
+
8
+ Rake::TestTask.new do |t|
9
+ t.libs += ['test']
10
+ t.test_files = FileList[File.join(TEST_ROOT, '**', '*_test.rb')]
11
+ t.verbose = false
12
+ t.warning = false
13
+ end
14
+
15
+ RuboCop::RakeTask.new(:style) do |t|
16
+ t.options = ['--display-cop-names']
17
+ end
18
+
19
+ task :test_gen_bundler do
20
+ sh 'DEPS=bundler bin/test_gen'
21
+ end
22
+
23
+ task :test_gen_vendor do
24
+ sh 'DEPS=vendor bin/test_gen'
25
+ end
26
+
27
+ task(default: [:test, :style, :test_gen_bundler, :test_gen_vendor])
data/TODO.md ADDED
@@ -0,0 +1,5 @@
1
+ * Build a help system
2
+ * Build a tabular data formatter
3
+ * Suppress colour by default when printing to non-TTY
4
+ * Do frames in a way that works on BK when running on BK
5
+
data/bin/console CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "cli/kit"
3
+ require 'bundler/setup'
4
+ require 'cli/kit'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require "cli/kit"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start(__FILE__)
data/bin/test_gen ADDED
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ # Make sure we're in the cli kit directory
5
+ CURR_DIR=$(dirname "$0")
6
+ cd $CURR_DIR
7
+ cd ../
8
+
9
+ # Clean up
10
+ function finish {
11
+ cd $CURR_DIR
12
+ cd ../../
13
+ rm -rf myapp
14
+ }
15
+ trap finish EXIT
16
+
17
+ # Generate app and move up a level to be at the same level as cli-kit
18
+ bundle exec ruby exe/cli-kit new myapp
19
+ mv myapp ../
20
+ cd ../myapp
21
+
22
+ # Test
23
+ if [[ $DEPS == 'bundler' ]]; then
24
+ bundle install
25
+ fi
26
+ bin/testunit
27
+
28
+ if [[ $DEPS == 'vendor' ]]; then
29
+ git clone https://github.com/Shopify/cli-ui.git ../cli-ui
30
+ bin/update-deps
31
+ fi
data/bin/testunit CHANGED
@@ -9,12 +9,12 @@ CLI_TEST_ROOT = root + '/test'
9
9
  $LOAD_PATH.unshift(CLI_TEST_ROOT)
10
10
 
11
11
  def test_files
12
- Dir.glob(CLI_TEST_ROOT + "/**/*_test.rb")
12
+ Dir.glob(CLI_TEST_ROOT + '/**/*_test.rb')
13
13
  end
14
14
 
15
15
  if ARGV.empty?
16
16
  test_files.each { |f| require(f) }
17
- exit 0
17
+ exit(0)
18
18
  end
19
19
 
20
20
  # A list of files is presumed to be specified
data/cli-kit.gemspec CHANGED
@@ -1,4 +1,5 @@
1
1
  # coding: utf-8
2
+
2
3
  lib = File.expand_path('../lib', __FILE__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'cli/kit/version'
@@ -6,24 +7,24 @@ require 'cli/kit/version'
6
7
  Gem::Specification.new do |spec|
7
8
  spec.name = 'cli-kit'
8
9
  spec.version = CLI::Kit::VERSION
9
- spec.authors = ['Burke Libbey', 'Julian Nadeau', 'Lisa Ugray']
10
- spec.email = ['burke.libbey@shopify.com', 'julian.nadeau@shopify.com', 'lisa.ugray@shopify.com']
10
+ spec.authors = ['Burke Libbey', 'Aaron Olson', 'Lisa Ugray']
11
+ spec.email = ['burke.libbey@shopify.com', 'aaron.olson@shopify.com', 'lisa.ugray@shopify.com']
11
12
 
12
13
  spec.summary = 'Terminal UI framework extensions'
13
14
  spec.description = 'Terminal UI framework extensions'
14
15
  spec.homepage = 'https://github.com/shopify/cli-kit'
15
16
  spec.license = 'MIT'
16
17
 
17
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
+ spec.files = %x(git ls-files -z).split("\x0").reject do |f|
18
19
  f.match(%r{^(test|spec|features)/})
19
20
  end
20
21
  spec.bindir = 'exe'
21
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
23
  spec.require_paths = ['lib']
23
24
 
24
- spec.add_runtime_dependency 'cli-ui', '>= 1.1.0'
25
+ spec.add_runtime_dependency('cli-ui', '>= 1.1.4')
25
26
 
26
- spec.add_development_dependency 'bundler', '~> 1.15'
27
- spec.add_development_dependency 'rake', '~> 10.0'
28
- spec.add_development_dependency 'minitest', '~> 5.0'
27
+ spec.add_development_dependency('bundler', '~> 2.1')
28
+ spec.add_development_dependency('minitest', '~> 5.0')
29
+ spec.add_development_dependency('rake', '~> 13.0')
29
30
  end
data/dev.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  up:
2
- - ruby: 2.3.3
2
+ - ruby: 2.7.0
3
3
  - bundler
4
4
 
5
5
  commands:
@@ -0,0 +1,21 @@
1
+ # Examples
2
+
3
+ **Note: If you're looking to bootstrap a new app, consider running `cli-kit new` instead of
4
+ copy/pasting one of these.**
5
+
6
+ ## Full Example
7
+
8
+ The full example lives in its own repository at https://github.com/Shopify/cli-kit-example.
9
+ This is quite similar to the output of `cli-kit new`, but fleshed out a little bit more with
10
+ a couple of commands.
11
+
12
+ ## Single-File starting point
13
+
14
+ Maybe it appeals to you to start from a single file and grow, rather than generating framework.
15
+ Check out the [`examples/single-file`](single-file) example.
16
+
17
+ ## Minimal example
18
+
19
+ This example demonstrates the core of what `cli-kit` does very simply, but in general, shouldn't be
20
+ used for anything other than quick hacks. It leaves out a few best practices that help CLI apps
21
+ scale gracefully. Find it at [`examples/minimal`](minimal).
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'cli/ui'
4
+ require 'cli/kit'
5
+
6
+ CLI::UI::StdoutRouter.enable
7
+
8
+ include(CLI::Kit)
9
+
10
+ registry = CommandRegistry.new(default: 'hello', contextual_resolver: nil)
11
+ registry.add(Class.new(BaseCommand) do
12
+ def call(_args, _name)
13
+ puts 'hello, world!'
14
+ end
15
+ end, 'hello')
16
+
17
+ executor = Executor.new(log_file: '/tmp/example.log')
18
+ error_handler = ErrorHandler.new(log_file: '/tmp/example.log', exception_reporter: nil)
19
+ resolver = Resolver.new(tool_name: 'example', command_registry: registry)
20
+ entry_point = ->(args) { executor.call(*resolver.call(args)) }
21
+
22
+ exit(error_handler.call { entry_point.call(ARGV.dup) }) if __FILE__ == $PROGRAM_NAME
@@ -0,0 +1,71 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'cli/ui'
4
+ require 'cli/kit'
5
+
6
+ CLI::UI::StdoutRouter.enable
7
+
8
+ module Example
9
+ extend CLI::Kit::Autocall
10
+
11
+ TOOL_NAME = 'example'
12
+ ROOT = File.expand_path('../..', __FILE__)
13
+ LOG_FILE = '/tmp/example.log'
14
+
15
+ module Commands
16
+ extend CLI::Kit::Autocall
17
+
18
+ Registry = CLI::Kit::CommandRegistry.new(
19
+ default: 'hello',
20
+ contextual_resolver: nil
21
+ )
22
+
23
+ def self.register(const, cmd, path = nil, &block)
24
+ path ? autoload(const, path) : autocall(const, &block)
25
+ Registry.add(->() { const_get(const) }, cmd)
26
+ end
27
+
28
+ # register(:Hello, 'hello', 'a/b/hello')
29
+
30
+ register(:Hello, 'hello') do
31
+ Class.new(Example::Command) do
32
+ def call(_args, _name)
33
+ puts 'hello, world!'
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ autocall(:EntryPoint) do
40
+ Module.new do
41
+ def self.call(args)
42
+ cmd, command_name, args = Example::Resolver.call(args)
43
+ Example::Executor.call(cmd, command_name, args)
44
+ end
45
+ end
46
+ end
47
+
48
+ autocall(:Config) { CLI::Kit::Config.new(tool_name: TOOL_NAME) }
49
+ autocall(:Command) { CLI::Kit::BaseCommand }
50
+
51
+ autocall(:Executor) { CLI::Kit::Executor.new(log_file: LOG_FILE) }
52
+ autocall(:Resolver) do
53
+ CLI::Kit::Resolver.new(
54
+ tool_name: TOOL_NAME,
55
+ command_registry: Example::Commands::Registry
56
+ )
57
+ end
58
+
59
+ autocall(:ErrorHandler) do
60
+ CLI::Kit::ErrorHandler.new(
61
+ log_file: LOG_FILE,
62
+ exception_reporter: nil
63
+ )
64
+ end
65
+ end
66
+
67
+ if __FILE__ == $PROGRAM_NAME
68
+ exit(Example::ErrorHandler.call do
69
+ Example::EntryPoint.call(ARGV.dup)
70
+ end)
71
+ end
@@ -0,0 +1 @@
1
+ Full example at https://github.com/Shopify/cli-kit-example
@@ -4,15 +4,15 @@ module Gen
4
4
  module Commands
5
5
  class Help < Gen::Command
6
6
  def call(_args, _name)
7
- puts CLI::UI.fmt("{{bold:Available commands}}")
8
- puts ""
7
+ puts CLI::UI.fmt('{{bold:Available commands}}')
8
+ puts ''
9
9
 
10
10
  Gen::Commands::Registry.resolved_commands.each do |name, klass|
11
11
  puts CLI::UI.fmt("{{command:#{Gen::TOOL_NAME} #{name}}}")
12
- if help = klass.help
12
+ if klass.respond_to?(:help) && (help = klass.help)
13
13
  puts CLI::UI.fmt(help)
14
14
  end
15
- puts ""
15
+ puts ''
16
16
  end
17
17
  end
18
18
  end
@@ -18,21 +18,20 @@ module Gen
18
18
  # false -> delete file
19
19
  # string -> rename file before applying template substitutions
20
20
  VENDOR_TRANSLATIONS = {
21
- 'Gemfile' => false,
22
- 'exe/__app__-gems' => false,
21
+ 'Gemfile' => false,
22
+ 'exe/__app__-gems' => false,
23
23
  'exe/__app__-vendor' => 'exe/__app__',
24
- 'dev-gems.yml' => false,
25
- 'dev-vendor.yml' => 'dev.yml',
24
+ 'dev-gems.yml' => false,
25
+ 'dev-vendor.yml' => 'dev.yml',
26
26
  }.freeze
27
27
  private_constant :VENDOR_TRANSLATIONS
28
28
 
29
29
  BUNDLER_TRANSLATIONS = {
30
- 'bin' => false,
31
- 'bin/update-deps' => false,
32
- 'exe/__app__-gems' => 'exe/__app__',
30
+ 'bin/update-deps' => false,
31
+ 'exe/__app__-gems' => 'exe/__app__',
33
32
  'exe/__app__-vendor' => false,
34
- 'dev-gems.yml' => 'dev.yml',
35
- 'dev-vendor.yml' => false,
33
+ 'dev-gems.yml' => 'dev.yml',
34
+ 'dev-vendor.yml' => false,
36
35
  }.freeze
37
36
  private_constant :BUNDLER_TRANSLATIONS
38
37
 
@@ -59,6 +58,9 @@ module Gen
59
58
  private
60
59
 
61
60
  def ask_vendor?
61
+ return true if ENV['DEPS'] == 'vendor'
62
+ return false if ENV['DEPS'] == 'bundler'
63
+
62
64
  vendor = nil
63
65
  CLI::UI::Frame.open('Configuration') do
64
66
  q = 'How would you like the application to consume {{command:cli-kit}} and {{command:cli-ui}}?'
@@ -114,7 +116,7 @@ module Gen
114
116
  out, stat = Open3.capture2e('git', '-C', dir, 'clone', "https://github.com/shopify/#{repo}")
115
117
  unless stat.success?
116
118
  STDERR.puts(out)
117
- error("git clone failed")
119
+ error('git clone failed')
118
120
  end
119
121
  end
120
122