planter-cli 3.0.1 → 3.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.gitmodules +3 -0
  4. data/.rubocop.yml +1 -2
  5. data/CHANGELOG.md +24 -0
  6. data/README.md +85 -4
  7. data/bin/plant +1 -1
  8. data/docker/Dockerfile +2 -4
  9. data/docker/Dockerfile-2.6 +4 -5
  10. data/docker/Dockerfile-2.7 +4 -5
  11. data/docker/Dockerfile-3.0 +4 -4
  12. data/docker/Dockerfile-3.3 +12 -0
  13. data/docker/bash_profile +2 -1
  14. data/docker/sources.list +11 -0
  15. data/lib/planter/array.rb +56 -1
  16. data/lib/planter/filelist.rb +5 -4
  17. data/lib/planter/hash.rb +24 -0
  18. data/lib/planter/plant.rb +6 -4
  19. data/lib/planter/prompt.rb +56 -16
  20. data/lib/planter/string.rb +143 -5
  21. data/lib/planter/tag.rb +39 -2
  22. data/lib/planter/version.rb +1 -1
  23. data/lib/planter.rb +30 -17
  24. data/lib/tty-spinner/.editorconfig +9 -0
  25. data/lib/tty-spinner/.github/FUNDING.yml +1 -0
  26. data/lib/tty-spinner/.github/ISSUE_TEMPLATE/BUG_REPORT.md +31 -0
  27. data/lib/tty-spinner/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md +23 -0
  28. data/lib/tty-spinner/.github/ISSUE_TEMPLATE/config.yml +5 -0
  29. data/lib/tty-spinner/.github/PULL_REQUEST_TEMPLATE.md +19 -0
  30. data/lib/tty-spinner/.github/workflows/ci.yml +59 -0
  31. data/lib/tty-spinner/.gitignore +14 -0
  32. data/lib/tty-spinner/.rspec +2 -0
  33. data/lib/tty-spinner/.rubocop.yml +78 -0
  34. data/lib/tty-spinner/CHANGELOG.md +151 -0
  35. data/lib/tty-spinner/CODE_OF_CONDUCT.md +132 -0
  36. data/lib/tty-spinner/Gemfile +17 -0
  37. data/lib/tty-spinner/LICENSE.txt +22 -0
  38. data/lib/tty-spinner/README.md +581 -0
  39. data/lib/tty-spinner/Rakefile +10 -0
  40. data/lib/tty-spinner/appveyor.yml +33 -0
  41. data/lib/tty-spinner/bin/console +14 -0
  42. data/lib/tty-spinner/bin/setup +8 -0
  43. data/lib/tty-spinner/demo.gif +0 -0
  44. data/lib/tty-spinner/examples/auto_spin.rb +10 -0
  45. data/lib/tty-spinner/examples/basic.rb +10 -0
  46. data/lib/tty-spinner/examples/clear.rb +11 -0
  47. data/lib/tty-spinner/examples/color.rb +14 -0
  48. data/lib/tty-spinner/examples/error.rb +11 -0
  49. data/lib/tty-spinner/examples/formats.rb +13 -0
  50. data/lib/tty-spinner/examples/hide_cursor.rb +14 -0
  51. data/lib/tty-spinner/examples/log.rb +13 -0
  52. data/lib/tty-spinner/examples/multi/basic.rb +15 -0
  53. data/lib/tty-spinner/examples/multi/basic_top_level.rb +15 -0
  54. data/lib/tty-spinner/examples/multi/custom_style.rb +28 -0
  55. data/lib/tty-spinner/examples/multi/files.rb +16 -0
  56. data/lib/tty-spinner/examples/multi/jobs.rb +11 -0
  57. data/lib/tty-spinner/examples/multi/multi.rb +19 -0
  58. data/lib/tty-spinner/examples/multi/multi_top_level.rb +20 -0
  59. data/lib/tty-spinner/examples/multi/pause.rb +28 -0
  60. data/lib/tty-spinner/examples/multi/threaded.rb +30 -0
  61. data/lib/tty-spinner/examples/pause.rb +24 -0
  62. data/lib/tty-spinner/examples/run.rb +20 -0
  63. data/lib/tty-spinner/examples/success.rb +11 -0
  64. data/lib/tty-spinner/examples/threaded.rb +13 -0
  65. data/lib/tty-spinner/examples/update.rb +13 -0
  66. data/lib/tty-spinner/lib/tty/spinner/formats.rb +274 -0
  67. data/lib/tty-spinner/lib/tty/spinner/multi.rb +352 -0
  68. data/lib/tty-spinner/lib/tty/spinner/version.rb +7 -0
  69. data/lib/tty-spinner/lib/tty/spinner.rb +604 -0
  70. data/lib/tty-spinner/lib/tty-spinner.rb +2 -0
  71. data/lib/tty-spinner/spec/spec_helper.rb +52 -0
  72. data/lib/tty-spinner/spec/unit/auto_spin_spec.rb +25 -0
  73. data/lib/tty-spinner/spec/unit/clear_spec.rb +16 -0
  74. data/lib/tty-spinner/spec/unit/error_spec.rb +53 -0
  75. data/lib/tty-spinner/spec/unit/events_spec.rb +35 -0
  76. data/lib/tty-spinner/spec/unit/formats_spec.rb +9 -0
  77. data/lib/tty-spinner/spec/unit/frames_spec.rb +31 -0
  78. data/lib/tty-spinner/spec/unit/hide_cursor_spec.rb +51 -0
  79. data/lib/tty-spinner/spec/unit/job_spec.rb +12 -0
  80. data/lib/tty-spinner/spec/unit/join_spec.rb +10 -0
  81. data/lib/tty-spinner/spec/unit/log_spec.rb +60 -0
  82. data/lib/tty-spinner/spec/unit/multi/auto_spin_spec.rb +32 -0
  83. data/lib/tty-spinner/spec/unit/multi/error_spec.rb +107 -0
  84. data/lib/tty-spinner/spec/unit/multi/line_inset_spec.rb +57 -0
  85. data/lib/tty-spinner/spec/unit/multi/on_spec.rb +11 -0
  86. data/lib/tty-spinner/spec/unit/multi/register_spec.rb +46 -0
  87. data/lib/tty-spinner/spec/unit/multi/spin_spec.rb +101 -0
  88. data/lib/tty-spinner/spec/unit/multi/stop_spec.rb +95 -0
  89. data/lib/tty-spinner/spec/unit/multi/success_spec.rb +108 -0
  90. data/lib/tty-spinner/spec/unit/new_spec.rb +25 -0
  91. data/lib/tty-spinner/spec/unit/pause_spec.rb +43 -0
  92. data/lib/tty-spinner/spec/unit/reset_spec.rb +19 -0
  93. data/lib/tty-spinner/spec/unit/run_spec.rb +30 -0
  94. data/lib/tty-spinner/spec/unit/spin_spec.rb +117 -0
  95. data/lib/tty-spinner/spec/unit/stop_spec.rb +88 -0
  96. data/lib/tty-spinner/spec/unit/success_spec.rb +53 -0
  97. data/lib/tty-spinner/spec/unit/tty_spec.rb +8 -0
  98. data/lib/tty-spinner/spec/unit/update_spec.rb +85 -0
  99. data/lib/tty-spinner/tasks/console.rake +11 -0
  100. data/lib/tty-spinner/tasks/coverage.rake +11 -0
  101. data/lib/tty-spinner/tasks/spec.rake +29 -0
  102. data/lib/tty-spinner/tty-spinner.gemspec +36 -0
  103. data/scripts/runtests.sh +1 -1
  104. data/spec/cli_spec.rb +27 -0
  105. data/spec/planter/string_spec.rb +31 -4
  106. data/spec/spec_helper.rb +26 -0
  107. data/spec/templates/test/_planter.yml +3 -6
  108. data/src/_README.md +85 -4
  109. metadata +86 -2
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ begin
4
+ require "rspec/core/rake_task"
5
+
6
+ desc "Run all specs"
7
+ RSpec::Core::RakeTask.new(:spec) do |task|
8
+ task.pattern = "spec/{unit,integration}{,/*/**}/*_spec.rb"
9
+ end
10
+
11
+ namespace :spec do
12
+ desc "Run unit specs"
13
+ RSpec::Core::RakeTask.new(:unit) do |task|
14
+ task.pattern = "spec/unit{,/*/**}/*_spec.rb"
15
+ end
16
+
17
+ desc "Run integration specs"
18
+ RSpec::Core::RakeTask.new(:integration) do |task|
19
+ task.pattern = "spec/integration{,/*/**}/*_spec.rb"
20
+ end
21
+ end
22
+
23
+ rescue LoadError
24
+ %w[spec spec:unit spec:integration].each do |name|
25
+ task name do
26
+ $stderr.puts "In order to run #{name}, do `gem install rspec`"
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/tty/spinner/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "tty-spinner"
7
+ spec.version = TTY::Spinner::VERSION
8
+ spec.authors = ["Piotr Murach"]
9
+ spec.email = ["piotr@piotrmurach.com"]
10
+ spec.summary = %q{A terminal spinner for tasks that have non-deterministic time frame.}
11
+ spec.description = %q{A terminal spinner for tasks that have non-deterministic time frame.}
12
+ spec.homepage = "https://ttytoolkit.org"
13
+ spec.license = "MIT"
14
+ if spec.respond_to?(:metadata=)
15
+ spec.metadata = {
16
+ "allowed_push_host" => "https://rubygems.org",
17
+ "bug_tracker_uri" => "https://github.com/piotrmurach/tty-spinner/issues",
18
+ "changelog_uri" => "https://github.com/piotrmurach/tty-spinner/blob/master/CHANGELOG.md",
19
+ "documentation_uri" => "https://www.rubydoc.info/gems/tty-spinner",
20
+ "funding_uri" => "https://github.com/sponsors/piotrmurach",
21
+ "homepage_uri" => spec.homepage,
22
+ "rubygems_mfa_required" => "true",
23
+ "source_code_uri" => "https://github.com/piotrmurach/tty-spinner"
24
+ }
25
+ end
26
+ spec.files = Dir["lib/**/*"]
27
+ spec.extra_rdoc_files = Dir["README.md", "CHANGELOG.md", "LICENSE.txt"]
28
+ spec.bindir = "exe"
29
+ spec.require_paths = ["lib"]
30
+ spec.required_ruby_version = ">= 2.0.0"
31
+
32
+ spec.add_dependency "tty-cursor", "~> 0.7"
33
+
34
+ spec.add_development_dependency "rake"
35
+ spec.add_development_dependency "rspec", ">= 3.0"
36
+ end
data/scripts/runtests.sh CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/bin/bash
2
2
 
