sifttter-redux 0.4.6 → 0.4.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/HISTORY.md +8 -0
- data/README.md +4 -4
- data/bin/srd +49 -40
- data/lib/sifttter_redux/cli_message.rb +157 -31
- data/lib/sifttter_redux/date_range_maker.rb +0 -6
- data/lib/sifttter_redux/dropbox_uploader.rb +77 -0
- data/lib/sifttter_redux/sifttter.rb +1 -2
- data/lib/sifttter_redux/version.rb +2 -2
- data/lib/sifttter_redux.rb +89 -28
- data/sifttter_redux.gemspec +0 -1
- data/test/cli_message_test.rb +17 -15
- metadata +3 -18
- data/lib/sifttter_redux/dbu.rb +0 -160
- data/lib/sifttter_redux/string_extensions.rb +0 -65
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f5212c6ef9ead91e8f71e3e2292f2e9aca80f29
|
4
|
+
data.tar.gz: a49f77302bd648f7fcbd742c0d8be1687b373fae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51a7a13606982a278551f2d2094ab16c459396987160b0a5fdd39697f334364842b044da24797c7a41c86fa345b8ca1918fe230f751b904d8e8f64ad5cf07d8f
|
7
|
+
data.tar.gz: 3e5e4007131430433b69b902593f837f396f49c3c1fcd4f6f728145f8969ec4fe5aaff676089676463409ae2431d8d1696289707d72d2efd5675e08790cfdf25
|
data/HISTORY.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
# 0.4.7 (2014-03-14)
|
2
|
+
|
3
|
+
* Reworked logging to not require Methadone
|
4
|
+
* Logging more verbose and configurable in ~/.sifttter_redux
|
5
|
+
* Dropbox Uploader updates
|
6
|
+
* Added support for path completion when prompting user to enter a filepath
|
7
|
+
* Cleaned up error handling to be displayed to user at single point
|
8
|
+
|
1
9
|
# 0.4.6 (2014-03-13)
|
2
10
|
|
3
11
|
* Added new error messaaging if Sifttter remote path is invalid
|
data/README.md
CHANGED
@@ -37,7 +37,7 @@ SYNOPSIS
|
|
37
37
|
srd [global options] command [command options] [arguments...]
|
38
38
|
|
39
39
|
VERSION
|
40
|
-
0.4.
|
40
|
+
0.4.7
|
41
41
|
|
42
42
|
GLOBAL OPTIONS
|
43
43
|
--help - Show this message
|
@@ -81,10 +81,10 @@ Initialization will perform the following steps:
|
|
81
81
|
|
82
82
|
1. Download [Dropbox Uploader](https://github.com/andreafabrizi/Dropbox-Uploader "Dropbox-Uploder") to a location of your choice.
|
83
83
|
2. Automatically configure Dropbox Uploader.
|
84
|
-
3. Collect some user
|
85
|
-
* The location on your filesystem where Sifttter files will be temporarily stored
|
84
|
+
3. Collect some user paths:
|
85
|
+
* The location on your filesystem where Sifttter files will be temporarily stored (**tab completion works here!**)
|
86
86
|
* The location of your Sifttter files in Dropbox
|
87
|
-
* The location on your filesystem where Day One files will be temporarily stored
|
87
|
+
* The location on your filesystem where Day One files will be temporarily stored (**tab completion works here!**)
|
88
88
|
* The location of your Day One files in Dropbox
|
89
89
|
|
90
90
|
## Pathing
|
data/bin/srd
CHANGED
@@ -33,12 +33,11 @@
|
|
33
33
|
# OTHER DEALINGS IN THE SOFTWARE.
|
34
34
|
#--------------------------------------------------------------------
|
35
35
|
require 'gli'
|
36
|
-
require '
|
36
|
+
require 'logger'
|
37
37
|
require 'sifttter_redux'
|
38
38
|
require 'securerandom'
|
39
39
|
|
40
40
|
include GLI::App
|
41
|
-
include Methadone::CLILogging
|
42
41
|
include SifttterRedux
|
43
42
|
|
44
43
|
# ======================================================
|
@@ -63,9 +62,9 @@ switch([:verbose], desc: 'Turns on verbose output')
|
|
63
62
|
pre do |global, command, options, args|
|
64
63
|
# Load SifttterRedux configuration module.
|
65
64
|
Configuration::load(SRD_CONFIG_FILEPATH)
|
66
|
-
|
67
|
-
#
|
68
|
-
|
65
|
+
|
66
|
+
# Set up logging.
|
67
|
+
CLIMessage::activate_logging
|
69
68
|
|
70
69
|
if File.exists?(SRD_CONFIG_FILEPATH)
|
71
70
|
current_version = Gem::Version.new(Configuration['sifttter_redux']['version'])
|
@@ -77,18 +76,15 @@ pre do |global, command, options, args|
|
|
77
76
|
CLIMessage::info("Don't worry; when prompted, your current values for")
|
78
77
|
CLIMessage::info("existing config options will be presented (so it'll")
|
79
78
|
CLIMessage::info('be easier to fly through the upgrade).')
|
80
|
-
CLIMessage::prompt('Press enter to continue')
|
79
|
+
CLIMessage::prompt('Press enter to continue: ')
|
81
80
|
SifttterRedux::init(true)
|
82
|
-
exit!
|
81
|
+
exit!(0)
|
83
82
|
end
|
84
|
-
|
85
|
-
# Load Dropbox Uploader module.
|
86
|
-
DBU.load(Configuration['db_uploader']['exe_filepath'])
|
87
83
|
else
|
88
84
|
# Force the user to init if they try to run any command other than `init` first.
|
89
85
|
CLIMessage::info('Initializing Sifttter Redux first...') unless command.name_for_help[0] == 'init'
|
90
86
|
SifttterRedux::init
|
91
|
-
exit!
|
87
|
+
exit!(0)
|
92
88
|
end
|
93
89
|
|
94
90
|
true
|
@@ -117,36 +113,49 @@ command :exec do |c|
|
|
117
113
|
c.action do |global_options, options, args|
|
118
114
|
SifttterRedux.verbose = global_options[:verbose] || options[:verbose]
|
119
115
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
116
|
+
begin
|
117
|
+
dates = SifttterRedux::get_dates_from_options(options)
|
118
|
+
unless dates.nil?
|
119
|
+
first_date = dates.first
|
120
|
+
second_date = dates.reverse_each.first
|
121
|
+
|
122
|
+
date_string = first_date.strftime('%B %d, %Y')
|
123
|
+
date_string << " to #{ second_date.strftime('%B %d, %Y') }" if first_date != second_date
|
124
|
+
CLIMessage::info("Creating #{ first_date == second_date ? 'entry' : 'entries' }: #{ date_string }")
|
125
|
+
|
126
|
+
# Download Sifttter files from Dropbox.
|
127
|
+
dbu = DropboxUploader.new(Configuration['db_uploader']['exe_filepath'])
|
128
|
+
dbu.verbose = SifttterRedux.verbose
|
129
|
+
dbu.local_target = Configuration['sifttter_redux']['sifttter_local_filepath']
|
130
|
+
dbu.remote_target = Configuration['sifttter_redux']['sifttter_remote_filepath']
|
131
|
+
dbu.message = 'Downloading Sifttter files...'
|
132
|
+
|
133
|
+
CLIMessage::info_block(dbu.message || dbu::DEFAULT_MESSAGE, 'Done.', SifttterRedux.verbose) do
|
134
|
+
dbu.download
|
135
|
+
end
|
136
|
+
|
137
|
+
# Process a new Sifttter entry for each date.
|
138
|
+
dates.each do |date|
|
139
|
+
Sifttter::run(date)
|
140
|
+
end
|
141
|
+
|
142
|
+
# Upload any Day One entries to Dropbox (if there are any).
|
143
|
+
unless Dir[Configuration['sifttter_redux']['dayone_local_filepath'] + '/*'].empty?
|
144
|
+
dbu.local_target = "#{ Configuration['sifttter_redux']['dayone_local_filepath'] }/*"
|
145
|
+
dbu.remote_target = Configuration['sifttter_redux']['dayone_remote_filepath']
|
146
|
+
dbu.message = 'Uploading Day One entries to Dropbox...'
|
147
|
+
|
148
|
+
CLIMessage::info_block(dbu.message || dbu::DEFAULT_MESSAGE, 'Done.', SifttterRedux.verbose) do
|
149
|
+
dbu.upload
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
# Remove any downloaded local files that we no longer need.
|
154
|
+
SifttterRedux::cleanup_temp_files
|
138
155
|
end
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
DBU.local_target = "#{ Configuration['sifttter_redux']['dayone_local_filepath'] }/*"
|
143
|
-
DBU.remote_target = Configuration['sifttter_redux']['dayone_remote_filepath']
|
144
|
-
DBU.message = 'Uploading Day One entries to Dropbox...'
|
145
|
-
DBU.upload
|
146
|
-
end
|
147
|
-
|
148
|
-
# Remove any downloaded local files that we no longer need.
|
149
|
-
SifttterRedux::cleanup_temp_files
|
156
|
+
rescue StandardError => e
|
157
|
+
CLIMessage::error(e.to_s)
|
158
|
+
exit!(1)
|
150
159
|
end
|
151
160
|
end
|
152
161
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'readline'
|
2
2
|
|
3
3
|
module SifttterRedux
|
4
4
|
# ======================================================
|
@@ -9,6 +9,37 @@ module SifttterRedux
|
|
9
9
|
# ====================================================
|
10
10
|
# Methods
|
11
11
|
# ====================================================
|
12
|
+
# ----------------------------------------------------
|
13
|
+
# activate_logging method
|
14
|
+
#
|
15
|
+
# Creates a simple logger to use
|
16
|
+
# @return Void
|
17
|
+
# ----------------------------------------------------
|
18
|
+
def self.activate_logging
|
19
|
+
@@logger = Logger.new(File.join(ENV['HOME'], '.sifttter_redux_log'))
|
20
|
+
end
|
21
|
+
|
22
|
+
# ----------------------------------------------------
|
23
|
+
# deactivate_logging method
|
24
|
+
#
|
25
|
+
# Stops logging to file.
|
26
|
+
# @return Void
|
27
|
+
# ----------------------------------------------------
|
28
|
+
def self.deactivate_logging
|
29
|
+
@@logger = nil
|
30
|
+
end
|
31
|
+
|
32
|
+
# ----------------------------------------------------
|
33
|
+
# debug method
|
34
|
+
#
|
35
|
+
# Logs a debug message to the logfile.
|
36
|
+
# @param m The message to log
|
37
|
+
# @return Void
|
38
|
+
# ----------------------------------------------------
|
39
|
+
def self.debug(m)
|
40
|
+
@@logger.debug(m.blue) unless @@logger.nil?
|
41
|
+
end
|
42
|
+
|
12
43
|
# ----------------------------------------------------
|
13
44
|
# error method
|
14
45
|
#
|
@@ -16,9 +47,9 @@ module SifttterRedux
|
|
16
47
|
# @param m The message to output
|
17
48
|
# @return Void
|
18
49
|
# ----------------------------------------------------
|
19
|
-
def self.error(m
|
20
|
-
|
21
|
-
|
50
|
+
def self.error(m)
|
51
|
+
puts "# #{ m }".red
|
52
|
+
@@logger.error(m.red) unless @@logger.nil?
|
22
53
|
end
|
23
54
|
|
24
55
|
# ----------------------------------------------------
|
@@ -28,9 +59,9 @@ module SifttterRedux
|
|
28
59
|
# @param m The message to output
|
29
60
|
# @return Void
|
30
61
|
# ----------------------------------------------------
|
31
|
-
def self.info(m
|
32
|
-
|
33
|
-
|
62
|
+
def self.info(m)
|
63
|
+
puts "# #{ m }".blue
|
64
|
+
@@logger.debug(m.blue) unless @@logger.nil?
|
34
65
|
end
|
35
66
|
|
36
67
|
# ----------------------------------------------------
|
@@ -42,25 +73,23 @@ module SifttterRedux
|
|
42
73
|
# @param multiline Whether the message should be multiline
|
43
74
|
# @return Void
|
44
75
|
# ----------------------------------------------------
|
45
|
-
def self.info_block(m1, m2 = 'Done.', multiline = false
|
76
|
+
def self.info_block(m1, m2 = 'Done.', multiline = false)
|
46
77
|
if block_given?
|
47
78
|
if multiline
|
48
|
-
info(m1
|
79
|
+
info(m1)
|
49
80
|
else
|
50
|
-
print "
|
81
|
+
print "# #{ m1 }".blue
|
51
82
|
end
|
52
83
|
|
53
84
|
yield
|
54
85
|
|
55
86
|
if multiline
|
56
|
-
info(m2
|
87
|
+
info(m2)
|
57
88
|
else
|
58
89
|
puts m2.blue
|
59
90
|
end
|
60
91
|
else
|
61
|
-
|
62
|
-
Methadone::CLILogging.error(error) if log
|
63
|
-
fail ArgumentError, error
|
92
|
+
fail ArgumentError, 'Did not specify a valid block'
|
64
93
|
end
|
65
94
|
end
|
66
95
|
|
@@ -73,29 +102,61 @@ module SifttterRedux
|
|
73
102
|
# @param default The default option
|
74
103
|
# @return String
|
75
104
|
# ----------------------------------------------------
|
76
|
-
def self.prompt(prompt, default = nil
|
77
|
-
print "#{ prompt } #{ default.nil? ? '' : "[default: #{ default }]:" } ".
|
105
|
+
def self.prompt(prompt, default = nil)
|
106
|
+
print "# #{ prompt } #{ default.nil? ? '' : "[default: #{ default }]:" } ".green
|
78
107
|
choice = $stdin.gets.chomp
|
79
108
|
if choice.empty?
|
80
109
|
r = default
|
81
110
|
else
|
82
111
|
r = choice
|
83
112
|
end
|
113
|
+
@@logger.debug("Answer to \"#{ prompt }\": #{ r }") unless @@logger.nil?
|
114
|
+
r
|
115
|
+
end
|
84
116
|
|
85
|
-
|
117
|
+
# ----------------------------------------------------
|
118
|
+
# prompt_for_filepath method
|
119
|
+
#
|
120
|
+
# Outputs a prompt, collects the user's response, and
|
121
|
+
# returns it; adds in readline support for path
|
122
|
+
# completion.
|
123
|
+
#
|
124
|
+
# "ruby readline filename tab completion" - William Morgan
|
125
|
+
# http://masanjin.net/blog/ruby-readline-tab-completion
|
126
|
+
#
|
127
|
+
# @param prompt The prompt to output
|
128
|
+
# @param default The default option
|
129
|
+
# @param start_dir The directory in which to start
|
130
|
+
# @return String
|
131
|
+
# ----------------------------------------------------
|
132
|
+
def self.prompt_for_filepath(prompt, default = nil, start_dir = '')
|
133
|
+
Readline.completion_append_character = nil
|
134
|
+
Readline.completion_proc = lambda do |prefix|
|
135
|
+
files = Dir["#{start_dir}#{prefix}*"]
|
136
|
+
files.
|
137
|
+
map { |f| File.expand_path(f) }.
|
138
|
+
map { |f| File.directory?(f) ? f + "/" : f }
|
139
|
+
end
|
140
|
+
choice = Readline.readline("# #{ prompt } #{ default.nil? ? '' : "[default: #{ default }]:" } ".green)
|
141
|
+
if choice.empty?
|
142
|
+
r = default
|
143
|
+
else
|
144
|
+
r = choice
|
145
|
+
end
|
146
|
+
@@logger.debug("Answer to \"#{ prompt }\": #{ r }") unless @@logger.nil?
|
86
147
|
r
|
87
148
|
end
|
88
149
|
|
89
150
|
# ----------------------------------------------------
|
90
151
|
# section method
|
91
152
|
#
|
92
|
-
# Outputs a formatted-
|
153
|
+
# Outputs a formatted-purple section message.
|
93
154
|
# @param m The message to output
|
94
155
|
# @return Void
|
95
156
|
# ----------------------------------------------------
|
96
|
-
def self.section(m
|
97
|
-
|
98
|
-
|
157
|
+
def self.section(m)
|
158
|
+
puts "---> #{ m }".purple
|
159
|
+
@@logger.debug(m.purple) unless @@logger.nil?
|
99
160
|
end
|
100
161
|
|
101
162
|
# ----------------------------------------------------
|
@@ -108,18 +169,17 @@ module SifttterRedux
|
|
108
169
|
# @param multiline A multiline message or not
|
109
170
|
# @return Void
|
110
171
|
# ----------------------------------------------------
|
111
|
-
def self.section_block(m, multiline = true
|
172
|
+
def self.section_block(m, multiline = true)
|
112
173
|
if block_given?
|
113
174
|
if multiline
|
114
|
-
section(m
|
175
|
+
section(m)
|
115
176
|
else
|
116
|
-
print "
|
177
|
+
print "---> #{ m }".purple
|
117
178
|
end
|
118
179
|
|
119
180
|
yield
|
120
181
|
else
|
121
182
|
error = 'Did not specify a valid block'
|
122
|
-
Methadone::CLILogging.error(error) if log
|
123
183
|
fail ArgumentError, error
|
124
184
|
end
|
125
185
|
end
|
@@ -131,9 +191,9 @@ module SifttterRedux
|
|
131
191
|
# @param m The message to output
|
132
192
|
# @return Void
|
133
193
|
# ----------------------------------------------------
|
134
|
-
def self.success(m
|
135
|
-
|
136
|
-
|
194
|
+
def self.success(m)
|
195
|
+
puts "# #{ m }".green
|
196
|
+
@@logger.debug(m.green) unless @@logger.nil?
|
137
197
|
end
|
138
198
|
|
139
199
|
# ----------------------------------------------------
|
@@ -143,9 +203,75 @@ module SifttterRedux
|
|
143
203
|
# @param m The message to output
|
144
204
|
# @return Void
|
145
205
|
# ----------------------------------------------------
|
146
|
-
def self.warning(m
|
147
|
-
|
148
|
-
|
206
|
+
def self.warning(m)
|
207
|
+
puts "# #{ m }".yellow
|
208
|
+
@@logger.warn(m.yellow) unless @@logger.nil?
|
149
209
|
end
|
150
210
|
end
|
151
211
|
end
|
212
|
+
|
213
|
+
# ======================================================
|
214
|
+
# String Class
|
215
|
+
# ======================================================
|
216
|
+
class String
|
217
|
+
# ----------------------------------------------------
|
218
|
+
# colorize method
|
219
|
+
#
|
220
|
+
# Outputs a string in a formatted color.
|
221
|
+
# @param color_code The code to use
|
222
|
+
# @return Void
|
223
|
+
# ----------------------------------------------------
|
224
|
+
def colorize(color_code)
|
225
|
+
"\e[#{ color_code }m#{ self }\e[0m"
|
226
|
+
end
|
227
|
+
|
228
|
+
# ----------------------------------------------------
|
229
|
+
# blue method
|
230
|
+
#
|
231
|
+
# Convenience method to output a blue string
|
232
|
+
# @return Void
|
233
|
+
# ----------------------------------------------------
|
234
|
+
def blue
|
235
|
+
colorize(34)
|
236
|
+
end
|
237
|
+
|
238
|
+
# ----------------------------------------------------
|
239
|
+
# green method
|
240
|
+
#
|
241
|
+
# Convenience method to output a green string
|
242
|
+
# @return Void
|
243
|
+
# ----------------------------------------------------
|
244
|
+
def green
|
245
|
+
colorize(32)
|
246
|
+
end
|
247
|
+
|
248
|
+
# ----------------------------------------------------
|
249
|
+
# purple method
|
250
|
+
#
|
251
|
+
# Convenience method to output a purple string
|
252
|
+
# @return Void
|
253
|
+
# ----------------------------------------------------
|
254
|
+
def purple
|
255
|
+
colorize(35)
|
256
|
+
end
|
257
|
+
|
258
|
+
# ----------------------------------------------------
|
259
|
+
# red method
|
260
|
+
#
|
261
|
+
# Convenience method to output a red string
|
262
|
+
# @return Void
|
263
|
+
# ----------------------------------------------------
|
264
|
+
def red
|
265
|
+
colorize(31)
|
266
|
+
end
|
267
|
+
|
268
|
+
# ----------------------------------------------------
|
269
|
+
# yellow method
|
270
|
+
#
|
271
|
+
# Convenience method to output a yellow string
|
272
|
+
# @return Void
|
273
|
+
# ----------------------------------------------------
|
274
|
+
def yellow
|
275
|
+
colorize(33)
|
276
|
+
end
|
277
|
+
end
|
@@ -21,7 +21,6 @@ module SifttterRedux
|
|
21
21
|
def self.last_n_days(num_days, include_today = false)
|
22
22
|
if num_days < 0
|
23
23
|
error = 'Cannot specify a negative number of days'
|
24
|
-
Methadone::CLILogging.error(error)
|
25
24
|
fail ArgumentError, error
|
26
25
|
end
|
27
26
|
|
@@ -44,7 +43,6 @@ module SifttterRedux
|
|
44
43
|
def self.last_n_weeks(num_weeks = 0, include_today = false)
|
45
44
|
if num_weeks < 0
|
46
45
|
error = 'Cannot specify a negative number of weeks'
|
47
|
-
Methadone::CLILogging.error(error)
|
48
46
|
fail ArgumentError, error
|
49
47
|
end
|
50
48
|
|
@@ -76,7 +74,6 @@ module SifttterRedux
|
|
76
74
|
def self.range(start_date, end_date, include_today = false)
|
77
75
|
if start_date.nil? && !end_date.nil?
|
78
76
|
error = "You can't specify -t without specifying -f"
|
79
|
-
Methadone::CLILogging.error(error)
|
80
77
|
fail ArgumentError, error
|
81
78
|
end
|
82
79
|
|
@@ -85,7 +82,6 @@ module SifttterRedux
|
|
85
82
|
rescue
|
86
83
|
unless start_date.nil?
|
87
84
|
error = "Invalid date provided to Chronic: #{ start_date }"
|
88
|
-
Methadone::CLILogging.error(error)
|
89
85
|
fail ArgumentError, error
|
90
86
|
end
|
91
87
|
nil
|
@@ -96,7 +92,6 @@ module SifttterRedux
|
|
96
92
|
rescue
|
97
93
|
unless end_date.nil?
|
98
94
|
error = "Invalid date provided to Chronic: #{ end_date }"
|
99
|
-
Methadone::CLILogging.error(error)
|
100
95
|
fail ArgumentError, error
|
101
96
|
end
|
102
97
|
nil
|
@@ -104,7 +99,6 @@ module SifttterRedux
|
|
104
99
|
|
105
100
|
if chronic_end_date && chronic_start_date > chronic_end_date
|
106
101
|
error = 'The start date must be before or equal to the end date'
|
107
|
-
Methadone::CLILogging.error(error)
|
108
102
|
fail ArgumentError, error
|
109
103
|
end
|
110
104
|
|
@@ -0,0 +1,77 @@
|
|
1
|
+
module SifttterRedux
|
2
|
+
# ======================================================
|
3
|
+
# DropboxUploader Class
|
4
|
+
#
|
5
|
+
# Wrapper class for the Dropbox Uploader project
|
6
|
+
# ======================================================
|
7
|
+
class DropboxUploader
|
8
|
+
# ====================================================
|
9
|
+
# Constants
|
10
|
+
# ====================================================
|
11
|
+
CONFIG_FILEPATH = File.join(ENV['HOME'], '.dropbox_uploader')
|
12
|
+
DEFAULT_MESSAGE = 'RUNNING DROPBOX UPLOADER'
|
13
|
+
|
14
|
+
# ====================================================
|
15
|
+
# Attributes
|
16
|
+
# ====================================================
|
17
|
+
attr_accessor :local_target, :remote_target, :message, :verbose
|
18
|
+
|
19
|
+
# ====================================================
|
20
|
+
# Methods
|
21
|
+
# ====================================================
|
22
|
+
# ----------------------------------------------------
|
23
|
+
# initialize method
|
24
|
+
#
|
25
|
+
# Loads the location of dropbox_uploader.sh.
|
26
|
+
# @param dbu_path The local filepath to the script
|
27
|
+
# @logger A Logger to use
|
28
|
+
# @return Void
|
29
|
+
# ----------------------------------------------------
|
30
|
+
def initialize(dbu_path, logger = nil)
|
31
|
+
@dbu = dbu_path
|
32
|
+
@logger = logger
|
33
|
+
end
|
34
|
+
|
35
|
+
# ----------------------------------------------------
|
36
|
+
# download method
|
37
|
+
#
|
38
|
+
# Downloads files from Dropbox (assumes that both
|
39
|
+
# local_target and remote_target have been set).
|
40
|
+
# @return Void
|
41
|
+
# ----------------------------------------------------
|
42
|
+
def download
|
43
|
+
if !@local_target.nil? && !@remote_target.nil?
|
44
|
+
if @verbose
|
45
|
+
system "#{ @dbu } download #{ @remote_target } #{ @local_target }"
|
46
|
+
else
|
47
|
+
exec = `#{ @dbu } download #{ @remote_target } #{ @local_target }`
|
48
|
+
end
|
49
|
+
else
|
50
|
+
error_msg = 'Local and remote targets cannot be nil'
|
51
|
+
@logger.error(error_msg) if @logger
|
52
|
+
fail StandardError, error_msg
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# ----------------------------------------------------
|
57
|
+
# upload method
|
58
|
+
#
|
59
|
+
# Uploads files tro Dropbox (assumes that both
|
60
|
+
# local_target and remote_target have been set).
|
61
|
+
# @return Void
|
62
|
+
# ----------------------------------------------------
|
63
|
+
def upload
|
64
|
+
if !@local_target.nil? && !@remote_target.nil?
|
65
|
+
if @verbose
|
66
|
+
system "#{ @dbu } upload #{ @local_target } #{ @remote_target }"
|
67
|
+
else
|
68
|
+
exec = `#{ @dbu } upload #{ @local_target }" "#{ @remote_target }`
|
69
|
+
end
|
70
|
+
else
|
71
|
+
error_msg = 'Local and remote targets cannot be nil'
|
72
|
+
@logger.error(error_msg) if @logger
|
73
|
+
fail StandardError, error_msg
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -48,8 +48,7 @@ module SifttterRedux
|
|
48
48
|
|
49
49
|
files = `find #{ Configuration['sifttter_redux']['sifttter_local_filepath'] } -type f -name "*.txt" | grep -v -i daily | sort`
|
50
50
|
if files.empty?
|
51
|
-
|
52
|
-
CLIMessage.error(m)
|
51
|
+
CLIMessage::error("No Sifttter files to parse; is #{ Configuration['sifttter_redux']['sifttter_remote_filepath'] } the correct remote filepath?")
|
53
52
|
return
|
54
53
|
end
|
55
54
|
|
data/lib/sifttter_redux.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
require 'sifttter_redux/cli_message
|
2
|
-
require 'sifttter_redux/configuration
|
3
|
-
require 'sifttter_redux/date_range_maker
|
4
|
-
require 'sifttter_redux/
|
5
|
-
require 'sifttter_redux/sifttter
|
6
|
-
require 'sifttter_redux/version
|
1
|
+
require 'sifttter_redux/cli_message'
|
2
|
+
require 'sifttter_redux/configuration'
|
3
|
+
require 'sifttter_redux/date_range_maker'
|
4
|
+
require 'sifttter_redux/dropbox_uploader'
|
5
|
+
require 'sifttter_redux/sifttter'
|
6
|
+
require 'sifttter_redux/version'
|
7
7
|
|
8
8
|
# ======================================================
|
9
9
|
# SifttterRedux Module
|
@@ -17,6 +17,7 @@ module SifttterRedux
|
|
17
17
|
# ====================================================
|
18
18
|
# Constants
|
19
19
|
# ====================================================
|
20
|
+
DBU_CONFIG_FILEPATH = File.join(ENV['HOME'], '.dropbox_uploader')
|
20
21
|
DBU_LOCAL_FILEPATH = '/usr/local/opt'
|
21
22
|
|
22
23
|
DO_LOCAL_FILEPATH = '/tmp/dayone'
|
@@ -43,7 +44,63 @@ module SifttterRedux
|
|
43
44
|
Configuration['sifttter_redux']['sifttter_local_filepath']
|
44
45
|
]
|
45
46
|
|
46
|
-
CLIMessage::info_block('Removing temporary local files...')
|
47
|
+
CLIMessage::info_block('Removing temporary local files...') do
|
48
|
+
dirs.each do |d|
|
49
|
+
FileUtils.rm_rf(d)
|
50
|
+
CLIMessage::debug("Removed directory: #{ d }")
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# ----------------------------------------------------
|
56
|
+
# install_wizard method
|
57
|
+
#
|
58
|
+
# Runs a wizard that installs Dropbox Uploader on the
|
59
|
+
# local filesystem.
|
60
|
+
# @return Void
|
61
|
+
# ----------------------------------------------------
|
62
|
+
def self.dbu_install_wizard(reinit = false)
|
63
|
+
valid_path_chosen = false
|
64
|
+
|
65
|
+
CLIMessage::section_block('CONFIGURING DROPBOX UPLOADER...') do
|
66
|
+
until valid_path_chosen
|
67
|
+
# Prompt the user for a location to save Dropbox Uploader.
|
68
|
+
if reinit && !Configuration['db_uploader']['base_filepath'].nil?
|
69
|
+
default = Configuration['db_uploader']['base_filepath']
|
70
|
+
else
|
71
|
+
default = DBU_LOCAL_FILEPATH
|
72
|
+
end
|
73
|
+
path = CLIMessage::prompt_for_filepath('Location for Dropbox-Uploader', default)
|
74
|
+
path = default if path.empty?
|
75
|
+
path.chop! if path.end_with?('/')
|
76
|
+
|
77
|
+
# If the entered directory exists, clone the repository.
|
78
|
+
if File.directory?(path)
|
79
|
+
valid_path_chosen = true
|
80
|
+
|
81
|
+
dbu_path = File.join(path, 'Dropbox-Uploader')
|
82
|
+
executable_path = File.join(dbu_path, 'dropbox_uploader.sh')
|
83
|
+
|
84
|
+
if File.directory?(dbu_path)
|
85
|
+
CLIMessage::warning("Using pre-existing Dropbox Uploader at #{ dbu_path }...")
|
86
|
+
else
|
87
|
+
CLIMessage::info_block("Downloading Dropbox Uploader to #{ dbu_path }...", 'Done.', true) do
|
88
|
+
system "git clone https://github.com/andreafabrizi/Dropbox-Uploader.git #{ dbu_path }"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
# If the user has never configured Dropbox Uploader, have them do it here.
|
93
|
+
unless File.exists?(DBU_CONFIG_FILEPATH)
|
94
|
+
CLIMessage::info_block('Initializing Dropbox Uploader...') { system "#{ executable_path }" }
|
95
|
+
end
|
96
|
+
|
97
|
+
Configuration::add_section('db_uploader') unless reinit
|
98
|
+
Configuration['db_uploader'].merge!('base_filepath' => path, 'dbu_filepath' => dbu_path, 'exe_filepath' => executable_path)
|
99
|
+
else
|
100
|
+
CLIMessage::error("Sorry, but #{ path } isn't a valid directory.")
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
47
104
|
end
|
48
105
|
|
49
106
|
# ----------------------------------------------------
|
@@ -58,36 +115,35 @@ module SifttterRedux
|
|
58
115
|
CLIMessage::section_block('EXECUTING...') do
|
59
116
|
if options[:c] || options[:n] || options[:w] || options[:y] || options[:f] || options[:t]
|
60
117
|
# Yesterday
|
61
|
-
DateRangeMaker.yesterday if options[:y]
|
118
|
+
r = DateRangeMaker.yesterday if options[:y]
|
62
119
|
|
63
120
|
# Current Week
|
64
|
-
DateRangeMaker.last_n_weeks(0, options[:i]) if options[:c]
|
121
|
+
r = DateRangeMaker.last_n_weeks(0, options[:i]) if options[:c]
|
65
122
|
|
66
123
|
# Last N Days
|
67
|
-
DateRangeMaker.last_n_days(options[:n].to_i, options[:i]) if options[:n]
|
124
|
+
r = DateRangeMaker.last_n_days(options[:n].to_i, options[:i]) if options[:n]
|
68
125
|
|
69
126
|
# Last N Weeks
|
70
|
-
DateRangeMaker.last_n_weeks(options[:w].to_i, options[:i]) if options[:w]
|
127
|
+
r = DateRangeMaker.last_n_weeks(options[:w].to_i, options[:i]) if options[:w]
|
71
128
|
|
72
129
|
# Custom Range
|
73
130
|
if (options[:f] || options[:t])
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
(_dates.first.._dates.last)
|
83
|
-
end
|
84
|
-
rescue ArgumentError => e
|
85
|
-
CLIMessage::error(e)
|
131
|
+
_dates = DateRangeMaker.range(options[:f], options[:t], options[:i])
|
132
|
+
|
133
|
+
if _dates.last > Date.today
|
134
|
+
long_message = "Ignoring overextended end date and using today's date (#{ Date.today })..."
|
135
|
+
CLIMessage::warning(long_message)
|
136
|
+
r = (_dates.first..Date.today)
|
137
|
+
else
|
138
|
+
r = (_dates.first.._dates.last)
|
86
139
|
end
|
87
140
|
end
|
88
141
|
else
|
89
|
-
DateRangeMaker.today
|
142
|
+
r = DateRangeMaker.today
|
90
143
|
end
|
144
|
+
|
145
|
+
CLIMessage::debug("Date range: #{ r }")
|
146
|
+
r
|
91
147
|
end
|
92
148
|
end
|
93
149
|
|
@@ -103,10 +159,14 @@ module SifttterRedux
|
|
103
159
|
Configuration::reset
|
104
160
|
Configuration::add_section('sifttter_redux')
|
105
161
|
end
|
106
|
-
Configuration['sifttter_redux'].merge!(
|
162
|
+
Configuration['sifttter_redux'].merge!({
|
163
|
+
'config_location' => Configuration::config_path,
|
164
|
+
'log_level' => 'WARN',
|
165
|
+
'version' => VERSION,
|
166
|
+
})
|
107
167
|
|
108
168
|
# Run the wizard to download Dropbox Uploader.
|
109
|
-
|
169
|
+
dbu_install_wizard(reinit = reinit)
|
110
170
|
|
111
171
|
# Collect other misc. preferences.
|
112
172
|
CLIMessage::section_block('COLLECTING PREFERENCES...') do
|
@@ -139,13 +199,14 @@ module SifttterRedux
|
|
139
199
|
|
140
200
|
pref_prompts.each do |prompt|
|
141
201
|
d = reinit ? Configuration[prompt[:section]][prompt[:key]] : prompt[:default]
|
142
|
-
pref = CLIMessage::
|
202
|
+
pref = CLIMessage::prompt_for_filepath(prompt[:prompt], d)
|
143
203
|
|
144
204
|
Configuration[prompt[:section]].merge!(prompt[:key] => File.expand_path(pref))
|
205
|
+
CLIMessage::debug("Value for #{ prompt[:key] }: #{ pref }")
|
145
206
|
end
|
146
207
|
end
|
147
208
|
|
148
|
-
|
209
|
+
CLIMessage::debug("Configuration values: #{ Configuration::dump }")
|
149
210
|
Configuration::save
|
150
211
|
end
|
151
212
|
end
|
data/sifttter_redux.gemspec
CHANGED
data/test/cli_message_test.rb
CHANGED
@@ -1,52 +1,54 @@
|
|
1
|
-
require '
|
1
|
+
require 'readline'
|
2
2
|
require 'test_helper'
|
3
3
|
require File.join(File.dirname(__FILE__), '..', 'lib/sifttter_redux/cli_message.rb')
|
4
4
|
|
5
|
-
include Methadone::CLILogging
|
6
|
-
|
7
5
|
class CLIMessageTest < Test::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
SifttterRedux::CLIMessage::deactivate_logging
|
8
|
+
end
|
9
|
+
|
8
10
|
def test_error_message
|
9
|
-
assert_output('
|
11
|
+
assert_output('# test'.red + "\n") { SifttterRedux::CLIMessage::error('test') }
|
10
12
|
end
|
11
13
|
|
12
14
|
def test_info_message
|
13
|
-
assert_output('
|
15
|
+
assert_output('# test'.blue + "\n") { SifttterRedux::CLIMessage::info('test') }
|
14
16
|
end
|
15
17
|
|
16
18
|
def test_info_block_single_line
|
17
|
-
assert_output("
|
18
|
-
SifttterRedux::CLIMessage::info_block('start', 'end'
|
19
|
+
assert_output("# start".blue + "body\n" + 'end'.blue + "\n") do
|
20
|
+
SifttterRedux::CLIMessage::info_block('start', 'end') { puts 'body' }
|
19
21
|
end
|
20
22
|
end
|
21
23
|
|
22
24
|
def test_info_block_multiline
|
23
|
-
assert_output("
|
24
|
-
SifttterRedux::CLIMessage::info_block('start', 'end', true
|
25
|
+
assert_output("# start".blue + "\nbody\n" + '# end'.blue + "\n") do
|
26
|
+
SifttterRedux::CLIMessage::info_block('start', 'end', true) { puts 'body' }
|
25
27
|
end
|
26
28
|
end
|
27
29
|
|
28
30
|
def test_info_block_no_block
|
29
31
|
assert_raise ArgumentError do
|
30
|
-
SifttterRedux::CLIMessage::info_block('start', 'end', true
|
32
|
+
SifttterRedux::CLIMessage::info_block('start', 'end', true)
|
31
33
|
end
|
32
34
|
end
|
33
35
|
|
34
36
|
def test_section_message
|
35
|
-
assert_output('
|
37
|
+
assert_output('---> test'.purple + "\n") { SifttterRedux::CLIMessage::section('test') }
|
36
38
|
end
|
37
39
|
|
38
40
|
def test_section_block_single_line
|
39
|
-
assert_output("
|
40
|
-
SifttterRedux::CLIMessage::section_block('section', true
|
41
|
+
assert_output("---> section".purple + "\nbody\n") do
|
42
|
+
SifttterRedux::CLIMessage::section_block('section', true) { puts 'body' }
|
41
43
|
end
|
42
44
|
end
|
43
45
|
|
44
46
|
def test_success_message
|
45
|
-
assert_output('
|
47
|
+
assert_output('# test'.green + "\n") { SifttterRedux::CLIMessage::success('test') }
|
46
48
|
end
|
47
49
|
|
48
50
|
def test_warning_message
|
49
|
-
assert_output('
|
51
|
+
assert_output('# test'.yellow + "\n") { SifttterRedux::CLIMessage::warning('test') }
|
50
52
|
end
|
51
53
|
|
52
54
|
def test_prompt
|
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.7
|
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-03-
|
11
|
+
date: 2014-03-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -52,20 +52,6 @@ dependencies:
|
|
52
52
|
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 2.9.0
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: methadone
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - '='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 1.3.2
|
62
|
-
type: :runtime
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - '='
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: 1.3.2
|
69
55
|
description: A customized IFTTT-to-Day One service that allows for smart installation
|
70
56
|
and automated running on a standalone *NIX device (such as a Raspberry Pi).
|
71
57
|
email: bachya1208@gmail.com
|
@@ -89,9 +75,8 @@ files:
|
|
89
75
|
- lib/sifttter_redux/cli_message.rb
|
90
76
|
- lib/sifttter_redux/configuration.rb
|
91
77
|
- lib/sifttter_redux/date_range_maker.rb
|
92
|
-
- lib/sifttter_redux/
|
78
|
+
- lib/sifttter_redux/dropbox_uploader.rb
|
93
79
|
- lib/sifttter_redux/sifttter.rb
|
94
|
-
- lib/sifttter_redux/string_extensions.rb
|
95
80
|
- lib/sifttter_redux/version.rb
|
96
81
|
- sifttter_redux.gemspec
|
97
82
|
- test/cli_message_test.rb
|
data/lib/sifttter_redux/dbu.rb
DELETED
@@ -1,160 +0,0 @@
|
|
1
|
-
module SifttterRedux
|
2
|
-
# ======================================================
|
3
|
-
# DBU Module
|
4
|
-
#
|
5
|
-
# Wrapper module for the Dropbox Uploader project
|
6
|
-
# ======================================================
|
7
|
-
module DBU
|
8
|
-
# ====================================================
|
9
|
-
# Constants
|
10
|
-
# ====================================================
|
11
|
-
CONFIG_FILEPATH = File.join(ENV['HOME'], '.dropbox_uploader')
|
12
|
-
DEFAULT_MESSAGE = 'RUNNING DROPBOX UPLOADER'
|
13
|
-
|
14
|
-
# ====================================================
|
15
|
-
# Methods
|
16
|
-
# ====================================================
|
17
|
-
# ----------------------------------------------------
|
18
|
-
# download method
|
19
|
-
#
|
20
|
-
# Downloads the files at the remote Dropbox filepath
|
21
|
-
# to a filepath on the local filesystem.
|
22
|
-
# @return Void
|
23
|
-
# ----------------------------------------------------
|
24
|
-
def self.download
|
25
|
-
if !@local_path.nil? && !@remote_path.nil?
|
26
|
-
CLIMessage::info_block(@message ||= DEFAULT_MESSAGE, 'Done.', SifttterRedux.verbose) do
|
27
|
-
if SifttterRedux.verbose
|
28
|
-
system "#{ @dbu } download #{ @remote_path } #{ @local_path }"
|
29
|
-
else
|
30
|
-
exec = `#{ @dbu } download #{ @remote_path } #{ @local_path }`
|
31
|
-
end
|
32
|
-
end
|
33
|
-
else
|
34
|
-
error = 'Local and remote DBU targets cannot be nil'
|
35
|
-
Methadone::CLILogging.error(error)
|
36
|
-
fail ArgumentError, error
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
# ----------------------------------------------------
|
41
|
-
# install_wizard method
|
42
|
-
#
|
43
|
-
# Runs a wizard that installs Dropbox Uploader on the
|
44
|
-
# local filesystem.
|
45
|
-
# @return Void
|
46
|
-
# ----------------------------------------------------
|
47
|
-
def self.install_wizard(reinit = false)
|
48
|
-
valid_path_chosen = false
|
49
|
-
|
50
|
-
CLIMessage::section_block('CONFIGURING DROPBOX UPLOADER...') do
|
51
|
-
until valid_path_chosen
|
52
|
-
# Prompt the user for a location to save Dropbox Uploader.
|
53
|
-
if reinit && !Configuration['db_uploader']['base_filepath'].nil?
|
54
|
-
default = Configuration['db_uploader']['base_filepath']
|
55
|
-
else
|
56
|
-
default = DBU_LOCAL_FILEPATH
|
57
|
-
end
|
58
|
-
path = CLIMessage::prompt('Location for Dropbox-Uploader', default)
|
59
|
-
path.chop! if path.end_with?('/')
|
60
|
-
|
61
|
-
# If the entered directory exists, clone the repository.
|
62
|
-
if File.directory?(path)
|
63
|
-
valid_path_chosen = true
|
64
|
-
|
65
|
-
dbu_path = File.join(path, 'Dropbox-Uploader')
|
66
|
-
executable_path = File.join(dbu_path, 'dropbox_uploader.sh')
|
67
|
-
|
68
|
-
if File.directory?(dbu_path)
|
69
|
-
CLIMessage::warning("Using pre-existing Dropbox Uploader at #{ dbu_path }...")
|
70
|
-
else
|
71
|
-
CLIMessage::info_block("Downloading Dropbox Uploader to #{ dbu_path }...", 'Done.', true) do
|
72
|
-
system "git clone https://github.com/andreafabrizi/Dropbox-Uploader.git #{ dbu_path }"
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
# If the user has never configured Dropbox Uploader, have them do it here.
|
77
|
-
unless File.exists?(CONFIG_FILEPATH)
|
78
|
-
CLIMessage::info_block('Initializing Dropbox Uploader...') { system "#{ executable_path }" }
|
79
|
-
end
|
80
|
-
|
81
|
-
Configuration::add_section('db_uploader') unless reinit
|
82
|
-
Configuration['db_uploader'].merge!('base_filepath' => path, 'dbu_filepath' => dbu_path, 'exe_filepath' => executable_path)
|
83
|
-
else
|
84
|
-
CLIMessage::error("Sorry, but #{ path } isn't a valid directory.")
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
# ----------------------------------------------------
|
91
|
-
# load method
|
92
|
-
#
|
93
|
-
# Loads the location of dropbox_uploader.sh.
|
94
|
-
# @param dbu_path The local filepath to the script
|
95
|
-
# @return Void
|
96
|
-
# ----------------------------------------------------
|
97
|
-
def self.load(dbu_path)
|
98
|
-
@dbu = dbu_path
|
99
|
-
end
|
100
|
-
|
101
|
-
# ----------------------------------------------------
|
102
|
-
# set_local_target method
|
103
|
-
#
|
104
|
-
# Sets the local filesystem path to which files will
|
105
|
-
# be downloaded.
|
106
|
-
# @param path A local filepath
|
107
|
-
# @return Void
|
108
|
-
# ----------------------------------------------------
|
109
|
-
def self.local_target=(path)
|
110
|
-
@local_path = path
|
111
|
-
end
|
112
|
-
|
113
|
-
# ----------------------------------------------------
|
114
|
-
# set_message method
|
115
|
-
#
|
116
|
-
# Sets the message to be displayed just before
|
117
|
-
# downloading commences.
|
118
|
-
# @param message The string to display
|
119
|
-
# @return Void
|
120
|
-
# ----------------------------------------------------
|
121
|
-
def self.message=(message)
|
122
|
-
@message = message
|
123
|
-
end
|
124
|
-
|
125
|
-
# ----------------------------------------------------
|
126
|
-
# set_remote_target method
|
127
|
-
#
|
128
|
-
# Sets the remote Dropbox path from which files will
|
129
|
-
# be downloaded.
|
130
|
-
# @param path A remote Dropbox filepath
|
131
|
-
# @return Void
|
132
|
-
# ----------------------------------------------------
|
133
|
-
def self.remote_target=(path)
|
134
|
-
@remote_path = path
|
135
|
-
end
|
136
|
-
|
137
|
-
# ----------------------------------------------------
|
138
|
-
# upload method
|
139
|
-
#
|
140
|
-
# Uploads the files from the local filesystem path to
|
141
|
-
# the remote Dropbox path.
|
142
|
-
# @return Void
|
143
|
-
# ----------------------------------------------------
|
144
|
-
def self.upload
|
145
|
-
if !@local_path.nil? && !@remote_path.nil?
|
146
|
-
CLIMessage::info_block(@message ||= DEFAULT_MESSAGE, 'Done.', SifttterRedux.verbose) do
|
147
|
-
if SifttterRedux.verbose
|
148
|
-
system "#{ @dbu } upload #{ @local_path } #{ @remote_path }"
|
149
|
-
else
|
150
|
-
exec = `#{ @dbu } upload #{ @local_path } #{ @remote_path }`
|
151
|
-
end
|
152
|
-
end
|
153
|
-
else
|
154
|
-
error = 'Local and remote DBU targets cannot be nil'
|
155
|
-
Methadone::CLILogging.error(error)
|
156
|
-
fail ArgumentError, error
|
157
|
-
end
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
# ======================================================
|
2
|
-
# String Class
|
3
|
-
# ======================================================
|
4
|
-
class String
|
5
|
-
# ----------------------------------------------------
|
6
|
-
# colorize method
|
7
|
-
#
|
8
|
-
# Outputs a string in a formatted color.
|
9
|
-
# @param color_code The code to use
|
10
|
-
# @return Void
|
11
|
-
# ----------------------------------------------------
|
12
|
-
def colorize(color_code)
|
13
|
-
"\e[#{ color_code }m#{ self }\e[0m"
|
14
|
-
end
|
15
|
-
|
16
|
-
# ----------------------------------------------------
|
17
|
-
# blue method
|
18
|
-
#
|
19
|
-
# Convenience method to output a blue string
|
20
|
-
# @return Void
|
21
|
-
# ----------------------------------------------------
|
22
|
-
def blue
|
23
|
-
colorize(34)
|
24
|
-
end
|
25
|
-
|
26
|
-
# ----------------------------------------------------
|
27
|
-
# green method
|
28
|
-
#
|
29
|
-
# Convenience method to output a green string
|
30
|
-
# @return Void
|
31
|
-
# ----------------------------------------------------
|
32
|
-
def green
|
33
|
-
colorize(32)
|
34
|
-
end
|
35
|
-
|
36
|
-
# ----------------------------------------------------
|
37
|
-
# purple method
|
38
|
-
#
|
39
|
-
# Convenience method to output a purple string
|
40
|
-
# @return Void
|
41
|
-
# ----------------------------------------------------
|
42
|
-
def purple
|
43
|
-
colorize(35)
|
44
|
-
end
|
45
|
-
|
46
|
-
# ----------------------------------------------------
|
47
|
-
# red method
|
48
|
-
#
|
49
|
-
# Convenience method to output a red string
|
50
|
-
# @return Void
|
51
|
-
# ----------------------------------------------------
|
52
|
-
def red
|
53
|
-
colorize(31)
|
54
|
-
end
|
55
|
-
|
56
|
-
# ----------------------------------------------------
|
57
|
-
# yellow method
|
58
|
-
#
|
59
|
-
# Convenience method to output a yellow string
|
60
|
-
# @return Void
|
61
|
-
# ----------------------------------------------------
|
62
|
-
def yellow
|
63
|
-
colorize(33)
|
64
|
-
end
|
65
|
-
end
|