cliutils 1.4.0 → 1.4.1

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
2
  SHA1:
3
- metadata.gz: fcb17ad9640f90cacc87af17bac0d029d40ca4f0
4
- data.tar.gz: 97a656dee8638fb13c0548d802b1c88a66b40e58
3
+ metadata.gz: 2a677b8cc4feed02af57e2037766c05c7d4216ef
4
+ data.tar.gz: 30029c3645a31d9f9754ee06de442827ac8aaff7
5
5
  SHA512:
6
- metadata.gz: c54f72b7d9af949a9840a4f89325a6a767d646495611996bf8a60722bc20c72517d62904e9bb55c798c542fc45744811ae30fc30907e6983004a8f269e3c797d
7
- data.tar.gz: 0af2677afcd529a66ce4d64a2483f2a79612ae3430c2efeee05850e562bcb68a3f6bfd66327c01b6d2101b64350abba55113e3d53d299e31b20ded8e06dda4b2
6
+ metadata.gz: 5a0ac92ab729efa813a024915493697a501dc9d0f1631b74fb48bddf3fa68bbe373d828ed0813fecf12dca25118ecb57c67b691bea25c9e40bef91ea7e5f7c14
7
+ data.tar.gz: a81425ca6417a7282078490b2232a6bc7889734a1b45f99738fcafe4f934256fce3491e3ce3e95bf003aae764208c3e8736045cbc2a9e83a76bc118737c39f60
data/HISTORY.md CHANGED
@@ -1,6 +1,10 @@
1
+ # 1.4.1 (2014-04-14)
2
+
3
+ * Added Pref reference to PrefAction
4
+
1
5
  # 1.4.0 (2014-04-14)
2
6
 
3
- * Added Pref actions
7
+ * Added PrefAction
4
8
 
5
9
  # 1.3.1 (2014-04-12)
6
10
 
data/README.md CHANGED
@@ -51,7 +51,7 @@ include CLIUtils
51
51
 
52
52
  Alternatively, as described below, mix in only the libraries that you want.
53
53
 
