yap-shell 0.6.0 → 0.7.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.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.travis.lock +104 -0
  3. data/bin/yap +6 -0
  4. data/bin/yap-dev +37 -0
  5. data/lib/yap.rb +29 -39
  6. data/lib/yap/addon.rb +24 -0
  7. data/lib/yap/addon/base.rb +52 -0
  8. data/lib/yap/addon/export_as.rb +12 -0
  9. data/lib/yap/addon/loader.rb +84 -0
  10. data/lib/yap/addon/path.rb +56 -0
  11. data/lib/yap/addon/rc_file.rb +21 -0
  12. data/lib/yap/addon/reference.rb +22 -0
  13. data/lib/yap/cli.rb +4 -0
  14. data/lib/yap/cli/commands.rb +6 -0
  15. data/lib/yap/cli/commands/addon.rb +14 -0
  16. data/lib/yap/cli/commands/addon/disable.rb +35 -0
  17. data/lib/yap/cli/commands/addon/enable.rb +35 -0
  18. data/lib/yap/cli/commands/addon/list.rb +37 -0
  19. data/lib/yap/cli/commands/addon/search.rb +99 -0
  20. data/lib/yap/cli/commands/generate.rb +13 -0
  21. data/lib/yap/cli/commands/generate/addon.rb +258 -0
  22. data/lib/yap/cli/commands/generate/addonrb.template +22 -0
  23. data/lib/yap/cli/commands/generate/gemspec.template +25 -0
  24. data/lib/yap/cli/commands/generate/license.template +21 -0
  25. data/lib/yap/cli/commands/generate/rakefile.template +6 -0
  26. data/lib/yap/cli/commands/generate/readme.template +40 -0
  27. data/lib/yap/cli/options.rb +162 -0
  28. data/lib/yap/cli/options/addon.rb +64 -0
  29. data/lib/yap/cli/options/addon/disable.rb +62 -0
  30. data/lib/yap/cli/options/addon/enable.rb +63 -0
  31. data/lib/yap/cli/options/addon/list.rb +65 -0
  32. data/lib/yap/cli/options/addon/search.rb +76 -0
  33. data/lib/yap/cli/options/generate.rb +59 -0
  34. data/lib/yap/cli/options/generate/addon.rb +63 -0
  35. data/lib/yap/configuration.rb +10 -3
  36. data/lib/yap/gem_helper.rb +195 -0
  37. data/lib/yap/gem_tasks.rb +6 -0
  38. data/lib/yap/shell.rb +1 -1
  39. data/lib/yap/shell/repl.rb +1 -1
  40. data/lib/yap/shell/version.rb +1 -1
  41. data/lib/yap/world.rb +45 -7
  42. data/rcfiles/yaprc +90 -10
  43. data/spec/features/addons/generating_an_addon_spec.rb +55 -0
  44. data/spec/features/addons/using_an_addon_spec.rb +182 -0
  45. data/spec/features/aliases_spec.rb +6 -6
  46. data/spec/features/grouping_spec.rb +18 -18
  47. data/spec/features/line_editing_spec.rb +9 -1
  48. data/spec/features/redirection_spec.rb +12 -3
  49. data/spec/spec_helper.rb +21 -11
  50. data/spec/support/matchers/have_printed.rb +38 -0
  51. data/spec/support/yap_spec_dsl.rb +24 -6
  52. data/yap-shell.gemspec +6 -11
  53. metadata +51 -45
  54. data/addons/history/README.md +0 -16
  55. data/addons/history/history.rb +0 -58
  56. data/addons/history_search/history_search.rb +0 -197
  57. data/addons/keyboard_macros/keyboard_macros.rb +0 -425
  58. data/addons/keyboard_macros/lib/keyboard_macros/cycle.rb +0 -38
  59. data/addons/prompt/Gemfile +0 -1
  60. data/addons/prompt/right_prompt.rb +0 -17
  61. data/addons/prompt_updates/prompt_updates.rb +0 -28
  62. data/addons/tab_completion/Gemfile +0 -0
  63. data/addons/tab_completion/lib/tab_completion/basic_completion.rb +0 -151
  64. data/addons/tab_completion/lib/tab_completion/completer.rb +0 -62
  65. data/addons/tab_completion/lib/tab_completion/custom_completion.rb +0 -33
  66. data/addons/tab_completion/lib/tab_completion/dsl_methods.rb +0 -7
  67. data/addons/tab_completion/tab_completion.rb +0 -174
  68. data/lib/tasks/addons.rake +0 -97
  69. data/lib/yap/world/addons.rb +0 -181
