guard-compat 1.1.0 → 1.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 72fc80357bae89d7e82328112be553116b9eaab8
4
- data.tar.gz: 6210ef62aaae9ffea55f758b46e9bef0eaf5e5d3
3
+ metadata.gz: 8bea3b0b5cc442c2c5b10976c87ad36407e5066d
4
+ data.tar.gz: df406a03c512afab623264e68c8fba0f926a9ceb
5
5
  SHA512:
6
- metadata.gz: a0248a509ecf2c2d5e90e10bb74ce4ebedff29d2e241cf681224be16e38a41a9245c0849f257afa81ae0c8d5700a066c2bc2af9c9e42b8361decdb31292edee9
7
- data.tar.gz: fdf358f5c04db54e00e6ff4c3edaf9a24531377e64cfd7be42942bcb676fce98d620c1d4ede17d639cb5eb7b211d32ae19863dcb867e4d131fffddb1494d20f4
6
+ metadata.gz: 01036358dd3830011dbeceac79ecdc19ef6a7788369d8f20f1314445bf187627b7214f23cde5330fa0bce6977431bdedee3e6f1ea5bc6a8dc2df2f5f2461c239
7
+ data.tar.gz: 32bf5202d15a4480394311cc5799e231ac9c3bf37b20e288507f609cc0159b8806090e48eb8723903cea6d9a709625dee0e0a643fbc073e01a5e533b128d40a7
data/README.md CHANGED
@@ -43,6 +43,21 @@ require 'guard/myplugin'
43
43
 
44
44
  (OPTIONAL: if your plugin consists of many files, you may prefer to add the two above requires to your `spec/spec_helper.rb` or test setup files)
45
45
 
46
+ ### Migrating your API calls
47
+
48
+ `Guard::UI` => `Guard::Compat::UI` (or Compat::UI for short)
49
+ `Guard::Notifier.notify` => `Guard::Compat::UI.notify`
50
+
51
+ `Guard::Watcher.match_files` => `Guard::Compat.matching_files` (Watcher is otherwise unavailable - see Guard::Less template for passing patterns as plugin options)
52
+
53
+ ### New API
54
+
55
+ * `Guard::UI.color` => for creating ANSI colored text if currently enabled in Guard
56
+ * `Guard::UI.color_enabled?` => for checking if ANSI color output is currently enabled in Guard
57
+ * `Guard::UI.watched_directories` => compatible way of obtaining watched_directories (recommended instead of accessing Watcher patterns or pattern subgroup hacks)
58
+
59
+ (Open an issue if you feel something important is missing)
60
+
46
61
 
47
62
  ## Example
48
63
 