3
3
  cd /planter
4
- bundle install
4
+ bundle update
5
5
  rake test
data/spec/cli_spec.rb ADDED
@@ -0,0 +1,27 @@
1
+ require 'open3'
2
+ require 'spec_helper'
3
+
4
+ include PlanterHelpers
5
+
6
+ describe 'CLI' do
7
+ TEST_DIR = File.join(File.dirname(__FILE__), 'test')
8
+
9
+ before do
10
+ FileUtils.rm_rf(TEST_DIR)
11
+ FileUtils.mkdir_p(TEST_DIR)
12
+ end
13
+
14
+ after do
15
+ FileUtils.rm_rf(TEST_DIR)
16
+ end
17
+
18
+ it 'displays help message' do
19
+ output, stderr, status = planter('--help')
20
+ expect(output).not_to be_empty
21
+ end
22
+
23
+ it 'plants a new project' do
24
+ output, stderr, status = planter('--defaults', "--in=#{TEST_DIR}", 'test')
25
+ expect(File.exist?(File.join(TEST_DIR, 'bollocks_and_beans.rtf'))).to be true
26
+ end
27
+ end
@@ -114,6 +114,33 @@ describe ::String do
114
114
  end
115
115
  end
116
116
 
117
+ describe '.apply_logic' do
118
+ it 'applies a single logic replacement' do
119
+ template = 'Hello %%if language == ruby%%World%%else%%There%%end%%!'
120
+ logic = { language: 'ruby' }
121
+ expect(template.apply_logic(logic)).to eq 'Hello World!'
122
+ end
123
+
124
+ it 'handles quotes in logic' do
125
+ template = 'Hello %%if language == "ruby"%%World%%else%%There%%end%%!'
126
+ logic = { language: 'ruby' }
127
+ expect(template.apply_logic(logic)).to eq 'Hello World!'
128
+ end
129
+
130
+ it 'handles no logic replacements' do
131
+ template = 'Hello, World!'
132
+ logic = {}
133
+ expect(template.apply_logic(logic)).to eq 'Hello, World!'
134
+ end
135
+
136
+ it 'Operates in place' do
137
+ template = 'Hello %%if language == "ruby"%%World%%else%%There%%end%%!'
138
+ logic = { language: 'ruby' }
139
+ template.apply_logic!(logic)
140
+ expect(template).to eq 'Hello World!'
141
+ end
142
+ end
143
+
117
144
  describe '.apply_regexes' do