@@ -16,7 +16,7 @@ describe 'Aliases', type: :feature do
16
16
  it 'executes them' do
17
17
  type 'foo'
18
18
  enter
19
- expect { output }.to have_printed(/bar\n/)
19
+ expect { output }.to have_printed(/^bar$/m)
20
20
  end
21
21
 
22
22
  it 'unsets them' do
@@ -41,14 +41,14 @@ describe 'Aliases', type: :feature do
41
41
  it 'supports logical AND: &&' do
42
42
  type "pass && pass"
43
43
  enter
44
- expect { output }.to have_printed(/pass.*\n.*pass/m)
44
+ expect { output }.to have_printed(/^pass$.*^pass$/m)
45
45
  end
46
46
 
47
47
  it 'supports logical OR: &&' do
48
48
  type "fail || pass"
49
49
  enter
50
50
  expect { error_output }.to have_printed(/yap: command not found: non-existent-command/m)
51
- expect { output }.to have_printed(/pass/m)
51
+ expect { output }.to have_printed(/^pass$/m)
52
52
  clear_all_output
53
53
 
54
54
  type "echo $?"
@@ -60,19 +60,19 @@ describe 'Aliases', type: :feature do
60
60
  type "(pass && fail) || pass"
61
61
  enter
62
62
  expect { error_output }.to have_printed(/yap: command not found: non-existent-command/m)
63
- expect { output }.to have_printed(/pass.*\n.*pass/m)
63
+ expect { output }.to have_printed(/^pass$.*^pass$/m)
64
64
  clear_all_output
65
65
 
66
66
  type "(pass || fail) && pass"
67
67
  enter
68
68
  expect { error_output }.to have_not_printed(/yap: command not found: non-existent-command/m)
69
- expect { output }.to have_printed(/pass.*\n.*pass/m)
69
+ expect { output }.to have_printed(/^pass$.*^pass$/m)
70
70
  clear_all_output
71
71
 
72
72
  type "(fail && pass) && pass"
73
73
  enter
74
74
  expect { error_output }.to have_printed(/yap: command not found: non-existent-command/m)
75
- expect { output }.to have_not_printed(/pass.*\n.*pass/m)
75
+ expect { output }.to have_not_printed(/^pass$.*^pass$/m)
76
76
  end
77
77
  end
78
78
  end
@@ -19,62 +19,62 @@ describe 'Grouping commands', type: :feature do
19
19
  it 'works with: (command1 && command2) || command3' do
20
20
  type '(./pass 1 && ./fail 2) || ./pass 3'
21
21
  enter
22
- expect { output }.to have_printed(/pass 1.*fail 2.*pass 3/m)
22
+ expect { output }.to have_printed(/^pass 1$.*^fail 2$.*^pass 3$/m)
23
23
  clear_all_output
24
24
 
25
25
  type '(./fail 1 && ./pass 2) || ./pass 3'
26
26
  enter
27
- expect { output }.to have_printed(/fail 1.*pass 3/m)
28
- expect { output }.to have_not_printed(/pass 2/m)
27
+ expect { output }.to have_printed(/^fail 1$.*^pass 3$/m)
28
+ expect { output }.to have_not_printed(/^pass 2$/m)
29
29
  end
30
30
 
31
31
  it 'works with: (command1 && command2 && command3) || command4' do
32
32
  type '(./pass 1 && ./fail 2 && ./pass 3) || ./pass 4'
33
33
  enter
34
- expect { output }.to have_printed(/pass 1.*fail 2.*pass 4/m)
35
- expect { output }.to have_not_printed(/pass 1.*fail 2.*pass 3.*pass 4/m)
34
+ expect { output }.to have_printed(/^pass 1$.*^fail 2$.*^pass 4$/m)
35
+ expect { output }.to have_not_printed(/^pass 1$.*^fail 2$.*^pass 3$.*^pass 4$/m)
36
36
  clear_all_output
