sifttter-redux 0.4.0 → 0.4.1
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 +4 -4
- data/.travis.yml +1 -5
- data/HISTORY.md +6 -0
- data/README.md +22 -1
- data/bin/srd +37 -18
- data/lib/sifttter_redux/cli_message.rb +7 -4
- data/lib/sifttter_redux/configuration.rb +4 -4
- data/lib/sifttter_redux/dbu.rb +23 -28
- data/lib/sifttter_redux/sifttter.rb +2 -2
- data/lib/sifttter_redux/string_extensions.rb +1 -1
- data/lib/sifttter_redux/version.rb +2 -1
- data/lib/sifttter_redux.rb +12 -13
- data/test/cli_message_test.rb +25 -13
- data/test/configuration_test.rb +28 -28
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3775e070fe18f1cf9c290b81ea98344482fb877e
|
4
|
+
data.tar.gz: b99739072ee074da6f951a48c257bf634e6ea347
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9b75d13ddd3e3794930b21cba62a02be62398e3830d2e5abb72407eb155b31889b277b238ada6223ad37cad503d99b6e2a9f55ba34ca66d0624102d611cd34e
|
7
|
+
data.tar.gz: 132d7265b89e72dd7722b754cd65a4d6714352f4c3b7fe19bc1e380088ee9e242397c39aa5aface0b6e70c9649b5d3b91966d779211aac73948ee44167315d6a
|
data/.travis.yml
CHANGED
data/HISTORY.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
# 0.4.1 (2014-02-26)
|
2
|
+
|
3
|
+
* Added `-s` flag to `init` command for initialization from scratch
|
4
|
+
* Added gem version to config file (for reference going forward)
|
5
|
+
* Added message to prompt users to re-init on upgrade
|
6
|
+
|
1
7
|
# 0.4.0 (2014-02-26)
|
2
8
|
|
3
9
|
* Removed some hardcoded values
|
data/README.md
CHANGED
@@ -47,7 +47,7 @@ SYNOPSIS
|
|
47
47
|
srd [global options] command [command options] [arguments...]
|
48
48
|
|
49
49
|
VERSION
|
50
|
-
0.
|
50
|
+
0.4.1
|
51
51
|
|
52
52
|
GLOBAL OPTIONS
|
53
53
|
--help - Show this message
|
@@ -60,6 +60,27 @@ COMMANDS
|
|
60
60
|
init - Install and initialize dependencies
|
61
61
|
```
|
62
62
|
|
63
|
+
Note that each command's options can be revealed by adding the `--help` switch after the command. For example:
|
64
|
+
|
65
|
+
```
|
66
|
+
$ srd exec --help
|
67
|
+
NAME
|
68
|
+
exec - Execute the script
|
69
|
+
|
70
|
+
SYNOPSIS
|
71
|
+
srd [global options] exec [command options]
|
72
|
+
|
73
|
+
COMMAND OPTIONS
|
74
|
+
-c - Run catch-up mode from the beginning of the week to yesterday
|
75
|
+
-f arg - Run catch-up mode with this start date (default: none)
|
76
|
+
-i - Include today's date in catch-up
|
77
|
+
-n arg - Run catch-up mode for the last N days (default: none)
|
78
|
+
-t arg - Run catch-up mode with this end date (must also have -f) (default: none)
|
79
|
+
--[no-]verbose - Turns on verbose output
|
80
|
+
-w arg - Run catch-up mode for the last N weeks (default: none)
|
81
|
+
-y - Run catch-up mode for yesterday
|
82
|
+
```
|
83
|
+
|
63
84
|
## Initialization
|
64
85
|
|
65
86
|
```
|
data/bin/srd
CHANGED
@@ -64,20 +64,33 @@ switch(
|
|
64
64
|
# ======================================================
|
65
65
|
|
66
66
|
pre do |global, command, options, args|
|
67
|
+
|
67
68
|
# Load SifttterRedux configuration module.
|
68
|
-
Configuration
|
69
|
+
Configuration::load(SRD_CONFIG_FILEPATH)
|
69
70
|
|
70
71
|
# Load Methadone CLILogging module.
|
71
|
-
Methadone::CLILogging
|
72
|
+
Methadone::CLILogging::change_logger(Methadone::CLILogger.new(SRD_LOG_FILEPATH, SRD_LOG_FILEPATH))
|
73
|
+
|
74
|
+
if File.exists?(SRD_CONFIG_FILEPATH)
|
75
|
+
# If the config file needs updating, force the user to do that first.
|
76
|
+
if Configuration['sifttter_redux']['version'].nil? || Gem::Version.new(Configuration['sifttter_redux']['version']) < Gem::Version.new(NEWEST_CONFIG_VERSION)
|
77
|
+
CLIMessage::info('This version needs to make some config changes.')
|
78
|
+
CLIMessage::info("Don't worry; when prompted, original values to existing config options will be presented.")
|
79
|
+
CLIMessage::prompt("Press enter to continue")
|
80
|
+
|
81
|
+
SifttterRedux::init
|
82
|
+
exit!
|
83
|
+
end
|
84
|
+
else
|
85
|
+
# Force the user to initialize if they try to execute first.
|
86
|
+
CLIMessage::info('You need to initialize Sifttter Redux first...') unless command.name_for_help[0] == 'init'
|
72
87
|
|
73
|
-
|
74
|
-
|
75
|
-
CLIMessage.info('You need to initialize Sifttter Redux first...')
|
76
|
-
SifttterRedux.init
|
88
|
+
SifttterRedux::init
|
89
|
+
exit!
|
77
90
|
end
|
78
91
|
|
79
92
|
# Load Dropbox Uploader module.
|
80
|
-
DBU.load(
|
93
|
+
DBU.load(Configuration['db_uploader']['exe_filepath']) if File.exists?(SRD_CONFIG_FILEPATH)
|
81
94
|
|
82
95
|
true
|
83
96
|
end
|
@@ -139,7 +152,7 @@ command :exec do |c|
|
|
139
152
|
|
140
153
|
SifttterRedux.verbose = global_options[:verbose] || options[:verbose]
|
141
154
|
|
142
|
-
CLIMessage
|
155
|
+
CLIMessage::section_block('EXECUTING...') do
|
143
156
|
if options[:c] || options[:n] || options[:w] || options[:y] || options[:f] || options[:t]
|
144
157
|
|
145
158
|
command_complete = false
|
@@ -174,11 +187,11 @@ command :exec do |c|
|
|
174
187
|
dates = DateRangeMaker.range(options[:f], options[:t], options[:i])
|
175
188
|
|
176
189
|
if dates.last > Date.today
|
177
|
-
CLIMessage
|
190
|
+
CLIMessage::warning("Ignoring overextended end date and using today's date (#{ Date.today })")
|
178
191
|
dates = (dates.first..Date.today)
|
179
192
|
end
|
180
193
|
rescue ArgumentError => e
|
181
|
-
CLIMessage
|
194
|
+
CLIMessage::error(e)
|
182
195
|
end
|
183
196
|
end
|
184
197
|
else
|
@@ -191,10 +204,10 @@ command :exec do |c|
|
|
191
204
|
|
192
205
|
if first_date == second_date
|
193
206
|
date_string = first_date.strftime('%B %d, %Y')
|
194
|
-
CLIMessage
|
207
|
+
CLIMessage::info("Creating entry for #{ date_string }...")
|
195
208
|
else
|
196
209
|
date_string = "#{ first_date.strftime('%B %d, %Y') } to #{ second_date.strftime('%B %d, %Y') }"
|
197
|
-
CLIMessage
|
210
|
+
CLIMessage::info("Creating entries for dates from #{ date_string }...")
|
198
211
|
end
|
199
212
|
|
200
213
|
DBU.local_target = Configuration['sifttter_redux']['sifttter_local_filepath']
|
@@ -208,7 +221,7 @@ command :exec do |c|
|
|
208
221
|
|
209
222
|
# Upload any Day One entries to Dropbox (if there are any).
|
210
223
|
unless Dir[Configuration['sifttter_redux']['dayone_local_filepath'] + '/*'].empty?
|
211
|
-
DBU.local_target = "#{Configuration['sifttter_redux']['dayone_local_filepath']}/*"
|
224
|
+
DBU.local_target = "#{ Configuration['sifttter_redux']['dayone_local_filepath'] }/*"
|
212
225
|
DBU.remote_target = Configuration['sifttter_redux']['dayone_remote_filepath']
|
213
226
|
DBU.message = 'Uploading Day One entries to Dropbox...'
|
214
227
|
DBU.upload
|
@@ -220,7 +233,7 @@ command :exec do |c|
|
|
220
233
|
Configuration['sifttter_redux']['sifttter_local_filepath']
|
221
234
|
]
|
222
235
|
|
223
|
-
CLIMessage
|
236
|
+
CLIMessage::info_block('Removing temporary local files...') { dirs.each { |d| FileUtils.rm_rf(d) } }
|
224
237
|
end
|
225
238
|
end
|
226
239
|
end
|
@@ -234,12 +247,18 @@ end
|
|
234
247
|
# ------------------------------------------------------
|
235
248
|
desc 'Install and initialize dependencies'
|
236
249
|
command :init do |c|
|
250
|
+
|
251
|
+
c.switch(
|
252
|
+
[:s],
|
253
|
+
desc: 'Run init from scratch (i.e., clear out all values from configuration)'
|
254
|
+
)
|
255
|
+
|
237
256
|
c.action do |global_options, options, args|
|
238
|
-
CLIMessage
|
239
|
-
if File.exists?(Configuration
|
240
|
-
SifttterRedux
|
257
|
+
CLIMessage::section_block('INITIALIZING...') do
|
258
|
+
if File.exists?(Configuration::config_path) && !options[:s]
|
259
|
+
SifttterRedux::init(true) if CLIMessage::prompt("It looks like you've already initialized Sifttter Redux. Do you want to re-initialize?", 'N').downcase == 'y'
|
241
260
|
else
|
242
|
-
SifttterRedux
|
261
|
+
SifttterRedux::init
|
243
262
|
end
|
244
263
|
end
|
245
264
|
end
|
@@ -70,14 +70,17 @@ module SifttterRedux
|
|
70
70
|
# @param default The default option
|
71
71
|
# @return String
|
72
72
|
# ----------------------------------------------------
|
73
|
-
def self.prompt(prompt, default)
|
74
|
-
print "#{ prompt } [default: #{ default }]: "
|
73
|
+
def self.prompt(prompt, default = nil, log = true)
|
74
|
+
print "#{ prompt } #{ default.nil? ? '' : "[default: #{ default }]:" } ".blue
|
75
75
|
choice = $stdin.gets.chomp
|
76
76
|
if choice.empty?
|
77
|
-
|
77
|
+
r = default
|
78
78
|
else
|
79
|
-
|
79
|
+
r = choice
|
80
80
|
end
|
81
|
+
|
82
|
+
Methadone::CLILogging.info("Answer to '#{ prompt }': #{r}") if log
|
83
|
+
r
|
81
84
|
end
|
82
85
|
|
83
86
|
# ----------------------------------------------------
|
@@ -19,7 +19,7 @@ module SifttterRedux
|
|
19
19
|
if section_exists?(section_name)
|
20
20
|
@data[section_name]
|
21
21
|
else
|
22
|
-
error = "Section does not exist: #{section_name}"
|
22
|
+
error = "Section does not exist: #{ section_name }"
|
23
23
|
Methadone::CLILogging.error(error)
|
24
24
|
fail ArgumentError, error
|
25
25
|
end
|
@@ -39,7 +39,7 @@ module SifttterRedux
|
|
39
39
|
@data[section_name] = {}
|
40
40
|
@data[section_name].merge!(hash)
|
41
41
|
else
|
42
|
-
error = "Parameter is not a Hash: #{hash}"
|
42
|
+
error = "Parameter is not a Hash: #{ hash }"
|
43
43
|
Methadone::CLILogging.error(error)
|
44
44
|
fail ArgumentError, error
|
45
45
|
end
|
@@ -56,7 +56,7 @@ module SifttterRedux
|
|
56
56
|
if !self.section_exists?(section_name)
|
57
57
|
@data[section_name] = {}
|
58
58
|
else
|
59
|
-
CLIMessage
|
59
|
+
CLIMessage::warning("Can't create already-existing section: #{ section_name }")
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
@@ -81,7 +81,7 @@ module SifttterRedux
|
|
81
81
|
if self.section_exists?(section_name)
|
82
82
|
@data.delete(section_name)
|
83
83
|
else
|
84
|
-
CLIMessage
|
84
|
+
CLIMessage::warning("Can't delete non-existing section: #{ section_name }")
|
85
85
|
end
|
86
86
|
end
|
87
87
|
|
data/lib/sifttter_redux/dbu.rb
CHANGED
@@ -17,7 +17,7 @@ module SifttterRedux
|
|
17
17
|
# ----------------------------------------------------
|
18
18
|
def self.download
|
19
19
|
if !@local_path.nil? && !@remote_path.nil?
|
20
|
-
CLIMessage
|
20
|
+
CLIMessage::info_block(@message ||= DEFAULT_MESSAGE, 'Done.', SifttterRedux.verbose) do
|
21
21
|
if SifttterRedux.verbose
|
22
22
|
system "#{ @dbu } download #{ @remote_path } #{ @local_path }"
|
23
23
|
else
|
@@ -38,37 +38,32 @@ module SifttterRedux
|
|
38
38
|
# local filesystem.
|
39
39
|
# @return Void
|
40
40
|
# ----------------------------------------------------
|
41
|
-
def self.install_wizard
|
42
|
-
|
41
|
+
def self.install_wizard(already_initialized = false)
|
42
|
+
CLIMessage::section_block('CONFIGURING DROPBOX UPLOADER...') do
|
43
|
+
# Prompt the user for a location to save Dropbox Uploader. '
|
44
|
+
path = CLIMessage::prompt('Location for Dropbox-Uploader', already_initialized ? Configuration['db_uploader']['base_filepath'] : DBU_LOCAL_FILEPATH)
|
45
|
+
path.chop! if path.end_with?('/')
|
43
46
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
path.chop! if path.end_with?('/')
|
49
|
-
path = '/usr/local/opt' if path.empty?
|
47
|
+
# If the entered directory exists, clone the repository.
|
48
|
+
if File.directory?(path)
|
49
|
+
dbu_path = File.join(path, 'Dropbox-Uploader')
|
50
|
+
executable_path = File.join(dbu_path, 'dropbox_uploader.sh')
|
50
51
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
if File.directory?(path)
|
57
|
-
CLIMessage.warning("Using pre-existing Dropbox Uploader at #{ path }...")
|
58
|
-
else
|
59
|
-
CLIMessage.info_block("Downloading Dropbox Uploader to #{ path }...", 'Done.', true) do
|
60
|
-
system "git clone https://github.com/andreafabrizi/Dropbox-Uploader.git #{ path }"
|
61
|
-
end
|
52
|
+
if File.directory?(dbu_path)
|
53
|
+
CLIMessage::warning("Using pre-existing Dropbox Uploader at #{ dbu_path }...")
|
54
|
+
else
|
55
|
+
CLIMessage::info_block("Downloading Dropbox Uploader to #{ dbu_path }...", 'Done.', true) do
|
56
|
+
system "git clone https://github.com/andreafabrizi/Dropbox-Uploader.git #{ dbu_path }"
|
62
57
|
end
|
58
|
+
end
|
63
59
|
|
64
|
-
|
65
|
-
|
60
|
+
# If the user has never configured Dropbox Uploader, have them do it here.
|
61
|
+
CLIMessage::info_block('Initializing Dropbox Uploader...') { system "#{ executable_path }" } unless File.exists?(CONFIG_FILEPATH)
|
66
62
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
end
|
63
|
+
Configuration::add_section('db_uploader') unless Configuration::section_exists?('db_uploader')
|
64
|
+
Configuration['db_uploader'].merge!('base_filepath' => path, 'dbu_filepath' => dbu_path, 'exe_filepath' => executable_path)
|
65
|
+
else
|
66
|
+
CLIMessage::error("Sorry, but #{ path } isn't a valid directory.")
|
72
67
|
end
|
73
68
|
end
|
74
69
|
end
|
@@ -129,7 +124,7 @@ module SifttterRedux
|
|
129
124
|
# ----------------------------------------------------
|
130
125
|
def self.upload
|
131
126
|
if !@local_path.nil? && !@remote_path.nil?
|
132
|
-
CLIMessage
|
127
|
+
CLIMessage::info_block(@message ||= DEFAULT_MESSAGE, 'Done.', SifttterRedux.verbose) do
|
133
128
|
if SifttterRedux.verbose
|
134
129
|
system "#{ @dbu } upload #{ @local_path } #{ @remote_path }"
|
135
130
|
else
|
@@ -77,7 +77,7 @@ module SifttterRedux
|
|
77
77
|
end
|
78
78
|
|
79
79
|
if projects.length <=0
|
80
|
-
CLIMessage
|
80
|
+
CLIMessage::warning('No entries found...')
|
81
81
|
end
|
82
82
|
|
83
83
|
if projects.length > 0
|
@@ -91,7 +91,7 @@ module SifttterRedux
|
|
91
91
|
fh = File.new(File.expand_path(Configuration['sifttter_redux']['dayone_local_filepath'] + '/' + uuid + '.doentry'), 'w+')
|
92
92
|
fh.puts template.result(binding)
|
93
93
|
fh.close
|
94
|
-
CLIMessage
|
94
|
+
CLIMessage::success("Entry logged for #{ date_for_title }...")
|
95
95
|
end
|
96
96
|
end
|
97
97
|
end
|
data/lib/sifttter_redux.rb
CHANGED
@@ -34,53 +34,52 @@ module SifttterRedux
|
|
34
34
|
# collecting all necessary items and info.
|
35
35
|
# @return Void
|
36
36
|
# ----------------------------------------------------
|
37
|
-
def self.init
|
37
|
+
def self.init(already_initialized = false)
|
38
38
|
# Re-initialize the configuration data.
|
39
|
-
Configuration
|
40
|
-
Configuration.
|
41
|
-
Configuration['sifttter_redux'].merge!('config_location' => Configuration.config_path)
|
39
|
+
Configuration::add_section('sifttter_redux') unless Configuration::section_exists?('sifttter_redux')
|
40
|
+
Configuration['sifttter_redux'].merge!('version' => VERSION, 'config_location' => Configuration::config_path)
|
42
41
|
|
43
42
|
# Run the wizard to download Dropbox Uploader.
|
44
|
-
DBU::install_wizard
|
43
|
+
DBU::install_wizard(already_initialized = already_initialized)
|
45
44
|
|
46
45
|
# Collect other misc. preferences.
|
47
|
-
CLIMessage
|
46
|
+
CLIMessage::section_block('COLLECTING PREFERENCES...') do
|
48
47
|
pref_prompts = [
|
49
48
|
{
|
50
49
|
prompt: 'Location for downloaded Sifttter files from Dropbox',
|
51
|
-
default: SFT_LOCAL_FILEPATH,
|
50
|
+
default: already_initialized ? Configuration['sifttter_redux']['sifttter_local_filepath'] : SFT_LOCAL_FILEPATH,
|
52
51
|
key: 'sifttter_local_filepath',
|
53
52
|
section: 'sifttter_redux'
|
54
53
|
},
|
55
54
|
{
|
56
55
|
prompt: 'Location of Sifttter files in Dropbox',
|
57
|
-
default: SFT_REMOTE_FILEPATH,
|
56
|
+
default: already_initialized ? Configuration['sifttter_redux']['sifttter_remote_filepath'] : SFT_REMOTE_FILEPATH,
|
58
57
|
key: 'sifttter_remote_filepath',
|
59
58
|
section: 'sifttter_redux'
|
60
59
|
},
|
61
60
|
{
|
62
61
|
prompt: 'Location for downloaded Day One files from Dropbox',
|
63
|
-
default: DO_LOCAL_FILEPATH,
|
62
|
+
default: already_initialized ? Configuration['sifttter_redux']['dayone_local_filepath'] : DO_LOCAL_FILEPATH,
|
64
63
|
key: 'dayone_local_filepath',
|
65
64
|
section: 'sifttter_redux'
|
66
65
|
},
|
67
66
|
{
|
68
67
|
prompt: 'Location of Day One files in Dropbox',
|
69
|
-
default: DO_REMOTE_FILEPATH,
|
68
|
+
default: already_initialized ? Configuration['sifttter_redux']['dayone_remote_filepath'] : DO_REMOTE_FILEPATH,
|
70
69
|
key: 'dayone_remote_filepath',
|
71
70
|
section: 'sifttter_redux'
|
72
71
|
}
|
73
72
|
]
|
74
73
|
|
75
74
|
pref_prompts.each do |prompt|
|
76
|
-
pref = CLIMessage
|
75
|
+
pref = CLIMessage::prompt(prompt[:prompt], prompt[:default])
|
77
76
|
Configuration[prompt[:section]].merge!(prompt[:key] => pref)
|
78
77
|
end
|
79
78
|
end
|
80
79
|
|
81
|
-
Methadone::CLILogging.info("Configuration values: #{ Configuration
|
80
|
+
Methadone::CLILogging.info("Configuration values: #{ Configuration::dump }")
|
82
81
|
|
83
|
-
Configuration
|
82
|
+
Configuration::save
|
84
83
|
end
|
85
84
|
|
86
85
|
# ----------------------------------------------------
|
data/test/cli_message_test.rb
CHANGED
@@ -6,50 +6,62 @@ include Methadone::CLILogging
|
|
6
6
|
|
7
7
|
class CLIMessageTest < Test::Unit::TestCase
|
8
8
|
def test_error_message
|
9
|
-
assert_output('---> ERROR: test'.red + "\n") { SifttterRedux::CLIMessage
|
9
|
+
assert_output('---> ERROR: test'.red + "\n") { SifttterRedux::CLIMessage::error('test', false) }
|
10
10
|
end
|
11
11
|
|
12
12
|
def test_info_message
|
13
|
-
assert_output('---> INFO: test'.blue + "\n") { SifttterRedux::CLIMessage
|
13
|
+
assert_output('---> INFO: test'.blue + "\n") { SifttterRedux::CLIMessage::info('test', false) }
|
14
14
|
end
|
15
15
|
|
16
16
|
def test_info_block_single_line
|
17
17
|
assert_output("---> INFO: start".blue + "body\n" + 'end'.blue + "\n") do
|
18
|
-
SifttterRedux::CLIMessage
|
18
|
+
SifttterRedux::CLIMessage::info_block('start', 'end', false, false) { puts 'body' }
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
22
|
def test_info_block_multiline
|
23
23
|
assert_output("---> INFO: start".blue + "\nbody\n" + '---> INFO: end'.blue + "\n") do
|
24
|
-
SifttterRedux::CLIMessage
|
24
|
+
SifttterRedux::CLIMessage::info_block('start', 'end', true, false) { puts 'body' }
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
28
|
def test_info_block_no_block
|
29
29
|
assert_raise ArgumentError do
|
30
|
-
SifttterRedux::CLIMessage
|
30
|
+
SifttterRedux::CLIMessage::info_block('start', 'end', true, false)
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
# def test_prompt
|
35
|
-
# assert_equal(SifttterRedux::CLIMessage.prompt('Pick the default option', 'default'), 'default')
|
36
|
-
# end
|
37
|
-
|
38
34
|
def test_section_message
|
39
|
-
assert_output('#### test'.purple + "\n") { SifttterRedux::CLIMessage
|
35
|
+
assert_output('#### test'.purple + "\n") { SifttterRedux::CLIMessage::section('test', false) }
|
40
36
|
end
|
41
37
|
|
42
38
|
def test_section_block_single_line
|
43
39
|
assert_output("#### section".purple + "\nbody\n") do
|
44
|
-
SifttterRedux::CLIMessage
|
40
|
+
SifttterRedux::CLIMessage::section_block('section', true, false) { puts 'body' }
|
45
41
|
end
|
46
42
|
end
|
47
43
|
|
48
44
|
def test_success_message
|
49
|
-
assert_output('---> SUCCESS: test'.green + "\n") { SifttterRedux::CLIMessage
|
45
|
+
assert_output('---> SUCCESS: test'.green + "\n") { SifttterRedux::CLIMessage::success('test', false) }
|
50
46
|
end
|
51
47
|
|
52
48
|
def test_warning_message
|
53
|
-
assert_output('---> WARNING: test'.yellow + "\n") { SifttterRedux::CLIMessage
|
49
|
+
assert_output('---> WARNING: test'.yellow + "\n") { SifttterRedux::CLIMessage::warning('test', false) }
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_prompt
|
53
|
+
with_stdin do |answer|
|
54
|
+
answer.puts 'default'
|
55
|
+
assert_equal(SifttterRedux::CLIMessage::prompt('Hit enter to give the default response', 'default'), 'default')
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def with_stdin
|
60
|
+
stdin = $stdin # remember $stdin
|
61
|
+
$stdin, write = IO.pipe # create pipe assigning its "read end" to $stdin
|
62
|
+
yield write # pass pipe's "write end" to block
|
63
|
+
ensure
|
64
|
+
write.close # close pipe
|
65
|
+
$stdin = stdin # restore $stdin
|
54
66
|
end
|
55
67
|
end
|
data/test/configuration_test.rb
CHANGED
@@ -4,7 +4,7 @@ require File.join(File.dirname(__FILE__), '..', 'lib/sifttter_redux/configuratio
|
|
4
4
|
class ConfigurationTest < Test::Unit::TestCase
|
5
5
|
|
6
6
|
def setup
|
7
|
-
SifttterRedux::Configuration
|
7
|
+
SifttterRedux::Configuration::load('/tmp/srd_config')
|
8
8
|
end
|
9
9
|
|
10
10
|
def teardown
|
@@ -12,57 +12,57 @@ class ConfigurationTest < Test::Unit::TestCase
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_add_data
|
15
|
-
SifttterRedux::Configuration
|
15
|
+
SifttterRedux::Configuration::add_section('section1')
|
16
16
|
SifttterRedux::Configuration['section1'] = { 'a' => 'test', 'b' => 'test' }
|
17
|
-
assert_equal(SifttterRedux::Configuration
|
17
|
+
assert_equal(SifttterRedux::Configuration::dump, { 'section1' => { 'a' => 'test', 'b' => 'test' } })
|
18
18
|
|
19
19
|
SifttterRedux::Configuration['section1']['a'] = 'bigger test'
|
20
20
|
SifttterRedux::Configuration['section1']['c'] = 'little test'
|
21
|
-
assert_equal(SifttterRedux::Configuration
|
21
|
+
assert_equal(SifttterRedux::Configuration::dump, { 'section1' => { 'a' => 'bigger test', 'b' => 'test', 'c' => 'little test' } })
|
22
22
|
end
|
23
23
|
|
24
24
|
def test_add_section
|
25
|
-
SifttterRedux::Configuration
|
26
|
-
SifttterRedux::Configuration
|
27
|
-
assert_equal(SifttterRedux::Configuration
|
25
|
+
SifttterRedux::Configuration::add_section('section1')
|
26
|
+
SifttterRedux::Configuration::add_section('section2')
|
27
|
+
assert_equal(SifttterRedux::Configuration::dump, { 'section1' => {}, 'section2' => {} })
|
28
28
|
end
|
29
29
|
|
30
30
|
def test_add_section_duplicate
|
31
|
-
SifttterRedux::Configuration
|
32
|
-
SifttterRedux::Configuration
|
33
|
-
SifttterRedux::Configuration
|
34
|
-
assert_equal(SifttterRedux::Configuration
|
31
|
+
SifttterRedux::Configuration::add_section('section1')
|
32
|
+
SifttterRedux::Configuration::add_section('section2')
|
33
|
+
SifttterRedux::Configuration::add_section('section2')
|
34
|
+
assert_equal(SifttterRedux::Configuration::dump, { 'section1' => {}, 'section2' => {} })
|
35
35
|
end
|
36
36
|
|
37
37
|
def test_config_path
|
38
|
-
assert_equal(SifttterRedux::Configuration
|
38
|
+
assert_equal(SifttterRedux::Configuration::config_path, '/tmp/srd_config')
|
39
39
|
end
|
40
40
|
|
41
41
|
def test_delete_section
|
42
|
-
SifttterRedux::Configuration
|
43
|
-
SifttterRedux::Configuration
|
44
|
-
SifttterRedux::Configuration
|
45
|
-
assert_equal(SifttterRedux::Configuration
|
42
|
+
SifttterRedux::Configuration::add_section('section1')
|
43
|
+
SifttterRedux::Configuration::add_section('section2')
|
44
|
+
SifttterRedux::Configuration::delete_section('section2')
|
45
|
+
assert_equal(SifttterRedux::Configuration::dump, { 'section1' => {} })
|
46
46
|
end
|
47
47
|
|
48
48
|
def test_delete_section_nonexistant
|
49
|
-
SifttterRedux::Configuration
|
50
|
-
SifttterRedux::Configuration
|
51
|
-
assert_equal(SifttterRedux::Configuration
|
49
|
+
SifttterRedux::Configuration::add_section('section1')
|
50
|
+
SifttterRedux::Configuration::delete_section('section12723762323')
|
51
|
+
assert_equal(SifttterRedux::Configuration::dump, { 'section1' => {} })
|
52
52
|
end
|
53
53
|
|
54
54
|
def test_reset
|
55
|
-
SifttterRedux::Configuration
|
56
|
-
SifttterRedux::Configuration
|
57
|
-
SifttterRedux::Configuration
|
58
|
-
SifttterRedux::Configuration
|
59
|
-
assert_equal(SifttterRedux::Configuration
|
55
|
+
SifttterRedux::Configuration::add_section('section1')
|
56
|
+
SifttterRedux::Configuration::add_section('section2')
|
57
|
+
SifttterRedux::Configuration::add_section('section3')
|
58
|
+
SifttterRedux::Configuration::reset
|
59
|
+
assert_equal(SifttterRedux::Configuration::dump, {})
|
60
60
|
end
|
61
61
|
|
62
62
|
def test_save
|
63
|
-
SifttterRedux::Configuration
|
63
|
+
SifttterRedux::Configuration::add_section('section1')
|
64
64
|
SifttterRedux::Configuration['section1'] = { 'a' => 'test', 'b' => 'test' }
|
65
|
-
SifttterRedux::Configuration
|
65
|
+
SifttterRedux::Configuration::save
|
66
66
|
|
67
67
|
File.open('/tmp/srd_config', 'r') do |f|
|
68
68
|
assert_output("---\nsection1:\n a: test\n b: test\n") { puts f.read }
|
@@ -70,7 +70,7 @@ class ConfigurationTest < Test::Unit::TestCase
|
|
70
70
|
end
|
71
71
|
|
72
72
|
def test_section_exists
|
73
|
-
SifttterRedux::Configuration
|
74
|
-
assert_equal(SifttterRedux::Configuration
|
73
|
+
SifttterRedux::Configuration::add_section('section1')
|
74
|
+
assert_equal(SifttterRedux::Configuration::section_exists?('section1'), true)
|
75
75
|
end
|
76
76
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sifttter-redux
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Bach
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|