118
145
  it 'applies a single regex replacement' do
119
146
  template = 'Hello, World!'
@@ -171,15 +198,15 @@ describe ::String do
171
198
  end
172
199
 
173
200
  it 'normalizes a multiline type' do
174
- expect("multi".normalize_type.to_s).to eq "multiline"
201
+ expect("para".normalize_type.to_s).to eq "multiline"
175
202
  end
176
203
 
177
204
  it 'normalizes a class type' do
178
- expect("c".normalize_type.to_s).to eq "class"
205
+ expect("cl".normalize_type.to_s).to eq "class"
179
206
  end
180
207
 
181
- it 'normalizes a module type' do
182
- expect("m".normalize_type.to_s).to eq "module"
208
+ it 'normalizes a multiple choice type' do
209
+ expect("choice".normalize_type.to_s).to eq "choice"
183
210
  end
184
211
  end
185
212
 
data/spec/spec_helper.rb CHANGED
@@ -24,3 +24,29 @@ RSpec.configure do |c|
24
24
  end
25
25
  c.add_formatter 'd'
26
26
  end
27
+
28
+ require 'open3'
29
+ require 'time'
30
+
31
+ module PlanterHelpers
32
+ PLANTER_EXEC = File.join(File.dirname(__FILE__), '..', 'exe', 'plant')
33
+
34
+ def planter_with_env(env, *args, stdin: nil)
35
+ pread(env, 'bundle', 'exec', PLANTER_EXEC, "--base-dir=#{File.dirname(__FILE__)}", *args, stdin: stdin)
36
+ end
37
+
38
+ def pread(env, *cmd, stdin: nil)
39
+ out, err, status = Open3.capture3(env, *cmd, stdin_data: stdin)
40
+ unless status.success?
41
+ raise [
42
+ "Error (#{status}): #{cmd.inspect} failed", "STDOUT:", out.inspect, "STDERR:", err.inspect
43
+ ].join("\n")
44
+ end
45
+
46
+ [out, err, status]
47
+ end
48
+
49
+ def planter(*args, stdin: nil)
50
+ planter_with_env({}, *args, stdin: stdin)
51
+ end
52
+ end
@@ -1,12 +1,9 @@
1
1
  ---