37
37
 
38
38
  type '(./fail 1 && ./pass 2 && ./pass 3) || ./pass 4'
39
39
  enter
40
- expect { output }.to have_printed(/fail 1.*pass 4/m)
41
- expect { output }.to have_not_printed(/pass 2.*pass 3/m)
40
+ expect { output }.to have_printed(/^fail 1$.*^pass 4$/m)
41
+ expect { output }.to have_not_printed(/^pass 2$.*^pass 3$/m)
42
42
  end
43
43
 
44
44
  it 'works with: (command1 || command2) && command4' do
45
45
  type '(./fail 1 || ./pass 2) && ./pass 3'
46
46
  enter
47
- expect { output }.to have_printed(/fail 1.*pass 2.*pass 3/m)
47
+ expect { output }.to have_printed(/^fail 1$.*^pass 2$.*^pass 3$/m)
48
48
 
49
49
  type '(./pass 1 || ./fail 2) && ./pass 3'
50
50
  enter
51
- expect { output }.to have_printed(/pass 1.*pass 3/m)
52
- expect { output }.to have_not_printed(/fail 2/m)
51
+ expect { output }.to have_printed(/^pass 1$.*^pass 3$/m)
52
+ expect { output }.to have_not_printed(/^fail 2$/m)
53
53
  end
54
54
 
55
55
  it 'works with: (command1 && command2) && command4' do
56
56
  type '(./fail 1 && ./pass 2) && ./pass 3'
57
57
  enter
58
- expect { output }.to have_printed(/fail 1/m)
59
- expect { output }.to have_not_printed(/.*pass 2.*pass 3/m)
58
+ expect { output }.to have_printed(/^fail 1$/m)
59
+ expect { output }.to have_not_printed(/^pass 2$.*^pass 3$/m)
60
60
  clear_all_output
61
61
 
62
62
  type '(./pass 1 && ./fail 2) && ./pass 3'
63
63
  enter
64
- expect { output }.to have_printed(/pass 1.*fail 2/m)
65
- expect { output }.to have_not_printed(/pass 3/m)
64
+ expect { output }.to have_printed(/^pass 1$.*^fail 2$/m)
65
+ expect { output }.to have_not_printed(/^pass 3$/m)
66
66
  end
67
67
 
68
68
  it 'works with: (command1 || command2) || command4' do
69
69
  type '(./fail 1 || ./pass 2) || ./pass 3'
70
70
  enter
71
- expect { output }.to have_printed(/fail 1.*pass 2/m)
72
- expect { output }.to have_not_printed(/pass 3/m)
71
+ expect { output }.to have_printed(/^fail 1$.*^pass 2$/m)
72
+ expect { output }.to have_not_printed(/^pass 3$/m)
73
73
 
74
74
  type '(./pass 1 || ./fail 2) || ./pass 3'
75
75
  enter
76
- expect { output }.to have_printed(/pass 1/m)
77
- expect { output }.to have_not_printed(/fail 2.*pass 3/m)
76
+ expect { output }.to have_printed(/^pass 1$/m)
77
+ expect { output }.to have_not_printed(/^fail 2$.*^pass 3$/m)
78
78
  end
79
79
  end
80
80
 
@@ -35,8 +35,12 @@ describe 'Line editing', type: :feature do
35
35
  type 'echo hello world'
36
36
  6.times { type left_arrow }
37
37
  6.times { type delete }
38
+
39
+ expect { output }.to have_printed_lines('yap> echo hello')
40
+ clear_all_output(console: false)
41
+
38
42
  enter
39
- expect { output }.to have_printed('hello')
43
+ expect { output }.to have_printed_lines('hello')
40
44
  expect { output }.to have_not_printed('world')
41
45
  end
42
46
 
@@ -141,6 +145,10 @@ describe 'Line editing', type: :feature do
141
145
  type ?\C-w
142
146
  type ?\C-w
143
147
  type 'nope'
148
+
149
+ expect { output }.to have_printed_line('yap> echo nope')
150
+ clear_all_output(console: false)
151
+
144
152
  enter