@@ -50,6 +65,8 @@ See [lib/guard/compat/example.rb](https://github.com/guard/guard-compat/blob/mas
50
65
 
51
66
  See [spec/guard/compat/example_spec.rb](https://github.com/guard/guard-compat/blob/master/spec/guard/compat/example_spec.rb) for an example on how to test plugins using Guard::Compat.
52
67
 
68
+ See [spec/guard/compat/example_template_spec.rb](https://github.com/guard/guard-compat/blob/master/spec/guard/compat/example_template_spec.rb) for an example on how to test plugin templates.
69
+
53
70
  ## Contributing
54
71
 
55
72
  1. Fork it ( https://github.com/guard/guard-compat/fork )
@@ -38,9 +38,8 @@ module Guard
38
38
 
39
39
  def self.watched_directories
40
40
  unless Guard.const_defined?('CLI')
41
- msg = 'either Guard has not been required or you did not' \
42
- ' stub this method in your plugin tests'
43
- fail NotImplementedError, msg
41
+ fail NotImplementedError, 'either Guard has not been required or'\
42
+ ' you did not stub this method in your plugin tests'
44
43
  end
45
44
 
46
45
  if Guard.respond_to?(:state)
@@ -54,35 +53,67 @@ module Guard
54
53
 
55
54
  module UI
56
55
  def self.color(text, *colors)
57
- Guard::UI.send(:color, text, *colors)
56
+ if Guard.const_defined?(:UI)
57
+ Guard::UI.send(:color, text, *colors)
58
+ else
59
+ text
60
+ end
58
61
  end
59
62
 
60
63
  def self.color_enabled?
61
- Guard::UI.send(:color_enabled?)
64
+ if Guard.const_defined?(:UI)
65
+ Guard::UI.send(:color_enabled?)
66
+ else
67
+ false
68
+ end
62
69
  end
63
70
 
64
71
  def self.info(message, options = {})
65
- Guard::UI.info(message, options)
72
+ if Guard.const_defined?(:UI)
73
+ Guard::UI.info(message, options)
74
+ else
75
+ $stdout.puts(message)
76
+ end
66
77
  end
67
78
 
68
79
  def self.warning(message, options = {})
69
- Guard::UI.warning(message, options)
80
+ if Guard.const_defined?(:UI)
81
+ Guard::UI.warning(message, options)
82
+ else
83
+ $stdout.puts(message)
84
+ end
70
85
  end
71
86
 
72
87
  def self.error(message, options = {})
73
- Guard::UI.error(message, options)
88
+ if Guard.const_defined?(:UI)
89
+ Guard::UI.error(message, options)
90
+ else
91
+ $stderr.puts(message)
92
+ end
74
93
  end
75
94
 
76
95
  def self.debug(message, options = {})
77
- Guard::UI.debug(message, options)
96
+ if Guard.const_defined?(:UI)
97
+ Guard::UI.debug(message, options)
98
+ else
99
+ $stdout.puts(message)
100
+ end
78
101
  end
79
102
 
80
103
  def self.deprecation(message, options = {})
81
- Guard::UI.deprecation(message, options)
104
+ if Guard.const_defined?(:UI)
105
+ Guard::UI.deprecation(message, options)
106
+ else
107
+ $stdout.puts(message)
108
+ end
82
109
  end
83
110
 
84
111
  def self.notify(message, options = {})
85
- Guard::Notifier.notify(message, options)
112
+ if Guard.const_defined?(:UI)
113
+ Guard::Notifier.notify(message, options)
114
+ else
115
+ $stdout.puts(message)
116
+ end
86
117
  end
87
118
  end
88
119
  end
@@ -1,5 +1,5 @@
1
1
  module Guard
2
2
  module Compat
3
- VERSION = '1.1.0'
3
+ VERSION = '1.2.0'
4
4
  end
5
5
  end
@@ -0,0 +1,63 @@
1
+ # This test requires UI be not defined to simulate using plugin outside Guard
2
+
3
+ require 'guard/compat/plugin'
4
+
5
+ Guard.send(:remove_const, :UI) if Guard.const_defined?(:UI)
6
+
7
+ RSpec.describe Guard::Compat do
8
+ context 'when Guard is not loaded' do
9
+ describe '.color' do
10
+ it 'returns uncolored text' do
11
+ expect(Guard::Compat::UI.color('foo', 'red')).to eq('foo')
12
+ end
13
+ end
14
+
15
+ describe '.color_enabled?' do
16
+ it 'returns false' do
17
+ expect(Guard::Compat::UI.color_enabled?).to be(false)
18
+ end
19
+ end
20
+
21
+ describe '.info' do
22
+ it 'outputs to stdout' do
23
+ expect($stdout).to receive(:puts).with('foo')
24
+ Guard::Compat::UI.info('foo')
25
+ end
26
+ end
27
+
28
+ describe '.warning' do
29
+ it 'outputs to stdout' do
30
+ expect($stdout).to receive(:puts).with('foo')
31
+ Guard::Compat::UI.warning('foo')
32
+ end
33
+ end
34
+
35
+ describe '.error' do
36
+ it 'outputs to stdout' do
37
+ expect($stderr).to receive(:puts).with('foo')
38
+ Guard::Compat::UI.error('foo')
39
+ end
40
+ end
41
+
42
+ describe '.debug' do
43
+ it 'outputs to stdout' do
44
+ expect($stdout).to receive(:puts).with('foo')
45
+ Guard::Compat::UI.debug('foo')
46
+ end
47
+ end
48
+
49
+ describe '.deprecation' do
50
+ it 'outputs to stdout' do
51
+ expect($stdout).to receive(:puts).with('foo')
52
+ Guard::Compat::UI.deprecation('foo')
53
+ end
54
+ end
55
+
56
+ describe '.notify' do
57
+ it 'outputs to stdout' do
58
+ expect($stdout).to receive(:puts).with('foo')
59
+ Guard::Compat::UI.notify('foo')
60
+ end
61
+ end
62
+ end
63
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-compat
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cezary Baginski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-11 00:00:00.000000000 Z
11
+ date: 2014-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -62,6 +62,7 @@ files:
62
62
  - lib/guard/compat/version.rb
63
63
  - spec/guard/compat/example_spec.rb
64
64
  - spec/guard/compat/example_template_spec.rb
65
+ - spec/guard/compat/no_guard_spec.rb
65
66
  - spec/spec_helper.rb
66
67
  homepage: ''
67
68
  licenses:
@@ -83,11 +84,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
83
84
  version: '0'
84
85
  requirements: []
85
86
  rubyforge_project:
86
- rubygems_version: 2.2.2
87
+ rubygems_version: 2.4.3
87
88
  signing_key:
88
89
  specification_version: 4
89
90
  summary: Tools for developing Guard compatible plugins
90
91
  test_files:
91
92
  - spec/guard/compat/example_spec.rb
92
93
  - spec/guard/compat/example_template_spec.rb
94
+ - spec/guard/compat/no_guard_spec.rb
93
95
  - spec/spec_helper.rb