2
2
  variables:
3
- - key: var_key
3
+ - key: project
4
4
  prompt: CLI Prompt
5
- type: "[string, float, integer, number, date]"
6
- value: "(optional, for date type can be today, time, now, etc., empty to prompt)"
7
- default: "(optional default value, leave empty or remove key for no default)"
8
- min: "(optional, for number type set a minimum value)"
9
- max: "(optional, for number type set a maximum value)"
5
+ type: string
6
+ default: "bollocks and beans"
10
7
  git_init: false
11
8
  files:
12
9
  "*.tmp": ignore
data/src/_README.md CHANGED
@@ -32,9 +32,9 @@ git_init: false
32
32
  preserve_tags: true
33
33
  ```
34
34
 
35
- ### Scripts.
35
+ ### Scripts
36
36
 
37
- Scripts for execution after planting can be stored in `~/.config/planter/scripts` and referenced by filename only. Alternatively, scripts may be stored within a template in a `_scritps` subfolder.
37
+ Scripts for execution after planting can be stored in `~/.config/planter/scripts` and referenced by filename only. Alternatively, scripts may be stored within a template in a `_scripts` subfolder.
38
38
 
39
39
  Scripts can be executable files in any language, and receive the template directory and the planted directory as arguments $1 and $2.
40
40
 
@@ -52,7 +52,7 @@ First, there's a `variables` section that defines variables used in the template
52
52
  variables:
53
53
  - key: var_key
54
54
  prompt: Prompt text
55
- type: string # [string,multiline,float,integer,number,date] defaults to string
55
+ type: string # [string,paragraph,float,integer,number,date,choice] defaults to string
56
56
  # value: (force value, string can include %%variables%% and regexes will be replaced. For date type can be today, time, now, etc.)
57
57
  default: Untitled
58
58
  min: 1
@@ -69,6 +69,85 @@ repo: # If a repository URL is provided, it will be pulled and duplicated instea
69
69
 
70
70
  In a template you can add a default value for a placholder by adding `%default value` to it. For example, `%%project%Default Project%%` will set the placeholder to `Default Project` if the variable value matches the default value in the configuration. This allows you to accept the default on the command line but have a different value inserted in the template. To use another variable in its place, use `$KEY` in the placeholder, e.g. `%%project%$title%%` will replace the `project` key with the value of `title` if the default is selected. Modifiers can be used on either side of the `%`, e.g. `%%project%$title:snake%%`.
71
71
 
72
+ #### Multiple choice type
73
+
74
+ If the `type` is set to `choice`, then the key `choices` can contain a hash or array of choices. The key that accepts the choice should be surrounded with parenthesis (required for each choice).
75
+
76
+ If a Hash is defined, each choice can have a result string:
77
+
78
+ ```yaml
79
+ variables:
80
+ - key: shebang
81
+ prompt: Shebang line
82
+ type: choice
83
+ default: r
84
+ choices:
85
+ (r)uby: "#! /usr/bin/env ruby"
86
+ (j)avascript: "#! /usr/bin/env node"
87
+ (p)ython: "#! /usr/bin/env python"
88
+ (b)ash: "#! /bin/bash"
89
+ (z)sh: "#! /bin/zsh"
90
+ ```
91
+
92
+ If an array is defined, the string of the choice will also be its result:
93
+
94
+ ```yaml
95
+ variables:
96
+ - key: language
97
+ prompt: Programming language
98
+ type: choice
99
+ default: 1
100
+ choices:
101
+ - 1. ruby
102
+ - 1. javascript
103
+ - 1. python
104
+ - 1. bash
105
+ - 1. zsh
106
+ ```
107
+
108
+ If the choice starts with a number (as above), then a numeric list will be generated and typing the associated index number will accept that choice. Numeric lists are automatically numbered, so the preceding digit doesn't matter, as long as it's a digit. In this case a default can be defined with an integer for its placement in the list (starting with 1), and parenthesis aren't required.
109
+
110
+ #### If/then logic
111
+
112
+ A template can use if/then logic, which is useful with multiple choice types. It can be applied to any type, though.
113
+
114
+ The format for if/then logic is:
115
+
116
+ ```
117
+ %%if KEY OPERATOR VALUE%%
118
+ content
119
+ %%else if KEY OPERATOR VALUE2%%
120
+ content 2
121
+ %%else%%
122
+ content 3
123
+ %%endif%%
124
+ ```
125
+
126
+ There should be no spaces around the comparison, e.g. `%% if language == javascript %%` won't work. The block must start with an `if` statement and end with `%%endif%%` or `%%end%%`. The `%%else%%` statement is optional -- if it doesn't exist then the entire block will be removed if no conditions are met.
127
+
128
+ The key should be an existing key defined in `variables`. The operator can be any of:
129
+
130
+ - `==` or `=` (equals)
131
+ - `=~` (matches regex)
132
+ - `*=` (contains)
133
+ - `^=` (starts with)
134
+ - `$=` (ends with)
135
+ - `>` (greater than)
136
+ - `>=` (greater than or equal)
137
+ - `<` (less than)
138
+ - `<=` (less than or equal)
139
+
140
+ The value after the operator doesn't need to be quoted, anything after the operator will be compared to the value of the key.
141
+
142
+ Logic can be used on multiple lines like the example above, or on a single line (useful for filenames):
143
+
144
+ ```
145
+ %%project%%.%%if language == javascript%%js%%else if language == ruby%%rb%%else%%sh%%endif%%
146
+ ```
147
+
148
+ Content within if/else blocks can contain variables.
149
+
150
+
72
151
  ### File-specific handling
73
152
 
74
153
  A `files` dictionary can specify how to handle specific files. Options are `copy`, `overwrite`, `merge`, or `ask`. The key for each entry is a filename or glob that matches the source filename (accounting for template variables if applicable):
@@ -79,6 +158,8 @@ files:
79
158
  "%%title%%.md": overwrite
80
159
  ```