145
153
  expect { output }.to have_printed('nope')
146
154
  expect { output }.to have_not_printed('hello world')
@@ -47,15 +47,19 @@ describe 'I/O Redirection', type: :feature do
47
47
  before do
48
48
  type 'echo foo > output.txt'
49
49
  enter
50
+ clear_all_output
51
+
50
52
  type 'cat output.txt'
51
53
  enter
52
- expect { output }.to have_printed(/foo/)
54
+ expect { output }.to have_printed_line('foo')
53
55
  clear_all_output
54
56
  end
55
57
 
56
58
  it 'appends with: >>' do
57
59
  type 'echo bar >> output.txt'
58
60
  enter
61
+ clear_all_output
62
+
59
63
  type 'cat output.txt'
60
64
  enter
61
65
  expect { output }.to have_printed(/foo.*\n.*bar/)
@@ -64,6 +68,8 @@ describe 'I/O Redirection', type: :feature do
64
68
  it 'appends with: 1>>' do
65
69
  type 'echo bar 1>> output.txt'
66
70
  enter
71
+ clear_all_output
72
+
67
73
  type 'cat output.txt'
68
74
  enter
69
75
  expect { output }.to have_printed(/foo.*\n.*bar/)
@@ -100,15 +106,18 @@ describe 'I/O Redirection', type: :feature do
100
106
  before do
101
107
  type './fail caz 2> error.txt'
102
108
  enter
109
+ clear_all_output
110
+
103
111
  type 'cat error.txt'
104
112
  enter
105
- expect { output }.to have_printed(/fail caz/)
106
- clear_all_output
113
+ expect { output }.to have_printed_line('fail caz')
107
114
  end
108
115
 
109
116
  it 'appends with: 2>>' do
110
117
  type './fail box 2>> error.txt'
111
118
  enter
119
+ clear_all_output
120
+
112
121
  type 'cat error.txt'
113
122
  enter
114
123
  expect { output }.to have_printed(/fail caz.*\n.*fail box/)
data/spec/spec_helper.rb CHANGED
@@ -36,22 +36,27 @@ RSpec.configure do |config|
36
36
  config.before(:all, type: :feature) do
37
37
  ENV['HOME'] = tmp_dir.to_s
38
38
 
39
+ mkdir tmp_dir
40
+ Dir.chdir tmp_dir
41
+
39
42
  set_yap_command_line_arguments \
40
43
  '--no-history', '--no-addons', '--no-rcfiles', '--skip-first-time'
41
44
 
42
45
  turn_on_debug_log(debug: 'editor')
43
-
44
46
  initialize_shell
45
47
 
46
- mkdir tmp_dir
47
- Dir.chdir tmp_dir
48
-
49
- type "cd #{tmp_dir}"
50
- enter
51
-
52
- type "pwd"
53
- enter
54
- expect { output }.to have_printed(File.expand_path(tmp_dir))
48
+ if self.class.metadata[:repl] == false
49
+ # no-op if the test specificaly says it doesn't use a repl
50
+ # This is likely when we're expecting yap to print information
51
+ # and exit immediately
52
+ else
53
+ type "cd #{tmp_dir}"
54
+ enter
55
+
56
+ type "pwd"
57
+ enter
58
+ expect { output }.to have_printed(File.expand_path(tmp_dir))
59
+ end
55
60
  clear_all_output
56
61
  end
57
62
 
@@ -64,17 +69,22 @@ RSpec.configure do |config|
64
69
  if self.class.metadata[:forks]
65
70
  # no-op because the example will cause yap to fork inside the child
66
71
  # childprocess and will break the IO pipes we know about in the test
72
+ elsif self.class.metadata[:repl] == false
73
+ # no-op if the test specificaly says it doesn't use a repl
74
+ # This is likely when we're expecting yap to print information
75
+ # and exit immediately
67
76
  else
68
77
  enter if typed_content_awaiting_enter?
69
78
 
70
79
  # Use yap to tell us when it's done doing whatever is was doing.
71
80
  # This ensures we don'try to clean up before yap is done!
81
+ clear_all_output(console: true)
72
82
  type 'echo done with this test'
73
83
  enter