54
- Note that although this README.md is extensive, it may not cover all methods. Check out the [YARD documentation](http://rubydoc.info/github/bachya/cli-utils/master/frames) and the [tests](https://github.com/bachya/cli-utils/tree/master/test) to see more examples.
54
+ Note that although this README.md is extensive, it may not cover all methods. Check out the [YARD documentation](http://rubydoc.info/github/bachya/cliutils/master/frames) and the [tests](https://github.com/bachya/cliutils/tree/master/test) to see more examples.
55
55
 
56
56
  # Libraries
57
57
 
@@ -77,7 +77,7 @@ To start, `PrettyIO` affords you colorized strings:
77
77
  ```ruby
78
78
  puts 'A sample string'.red
79
79
  ```
80
- ![alt text](https://raw.githubusercontent.com/bachya/cli-utils/master/res/readme-images/prettyio-red-text.png "Colored Text via PrettyIO")
80
+ ![alt text](https://raw.githubusercontent.com/bachya/cliutils/master/res/readme-images/prettyio-red-text.png "Colored Text via PrettyIO")
81
81
 
82
82
  You get a stable of utility methods for the common ANSI color codes:
83
83
 
@@ -96,14 +96,14 @@ You also get the `colorize` method, which allows you to define more complex colo
96
96
  ```ruby
97
97
  puts 'A sample string'.colorize('35;42')
98
98
  ```
99
- ![alt text](https://raw.githubusercontent.com/bachya/cli-utils/master/res/readme-images/prettyio-gnarly-text.png "Complex Colored Text via PrettyIO")
99
+ ![alt text](https://raw.githubusercontent.com/bachya/cliutils/master/res/readme-images/prettyio-gnarly-text.png "Complex Colored Text via PrettyIO")
100
100
 
101
101
  Naturally, memorizing the ANSI color scheme is a pain, so `PrettyIO` gives you a convenient method to look up these color combinations:
102
102
 
103
103
  ```ruby
104
104
  color_chart
105
105
  ```
106
- ![alt text](https://raw.githubusercontent.com/bachya/cli-utils/master/res/readme-images/prettyio-color-chart.png "PrettyIO Color Chart")
106
+ ![alt text](https://raw.githubusercontent.com/bachya/cliutils/master/res/readme-images/prettyio-color-chart.png "PrettyIO Color Chart")
107
107
 
108
108
  # Messaging
109
109
 
@@ -118,7 +118,7 @@ Once mixed in, you get access to `messenger`, a type of Logger that uses `Pretty
118
118
  ```ruby
119
119
  messenger.warn('Hey pal, you need to be careful.')
120
120
  ```
121
- ![alt text](https://raw.githubusercontent.com/bachya/cli-utils/master/res/readme-images/messenger-warn.png "A Warning from Messenger")
121
+ ![alt text](https://raw.githubusercontent.com/bachya/cliutils/master/res/readme-images/messenger-warn.png "A Warning from Messenger")
122
122
 
123
123
  ## Messaging Methods
124
124
 
@@ -139,7 +139,7 @@ messenger.warn('WARNING: Tie Fighters approaching!')
139
139
  messenger.error('Porkins died :(')
140
140
  messenger.success('But Luke still blew up the Death Star!')
141
141
  ```
142
- ![alt text](https://raw.githubusercontent.com/bachya/cli-utils/master/res/readme-images/messenger-types-1.png "Basic Messenger Types")
142
+ ![alt text](https://raw.githubusercontent.com/bachya/cliutils/master/res/readme-images/messenger-types-1.png "Basic Messenger Types")
143
143
 
144
144
  `messenger` also includes two "block" methods that allow you to wrap program execution in messages that are "longer-term".
145
145
 
@@ -176,7 +176,7 @@ puts ''
176
176
  CLIUtils::PrettyIO.wrap = false
177
177
  messenger.info(long_string)
178
178
  ```
179
- ![alt text](https://raw.githubusercontent.com/bachya/cli-utils/master/res/readme-images/wrapping.png "Text Wrapping")
179
+ ![alt text](https://raw.githubusercontent.com/bachya/cliutils/master/res/readme-images/wrapping.png "Text Wrapping")
180
180
 
181
181
  ## Prompting
182
182
 
@@ -186,7 +186,7 @@ messenger.info(long_string)
186
186
  p = messenger.prompt('Are you a fan of Battlestar Galactica?', default = 'Y')
187
187
  messenger.info("You answered: #{ p }")
188
188
  ```
189
- ![alt text](https://raw.githubusercontent.com/bachya/cli-utils/master/res/readme-images/prompting.png "Prompting")
189
+ ![alt text](https://raw.githubusercontent.com/bachya/cliutils/master/res/readme-images/prompting.png "Prompting")
190
190
 
191
191
  When you pass a default to `messaging.prompt`, hitting `Enter` (i.e., leaving the prompt blank) will return the value of the default.
192
192
 
@@ -217,7 +217,7 @@ messenger.section('This section message should appear only in STDOUT')
217
217
 
218
218
  In STDOUT:
219
219
 
220
- ![alt text](https://raw.githubusercontent.com/bachya/cli-utils/master/res/readme-images/multi-logger.png "Multi-logging")
220
+ ![alt text](https://raw.githubusercontent.com/bachya/cliutils/master/res/readme-images/multi-logger.png "Multi-logging")
221
221
 
222
222
  ...and in `file.txt`:
223
223
 
@@ -433,7 +433,7 @@ With valid preferences loaded, simply use `ask` to begin prompting your user:
433
433
  ```Ruby
434
434
  prefs.ask
435
435
  ```
436
- ![alt text](https://raw.githubusercontent.com/bachya/cli-utils/master/res/readme-images/prefs-ask.png "Prefs.ask")
436
+ ![alt text](https://raw.githubusercontent.com/bachya/cliutils/master/res/readme-images/prefs-ask.png "Prefs.ask")
437
437
 
438
438
  ## Prerequisites
439
439
 
@@ -474,7 +474,7 @@ prompts:
474
474
  ```Ruby
475
475
  prefs.ask
476
476
  ```
477
- ![alt text](https://raw.githubusercontent.com/bachya/cli-utils/master/res/readme-images/prefs-ask-prereqs.png "Prerequisities")
477
+ ![alt text](https://raw.githubusercontent.com/bachya/cliutils/master/res/readme-images/prefs-ask-prereqs.png "Prerequisities")
478
478
 
479
479
  Be careful that you don't define any circular prerequisities (e.g., A requires B and B requires A). In that case, both preferences will be ignored by `Prefs.ask`.
480
480
 
@@ -518,7 +518,7 @@ Once in place:
518
518
  ```Ruby
519
519
  prefs.ask
520
520
  ```
521
- ![alt text](https://raw.githubusercontent.com/bachya/cli-utils/master/res/readme-images/prefs-ask-options.png "Options")
521
+ ![alt text](https://raw.githubusercontent.com/bachya/cliutils/master/res/readme-images/prefs-ask-options.png "Options")
522
522
 
523
523
  ## Validators
524
524
 
@@ -556,7 +556,7 @@ prompts:
556
556
  ```Ruby
557
557
  prefs.ask
558
558
  ```
559
- ![alt text](https://raw.githubusercontent.com/bachya/cli-utils/master/res/readme-images/prefs-ask-validators.png "Validators")
559
+ ![alt text](https://raw.githubusercontent.com/bachya/cliutils/master/res/readme-images/prefs-ask-validators.png "Validators")
560
560
 
561
561
  Note that validators are evaluated in order, from top to bottom. If any validator fails, `messenger` will display an error and prompt the user to try again.
562
562
 
@@ -593,7 +593,7 @@ prompts:
593
593
  ```Ruby
594
594
  prefs.ask
595
595
  ```
596
- ![alt text](https://raw.githubusercontent.com/bachya/cli-utils/master/res/readme-images/prefs-ask-behaviors.png "Behaviors")
596
+ ![alt text](https://raw.githubusercontent.com/bachya/cliutils/master/res/readme-images/prefs-ask-behaviors.png "Behaviors")
597
597
 
598
598
  Note that behaviors are executed in order, which might give you different results than you're expecting. Using the YAML above, for example, placing the `uppercase` behavior last in the list will uppercase *the entire string* (including prefix and suffix).
599
599
 
@@ -646,8 +646,9 @@ Several items to note:
646
646
  1. The action class needs to be wrapped in the CLIUtils module.
647
647
  2. The class name needs to be the camel-case version of the `action` key in the YAML.
648
648
  3. The class name needs to end with "Action".
649
- 4. The class needs to inherit from the PrefAction class.
650
- 5. The class needs to implement one method: `method(parameters)`
649
+ 4. The class needs to inherit from the PrefAction class. This allows it to have access to:
650
+ * `@pref`: the Pref that implemented this action
651
+ 5. The class needs to implement one method: `run(parameters = {})`
651
652
 
652
653
  ### Testing
653
654
 
@@ -656,9 +657,9 @@ Let's run it!
656
657
  ```Ruby
657
658
  prefs.ask
658
659
  ```
659
- ![alt text](https://raw.githubusercontent.com/bachya/cli-utils/master/res/readme-images/actions-1.png "Pre-action")
660
- ![alt text](https://raw.githubusercontent.com/bachya/cli-utils/master/res/readme-images/actions-2.png "Action")
661
- ![alt text](https://raw.githubusercontent.com/bachya/cli-utils/master/res/readme-images/actions-3.png "Post-action")
660
+ ![alt text](https://raw.githubusercontent.com/bachya/cliutils/master/res/readme-images/actions-1.png "Pre-action")
661
+ ![alt text](https://raw.githubusercontent.com/bachya/cliutils/master/res/readme-images/actions-2.png "Action")
662
+ ![alt text](https://raw.githubusercontent.com/bachya/cliutils/master/res/readme-images/actions-3.png "Post-action")
662
663
 
663
664
  ## Adding Pref Responses to a Configurator
664
665
 
@@ -694,7 +695,7 @@ In this case, `Prefs` will look to see if any values already exist for a specifi
694
695
 
695
696
  To view my current roadmap and objectives, check out the [Trello board](https://trello.com/b/qXs7Yeir/cliutils "CLIUtils on Trello").
696
697
 
697
- To report bugs with or suggest features/changes for CLIUtils, please use the [Issues Page](http://github.com/bachya/cli-utils/issues).
698
+ To report bugs with or suggest features/changes for CLIUtils, please use the [Issues Page](http://github.com/bachya/cliutils/issues).
698
699
 
699
700
  # Contributing
700
701
 
@@ -1,5 +1,5 @@
1
1
  # Stores constants to use.
2
2
  module CLIUtils
3
3
  # The current version of the gem
4
- VERSION = '1.4.0'
4
+ VERSION = '1.4.1'
5
5
  end
@@ -179,6 +179,7 @@ module CLIUtils
179
179
 
180
180
  if (@pre[:action])
181
181
  action_obj = _load_action(@pre[:action])
182
+ action_obj.pref = self
182
183
  action_obj.run(@pre[:action_parameters][0])
183
184
  end
184
185
  end
@@ -190,6 +191,7 @@ module CLIUtils
190
191
 
191
192
  if (@post[:action])
192
193
  action_obj = _load_action(@post[:action])
194
+ action_obj.pref = self
193
195
  action_obj.run(@post[:action_parameters][0])
194
196
  end
195
197
  end
@@ -204,6 +206,7 @@ module CLIUtils
204
206
  if File.exist?(path_or_name)
205
207
  # If the file exists, we're assuming that the user
206
208
  # passed a filepath.
209
+ action_path = File.expand_path(path_or_name) if path_or_name.start_with?('~')
207
210
  action_path = "#{ path_or_name }_action"
208
211
  action_name = File.basename(path_or_name, '.*').camelize
209
212
  else
@@ -0,0 +1,7 @@
1
+ module CLIUtils
2
+ class OpenUrlAction < PrefAction
3
+ def run(parameters)
4
+ `open #{ parameters[:url] }`
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,23 @@
1
+ module CLIUtils
2
+ # The generic base class for a Pref
3
+ # action.
4
+ class PrefAction
5
+ include Messaging
6
+
7
+ # Holds a reference to the pref that
8
+ # is implementing this action.
9
+ # @return [Pref]
10
+ attr_accessor :pref
11
+
12
+ # Runs the plugin. Note that the
13
+ # method implemented here shows
14
+ # an error (indicating that it
15
+ # needs to be implemented in a
16
+ # subclass).
17
+ # @parameter [Hash] parameters
18
+ # @return [void]
19
+ def run(parameters = {})
20
+ messenger.error("`run` method not implemented on caller: #{ self.class }")
21
+ end
22
+ end
23
+ end
Binary file
Binary file
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cliutils
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Bach
@@ -93,9 +93,14 @@ files:
93
93
  - lib/cliutils/messaging.rb
94
94
  - lib/cliutils/prefs.rb
95
95
  - lib/cliutils/prefs/pref.rb
96
+ - lib/cliutils/prefs/pref_actions/open_url_action.rb
97
+ - lib/cliutils/prefs/pref_actions/pref_action.rb
96
98
  - lib/cliutils/prefs/pref_behavior.rb
97
99
  - lib/cliutils/prefs/pref_validation.rb
98
100
  - lib/cliutils/pretty_io.rb
101
+ - res/readme-images/actions-1.png
102
+ - res/readme-images/actions-2.png
103
+ - res/readme-images/actions-3.png
99
104
  - res/readme-images/messenger-types-1.png
100
105
  - res/readme-images/messenger-warn.png
101
106
  - res/readme-images/multi-logger.png