81
160
 
161
+ Filenames can include wildcards (`*`, `?`), and Bash-ish globbing (`[0-9]`, `[a-z]`, `{one,two,three}`).
162
+
82
163
  If `merge` is specified, then the source file is scanned for merge comments and those are merged if they don't exist in the copied/existing file. If no merge comments are defined, then the entire contents of the source file are appended to the destination file (unless the file already matches the source). Merge comments start with `merge` and end with `/merge` and can have any comment syntax preceding them, for example:
83
164
 
84
165
  ```
@@ -109,7 +190,7 @@ replacements:
109
190
  "(main|app)\.js": "%%script:lower%%.js"
110
191
  ```
111
192
 
112
- Replacements are performed on both file/directory names and file contents.
193
+ Replacements are performed on both file/directory names and file contents. This is especially handy when the source of the plant is a Git repo, allowing the replacement of elements without having to create %%templated%% filenames and contents.
113
194
 
114
195
  ### Finder Tags
115
196
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: planter-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brett Terpstra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-31 00:00:00.000000000 Z
11
+ date: 2024-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bump
@@ -342,6 +342,7 @@ extra_rdoc_files: []
342
342
  files:
343
343
  - ".editorconfig"
344
344
  - ".gitignore"
345
+ - ".gitmodules"
345
346
  - ".irbrc"