74
84
  expect { output }.to have_printed('done with this test')
75
85
  end
76
- clear_all_output
77
86
  ensure
87
+ clear_all_output(console: false)
78
88
  Dir.chdir(tmp_dir) do
79
89
  # remove all files including hidden but not current directory and
80
90
  # parent directory
@@ -28,3 +28,41 @@ RSpec::Matchers.define :have_printed do |expected|
28
28
  true
29
29
  end
30
30
  end
31
+
32
+
33
+ RSpec::Matchers.define :have_printed_lines do |expected|
34
+ output_seen_so_far = ""
35
+ current_line = nil
36
+
37
+ match do |block|
38
+ begin
39
+ expected.lines.each do |line|
40
+ current_line = line
41
+ regex = /#{Regexp.escape(line)}/m
42
+ very_soon do
43
+ current_output = block.call
44
+ output_seen_so_far = current_output
45
+ regex.match(current_output)
46
+ end
47
+ end
48
+ true
49
+ rescue Timeout::Error
50
+ false
51
+ end
52
+ end
53
+
54
+ failure_message do |actual|
55
+ if expected.is_a?(Regexp)
56
+ "expected that #{current_line.inspect} would match #{output_seen_so_far.inspect}"
57
+ else
58
+ "expected that #{current_line.inspect} would appear in #{output_seen_so_far.inspect}"
59
+ end
60
+ end
61
+
62
+ def supports_block_expectations?
63
+ true
64
+ end
65
+ end
66
+
67
+ RSpec::Matchers.alias_matcher :have_printed_line, :have_printed_lines
68
+ RSpec::Matchers.alias_matcher :have_line, :have_printed_lines
@@ -69,8 +69,7 @@ module Yap
69
69
  # make stdin available, writable
70
70
  process.duplex = true
71
71
 
72
- # tmpdir = File.dirname(__FILE__) + '/../tmp'
73
- process.cwd = File.dirname(__FILE__)
72
+ process.cwd = Dir.pwd
74
73
  process.start
75
74
 
76
75
  # make sure clean-up child processes, hang if any fail
@@ -110,7 +109,13 @@ module Yap
110
109
  end
111
110
 
112
111
  def mkdir(path)
113
- path = tmp_dir.join(path) unless path == tmp_dir
112
+ mkdir_p path
113
+ end
114
+
115
+ def mkdir_p(path)
116
+ unless File.expand_path(path.to_s).include?(tmp_dir.to_s)
117
+ path = tmp_dir.join(path)
118
+ end
114
119
  FileUtils.mkdir_p Pathname.new(path).expand_path
115
120
  end
116
121
 
@@ -123,7 +128,15 @@ module Yap
123
128
  FileUtils.rm_rf Pathname.new(path).expand_path
124
129
  end
125
130
 
131
+ def write_file(filename, contents)
132
+ filename = tmp_dir.join(filename) unless filename.to_s.include?(tmp_dir.to_s)
133
+ file = File.new(filename, 'w+')
134
+ file.write contents
135
+ file.close
136
+ end
137
+
126
138
  def write_executable_script(filename, contents)
139
+ filename = tmp_dir.join(filename) unless filename.to_s.include?(tmp_dir.to_s)
127
140
  file = File.new(filename, 'w+')
128
141
  file.write contents
129
142
  file.chmod 0755
@@ -141,11 +154,10 @@ module Yap
141
154
  def turn_on_debug_log(file: '/tmp/yap-debug.log', debug: '*')
142
155
  ENV['TREEFELL_OUT'] = file
143
156
  ENV['DEBUG'] = debug
144
- reinitialize_shell
145
157
  end
146
158
 
147
159
  def set_yap_command_line_arguments(*args)
148
- @yap_command_line_arguments = args
160
+ @yap_command_line_arguments = args.flatten
149
161
  end
150
162
 
151
163
  def yap_command_line_arguments
@@ -163,6 +175,7 @@ module Yap
163
175
 
164
176
  def reinitialize_shell
165
177
  initialize_shell
178
+ clear_all_output(console: false)
166
179
  end
167
180
 
168
181
  def shell
@@ -188,7 +201,12 @@ module Yap
188
201
  shell.io.stdin.print "\r"
189
202
  end
190
203
 
191
- def clear_all_output
204
+ def clear_all_output(console: true)
205
+ if console
206
+ type 'echo done'
207
+ enter
208
+ expect { output }.to have_printed_line('done')
209
+ end
192
210
  output_file.clear
193
211
  error_output_file.clear
194
212
  end
data/yap-shell.gemspec CHANGED
@@ -64,21 +64,16 @@ Gem::Specification.new do |spec|
64
64
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
65
65
  spec.require_paths = ["lib"]
66
66
 
67
- spec.add_dependency "pry-byebug", "~> 3.3.0"
68
- spec.add_dependency "yap-shell-parser", "~> 0.7.0"
67
+ spec.add_dependency "pry-byebug", "~> 3.3"
68
+ spec.add_dependency "yap-shell-parser", "~> 0.7.1"
69
69
  spec.add_dependency "term-ansicolor", "~> 1.3"
70
70
  spec.add_dependency "ruby-termios", "~> 0.9.6"
71
71
  spec.add_dependency "ruby-terminfo", "~> 0.1.1"
72
- spec.add_dependency "yap-rawline", "~> 0.5.0"
73
- spec.add_dependency "treefell", "~> 0.2.3"
72
+ spec.add_dependency "yap-rawline", "~> 0.6.2"
73
+ spec.add_dependency "chronic", "~> 0.10.2"
74
74
 
75
75
  spec.add_development_dependency "bundler", "~> 1.6"
76
- spec.add_development_dependency "rake", "~> 10"
77
- spec.add_development_dependency "rspec", "~> 3.4.0"
76
+ spec.add_development_dependency "rake", "~> 11"
77
+ spec.add_development_dependency "rspec", "~> 3.0"
78
78
  spec.add_development_dependency "childprocess", "~> 0.5.9"
79
-
80
- #--BEGIN_ADDON_GEM_DEPENDENCIES--#
81
- spec.add_dependency "chronic", "~> 0.10.2"
82
- # spec.add_dependency "term-ansicolor", "~> 1.3.2"
83
- #--END_ADDON_GEM_DEPENDENCIES--#
84
79
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yap-shell
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zach Dennis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-16 00:00:00.000000000 Z
11
+ date: 2016-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry-byebug
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 3.3.0
19
+ version: '3.3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 3.3.0
26
+ version: '3.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: yap-shell-parser
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.7.0
33
+ version: 0.7.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.7.0
40
+ version: 0.7.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: term-ansicolor
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -86,28 +86,28 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.5.0
89
+ version: 0.6.2
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.5.0
96
+ version: 0.6.2
97
97
  - !ruby/object:Gem::Dependency
98
- name: treefell
98
+ name: chronic
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 0.2.3
103
+ version: 0.10.2
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 0.2.3
110
+ version: 0.10.2
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: bundler
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -128,28 +128,28 @@ dependencies:
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '10'
131
+ version: '11'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '10'
138
+ version: '11'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rspec
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: 3.4.0
145
+ version: '3.0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: 3.4.0
152
+ version: '3.0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: childprocess
155
155
  requirement: !ruby/object:Gem::Requirement
@@ -164,20 +164,6 @@ dependencies:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
166
  version: 0.5.9
167
- - !ruby/object:Gem::Dependency
168
- name: chronic
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - "~>"
172
- - !ruby/object:Gem::Version
173
- version: 0.10.2
174
- type: :runtime
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - "~>"
179
- - !ruby/object:Gem::Version
180
- version: 0.10.2
181
167
  description: The Lagniappe "Yap" shell description.
182
168
  email:
183
169
  - zach.dennis@gmail.com
@@ -194,30 +180,47 @@ files:
194
180
  - DESIGN.md
195
181
  - Gemfile
196
182
  - Gemfile.travis
183
+ - Gemfile.travis.lock
197
184
  - LICENSE.txt
198
185
  - README.md
199
186
  - Rakefile
200
187
  - WISHLIST.md