346
347
  - ".rspec"
347
348
  - ".rubocop.yml"
@@ -359,8 +360,10 @@ files:
359
360
  - docker/Dockerfile-2.6
360
361
  - docker/Dockerfile-2.7
361
362
  - docker/Dockerfile-3.0
363
+ - docker/Dockerfile-3.3
362
364
  - docker/bash_profile
363
365
  - docker/inputrc
366
+ - docker/sources.list
364
367
  - lib/.rubocop.yml
365
368
  - lib/planter.rb
366
369
  - lib/planter/array.rb
@@ -377,10 +380,90 @@ files:
377
380
  - lib/planter/symbol.rb
378
381
  - lib/planter/tag.rb
379
382
  - lib/planter/version.rb
383
+ - lib/tty-spinner/.editorconfig
384
+ - lib/tty-spinner/.github/FUNDING.yml
385
+ - lib/tty-spinner/.github/ISSUE_TEMPLATE/BUG_REPORT.md
386
+ - lib/tty-spinner/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md
387
+ - lib/tty-spinner/.github/ISSUE_TEMPLATE/config.yml
388
+ - lib/tty-spinner/.github/PULL_REQUEST_TEMPLATE.md
389
+ - lib/tty-spinner/.github/workflows/ci.yml
390
+ - lib/tty-spinner/.gitignore
391
+ - lib/tty-spinner/.rspec
392
+ - lib/tty-spinner/.rubocop.yml
393
+ - lib/tty-spinner/CHANGELOG.md
394
+ - lib/tty-spinner/CODE_OF_CONDUCT.md
395
+ - lib/tty-spinner/Gemfile
396
+ - lib/tty-spinner/LICENSE.txt
397
+ - lib/tty-spinner/README.md
398
+ - lib/tty-spinner/Rakefile
399
+ - lib/tty-spinner/appveyor.yml
400
+ - lib/tty-spinner/bin/console
401
+ - lib/tty-spinner/bin/setup
402
+ - lib/tty-spinner/demo.gif
403
+ - lib/tty-spinner/examples/auto_spin.rb
404
+ - lib/tty-spinner/examples/basic.rb
405
+ - lib/tty-spinner/examples/clear.rb
406
+ - lib/tty-spinner/examples/color.rb
407
+ - lib/tty-spinner/examples/error.rb
408
+ - lib/tty-spinner/examples/formats.rb
409
+ - lib/tty-spinner/examples/hide_cursor.rb
410
+ - lib/tty-spinner/examples/log.rb
411
+ - lib/tty-spinner/examples/multi/basic.rb
412
+ - lib/tty-spinner/examples/multi/basic_top_level.rb
413
+ - lib/tty-spinner/examples/multi/custom_style.rb
414
+ - lib/tty-spinner/examples/multi/files.rb
415
+ - lib/tty-spinner/examples/multi/jobs.rb
416
+ - lib/tty-spinner/examples/multi/multi.rb
417
+ - lib/tty-spinner/examples/multi/multi_top_level.rb
418
+ - lib/tty-spinner/examples/multi/pause.rb
419
+ - lib/tty-spinner/examples/multi/threaded.rb
420
+ - lib/tty-spinner/examples/pause.rb
421
+ - lib/tty-spinner/examples/run.rb
422
+ - lib/tty-spinner/examples/success.rb
423
+ - lib/tty-spinner/examples/threaded.rb
424
+ - lib/tty-spinner/examples/update.rb
425
+ - lib/tty-spinner/lib/tty-spinner.rb
426
+ - lib/tty-spinner/lib/tty/spinner.rb
427
+ - lib/tty-spinner/lib/tty/spinner/formats.rb
428
+ - lib/tty-spinner/lib/tty/spinner/multi.rb
429
+ - lib/tty-spinner/lib/tty/spinner/version.rb
430
+ - lib/tty-spinner/spec/spec_helper.rb
431
+ - lib/tty-spinner/spec/unit/auto_spin_spec.rb
432
+ - lib/tty-spinner/spec/unit/clear_spec.rb
433
+ - lib/tty-spinner/spec/unit/error_spec.rb
434
+ - lib/tty-spinner/spec/unit/events_spec.rb
435
+ - lib/tty-spinner/spec/unit/formats_spec.rb
436
+ - lib/tty-spinner/spec/unit/frames_spec.rb
437
+ - lib/tty-spinner/spec/unit/hide_cursor_spec.rb
438
+ - lib/tty-spinner/spec/unit/job_spec.rb
439
+ - lib/tty-spinner/spec/unit/join_spec.rb
440
+ - lib/tty-spinner/spec/unit/log_spec.rb
441
+ - lib/tty-spinner/spec/unit/multi/auto_spin_spec.rb
442
+ - lib/tty-spinner/spec/unit/multi/error_spec.rb
443
+ - lib/tty-spinner/spec/unit/multi/line_inset_spec.rb
444
+ - lib/tty-spinner/spec/unit/multi/on_spec.rb
445
+ - lib/tty-spinner/spec/unit/multi/register_spec.rb
446
+ - lib/tty-spinner/spec/unit/multi/spin_spec.rb
447
+ - lib/tty-spinner/spec/unit/multi/stop_spec.rb
448
+ - lib/tty-spinner/spec/unit/multi/success_spec.rb
449
+ - lib/tty-spinner/spec/unit/new_spec.rb
450
+ - lib/tty-spinner/spec/unit/pause_spec.rb
451
+ - lib/tty-spinner/spec/unit/reset_spec.rb
452
+ - lib/tty-spinner/spec/unit/run_spec.rb
453
+ - lib/tty-spinner/spec/unit/spin_spec.rb
454
+ - lib/tty-spinner/spec/unit/stop_spec.rb
455
+ - lib/tty-spinner/spec/unit/success_spec.rb
456
+ - lib/tty-spinner/spec/unit/tty_spec.rb
457
+ - lib/tty-spinner/spec/unit/update_spec.rb
458
+ - lib/tty-spinner/tasks/console.rake
459
+ - lib/tty-spinner/tasks/coverage.rake
460
+ - lib/tty-spinner/tasks/spec.rake
461
+ - lib/tty-spinner/tty-spinner.gemspec
380
462
  - planter-cli.gemspec
381
463
  - scripts/deploy.rb
382
464
  - scripts/runtests.sh
383
465
  - spec/.rubocop.yml
466
+ - spec/cli_spec.rb
384
467
  - spec/config.yml
385
468
  - spec/planter.yml
386
469
  - spec/planter/array_spec.rb
@@ -430,6 +513,7 @@ specification_version: 4
430
513
  summary: Plant files and directories using templates
431
514
  test_files:
432
515
  - spec/.rubocop.yml
516
+ - spec/cli_spec.rb
433
517
  - spec/config.yml
434
518
  - spec/planter.yml
435
519
  - spec/planter/array_spec.rb