201
- - addons/history/README.md
202
- - addons/history/history.rb
203
- - addons/history_search/history_search.rb
204
- - addons/keyboard_macros/keyboard_macros.rb
205
- - addons/keyboard_macros/lib/keyboard_macros/cycle.rb
206
- - addons/prompt/Gemfile
207
- - addons/prompt/right_prompt.rb
208
- - addons/prompt_updates/prompt_updates.rb
209
- - addons/tab_completion/Gemfile
210
- - addons/tab_completion/lib/tab_completion/basic_completion.rb
211
- - addons/tab_completion/lib/tab_completion/completer.rb
212
- - addons/tab_completion/lib/tab_completion/custom_completion.rb
213
- - addons/tab_completion/lib/tab_completion/dsl_methods.rb
214
- - addons/tab_completion/tab_completion.rb
215
188
  - bin/yap
216
189
  - bin/yap-dev
217
- - lib/tasks/addons.rake
218
190
  - lib/tasks/gem.rake
219
191
  - lib/yap.rb
192
+ - lib/yap/addon.rb
193
+ - lib/yap/addon/base.rb
194
+ - lib/yap/addon/export_as.rb
195
+ - lib/yap/addon/loader.rb
196
+ - lib/yap/addon/path.rb
197
+ - lib/yap/addon/rc_file.rb
198
+ - lib/yap/addon/reference.rb
199
+ - lib/yap/cli.rb
200
+ - lib/yap/cli/commands.rb
201
+ - lib/yap/cli/commands/addon.rb
202
+ - lib/yap/cli/commands/addon/disable.rb
203
+ - lib/yap/cli/commands/addon/enable.rb
204
+ - lib/yap/cli/commands/addon/list.rb
205
+ - lib/yap/cli/commands/addon/search.rb
206
+ - lib/yap/cli/commands/generate.rb
207
+ - lib/yap/cli/commands/generate/addon.rb
208
+ - lib/yap/cli/commands/generate/addonrb.template
209
+ - lib/yap/cli/commands/generate/gemspec.template
210
+ - lib/yap/cli/commands/generate/license.template
211
+ - lib/yap/cli/commands/generate/rakefile.template
212
+ - lib/yap/cli/commands/generate/readme.template
213
+ - lib/yap/cli/options.rb
214
+ - lib/yap/cli/options/addon.rb
215
+ - lib/yap/cli/options/addon/disable.rb
216
+ - lib/yap/cli/options/addon/enable.rb
217
+ - lib/yap/cli/options/addon/list.rb
218
+ - lib/yap/cli/options/addon/search.rb
219
+ - lib/yap/cli/options/generate.rb
220
+ - lib/yap/cli/options/generate/addon.rb
220
221
  - lib/yap/configuration.rb
222
+ - lib/yap/gem_helper.rb
223
+ - lib/yap/gem_tasks.rb
221
224
  - lib/yap/shell.rb
222
225
  - lib/yap/shell/aliases.rb
223
226
  - lib/yap/shell/builtins.rb
@@ -240,7 +243,6 @@ files:
240
243
  - lib/yap/shell/repl.rb
241
244
  - lib/yap/shell/version.rb
242
245
  - lib/yap/world.rb
243
- - lib/yap/world/addons.rb
244
246
  - rcfiles/yaprc
245
247
  - scripts/4
246
248
  - scripts/bg-vim
@@ -251,6 +253,8 @@ files:
251
253
  - scripts/simulate-long-running
252
254
  - scripts/write-to-stderr.rb
253
255
  - scripts/write-to-stdout.rb
256
+ - spec/features/addons/generating_an_addon_spec.rb
257
+ - spec/features/addons/using_an_addon_spec.rb
254
258
  - spec/features/aliases_spec.rb
255
259
  - spec/features/environment_variables_spec.rb
256
260
  - spec/features/filesystem_commands_spec.rb
@@ -310,6 +314,8 @@ signing_key:
310
314
  specification_version: 4
311
315
  summary: The Lagniappe "Yap" shell.
312
316
  test_files:
317
+ - spec/features/addons/generating_an_addon_spec.rb
318
+ - spec/features/addons/using_an_addon_spec.rb
313
319
  - spec/features/aliases_spec.rb
314
320
  - spec/features/environment_variables_spec.rb
315
321
  - spec/features/filesystem_commands_spec.rb