sifttter-redux 0.4.4 → 0.4.6

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: 1b449eb116b9d31aa2617e8c4016998017967e45
4
- data.tar.gz: 8575cbe65d2dc1c220c690f835af1acb0f24f640
3
+ metadata.gz: 6089e8d0f4bb6e878a213306b36f3b1794ac7bbf
4
+ data.tar.gz: 8d429c68df6b8cb9d5cdb825baad4d96e5ff64c1
5
5
  SHA512:
6
- metadata.gz: 7dc307b238a1af03e089bce59a4d3b9d993beb30639f0dfde83d8b85f509d458656d62d6ec712a25f4d81d22541b8382d3e3a06f6dbf6a69aa719d01c612235c
7
- data.tar.gz: a49786fff55b83bb4729bbf512695b492282760b7967c8ad7ead5c0f53a515a6d3ad80b40c9f7d2413c8d261c60917d165f36bf3d4c021ceceead2ec9a98dc0f
6
+ metadata.gz: 0078c8d8e1253ba99f334d6d87d13bd1718db76f578d3ee2e4ac7acd3ff38c59c915d0ba98393b14e15772207a7ed50e0d1fc4c0ecb6dd8719412a1c5a9c8230
7
+ data.tar.gz: c4f4d97e124a3990a2e3d6fb541899d5f3a2b095fda56783699f13b5401e2c3c3fcf7212f57ecfd41a85a7b67b821fa88033675c21e0e0ba7d78feaf929f56c0
data/HISTORY.md CHANGED
@@ -1,3 +1,13 @@
1
+ # 0.4.6 (2014-03-13)
2
+
3
+ * Added new error messaaging if Sifttter remote path is invalid
4
+ * Removed dependencies on exernal UUID library
5
+ * Removed OS module (not needed anymore)
6
+
7
+ # 0.4.5 (2014-03-01)
8
+
9
+ * Added Methadone logging for prompts
10
+
1
11
  # 0.4.4 (2014-02-28)
2
12
 
3
13
  * Fixed a prompt error when providing Dropbox-Uploader with a bad path
data/README.md CHANGED
@@ -12,17 +12,7 @@ Siftter Redux has several fundamental differences:
12
12
 
13
13
  # Prerequisites
14
14
 
15
- In addition to Git (which, given you being on this site, I'll assume you have), there are two prerequisites needed to run Sifttter Redux in a *NIX environment:
16
-
17
- * Ruby (version 1.9.3 or greater)
18
- * UUID (required on the Raspberry Pi because it doesn't come with a function to do this by default)
19
-
20
- To install on a Debian-esque system:
21
-
22
- ```
23
- $ sudo apt-get install ruby
24
- $ sudo apt-get install uuid
25
- ```
15
+ In addition to Git (which, given you being on this site, I'll assume you have), Ruby (v. 1.9.3 or greater) is needed.
26
16
 
27
17
  # Installation
28
18
 
@@ -47,7 +37,7 @@ SYNOPSIS
47
37
  srd [global options] command [command options] [arguments...]
48
38
 
49
39
  VERSION
50
- 0.4.1
40
+ 0.4.6
51
41
 
52
42
  GLOBAL OPTIONS
53
43
  --help - Show this message
@@ -97,6 +87,22 @@ Initialization will perform the following steps:
97
87
  * The location on your filesystem where Day One files will be temporarily stored
98
88
  * The location of your Day One files in Dropbox
99
89
 
90
+ ## Pathing
91
+
92
+ Note that when Sifttter Redux asks you for paths, it will ask for "local" and "remote" filepaths. It's important to understand the difference.
93
+
94
+ ### Local Filepaths
95
+
96
+ Local filepaths are, as you'd expect, filepaths on your local machine. Some examples might be:
97
+
98
+ * `/tmp/my_data`
99
+ * `/home/bob/ifttt/sifttter_data`
100
+ * `~/sifttter`
101
+
102
+ ### Remote Filepaths
103
+
104
+ Remote filepaths, on the other hand, are absolute filepaths in your Dropbox folder (*as Dropbox Uploader would see them*). For instance, `/home/bob/Dropbox/apps/sifttter` is *not* a valid remote filepath; rather, `/apps/sifttter` would be correct.
105
+
100
106
  ## Basic Execution
101
107
 
102
108
  ```
data/bin/srd CHANGED
@@ -32,209 +32,121 @@
32
32
  # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
33
33
  # OTHER DEALINGS IN THE SOFTWARE.
34
34
  #--------------------------------------------------------------------
35
-
36
- require 'fileutils'
37
35
  require 'gli'
38
36
  require 'methadone'
39
37
  require 'sifttter_redux'
38
+ require 'securerandom'
40
39
 
41
40
  include GLI::App
42
41
  include Methadone::CLILogging
43
42
  include SifttterRedux
44
43
 
44
+ # ======================================================
45
+ # App Info
46
+ # ======================================================
45
47
  program_desc 'Sifttter Redux
46
48
 
47
49
  A customized IFTTT-to-Day One service that allows for
48
50
  smart installation and automated running on a standalone
49
51
  *NIX device (such as a Raspberry Pi).'
50
-
52
+
51
53
  version VERSION
52
54
 
53
55
  # ======================================================
54
56
  # Global Flags and Switches
55
57
  # ======================================================
56
-
57
- switch(
58
- [:verbose],
59
- desc: 'Turns on verbose output'
60
- )
58
+ switch([:verbose], desc: 'Turns on verbose output')
61
59
 
62
60
  # ======================================================
63
61
  # Pre, Post, and Error
64
62
  # ======================================================
65
-
66
63
  pre do |global, command, options, args|
67
-
68
64
  # Load SifttterRedux configuration module.
69
65
  Configuration::load(SRD_CONFIG_FILEPATH)
70
66
 
71
67
  # Load Methadone CLILogging module.
72
- Methadone::CLILogging::change_logger(Methadone::CLILogger.new(SRD_LOG_FILEPATH, SRD_LOG_FILEPATH))
68
+ Methadone::CLILogging::change_logger(Methadone::CLILogger.new(SRD_LOG_FILEPATH, SRD_LOG_FILEPATH))
73
69
 
74
70
  if File.exists?(SRD_CONFIG_FILEPATH)
71
+ current_version = Gem::Version.new(Configuration['sifttter_redux']['version'])
72
+ last_config_change_version = Gem::Version.new(NEWEST_CONFIG_VERSION)
73
+
75
74
  # 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)
75
+ if Configuration['sifttter_redux']['version'].nil? || current_version < last_config_change_version
77
76
  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
-
77
+ CLIMessage::info("Don't worry; when prompted, your current values for")
78
+ CLIMessage::info("existing config options will be presented (so it'll")
79
+ CLIMessage::info('be easier to fly through the upgrade).')
80
+ CLIMessage::prompt('Press enter to continue')
81
81
  SifttterRedux::init(true)
82
82
  exit!
83
83
  end
84
+
85
+ # Load Dropbox Uploader module.
86
+ DBU.load(Configuration['db_uploader']['exe_filepath'])
84
87
  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'
87
-
88
+ # Force the user to init if they try to run any command other than `init` first.
89
+ CLIMessage::info('Initializing Sifttter Redux first...') unless command.name_for_help[0] == 'init'
88
90
  SifttterRedux::init
89
91
  exit!
90
92
  end
91
-
92
- # Load Dropbox Uploader module.
93
- DBU.load(Configuration['db_uploader']['exe_filepath']) if File.exists?(SRD_CONFIG_FILEPATH)
94
-
93
+
95
94
  true
96
95
  end
97
96
 
98
97
  # ======================================================
99
98
  # Commands
100
99
  # ======================================================
101
-
102
100
  # ------------------------------------------------------
103
101
  # exec command
104
102
  #
105
103
  # Executes the script.
106
104
  # ------------------------------------------------------
107
-
108
105
  desc 'Execute the script'
109
106
  command :exec do |c|
107
+ c.flag([:f], desc: 'Run catch-up mode with this start date')
108
+ c.flag([:n], desc: 'Run catch-up mode for the last N days')
109
+ c.flag([:t], desc: 'Run catch-up mode with this end date (must also have -f)')
110
+ c.flag([:w], desc: 'Run catch-up mode for the last N weeks')
110
111
 
111
- c.flag(
112
- [:f],
113
- desc: 'Run catch-up mode with this start date'
114
- )
115
-
116
- c.flag(
117
- [:n],
118
- desc: 'Run catch-up mode for the last N days'
119
- )
120
-
121
- c.flag(
122
- [:t],
123
- desc: 'Run catch-up mode with this end date (must also have -f)'
124
- )
125
-
126
- c.flag(
127
- [:w],
128
- desc: 'Run catch-up mode for the last N weeks'
129
- )
130
-
131
- c.switch(
132
- [:c],
133
- desc: 'Run catch-up mode from the beginning of the week to yesterday'
134
- )
135
-
136
- c.switch(
137
- [:i],
138
- desc: "Include today's date in catch-up"
139
- )
140
-
141
- c.switch(
142
- [:verbose],
143
- desc: 'Turns on verbose output'
144
- )
145
-
146
- c.switch(
147
- [:y],
148
- desc: 'Run catch-up mode for yesterday'
149
- )
112
+ c.switch([:c], desc: 'Run catch-up mode from the beginning of the week to yesterday')
113
+ c.switch([:i], desc: "Include today's date in catch-up")
114
+ c.switch([:verbose], desc: 'Turns on verbose output')
115
+ c.switch([:y], desc: 'Run catch-up mode for yesterday')
150
116
 
151
117
  c.action do |global_options, options, args|
152
-
153
118
  SifttterRedux.verbose = global_options[:verbose] || options[:verbose]
154
119
 
155
- CLIMessage::section_block('EXECUTING...') do
156
- if options[:c] || options[:n] || options[:w] || options[:y] || options[:f] || options[:t]
157
-
158
- command_complete = false
120
+ dates = SifttterRedux::get_dates_from_options(options)
121
+ unless dates.nil?
122
+ first_date = dates.first
123
+ second_date = dates.reverse_each.first
159
124
 
160
- # Current Week
161
- if !command_complete && options[:c]
162
- dates = DateRangeMaker.last_n_weeks(0, options[:i])
163
- command_complete = true
164
- end
125
+ date_string = first_date.strftime('%B %d, %Y')
126
+ date_string << " to #{ second_date.strftime('%B %d, %Y') }" if first_date != second_date
127
+ CLIMessage::info("Creating #{ first_date == second_date ? 'entry' : 'entries' }: #{ date_string }")
165
128
 
166
- # Last N Days
167
- if !command_complete && options[:n]
168
- dates = DateRangeMaker.last_n_days(options[:n].to_i, options[:i])
169
- command_complete = true
170
- end
129
+ # Download Sifttter files from Dropbox.
130
+ DBU.local_target = Configuration['sifttter_redux']['sifttter_local_filepath']
131
+ DBU.remote_target = Configuration['sifttter_redux']['sifttter_remote_filepath']
132
+ DBU.message = 'Downloading Sifttter files...'
133
+ DBU.download
171
134
 
172
- # Yesterday
173
- if !command_complete && options[:y]
174
- dates = DateRangeMaker.yesterday
175
- command_complete = true
176
- end
177
-
178
- # Last N Weeks
179
- if !command_complete && options[:w]
180
- dates = DateRangeMaker.last_n_weeks(options[:w].to_i, options[:i])
181
- command_complete = true
182
- end
183
-
184
- # Specific Range
185
- if !command_complete && (options[:f] || options[:t])
186
- begin
187
- dates = DateRangeMaker.range(options[:f], options[:t], options[:i])
188
-
189
- if dates.last > Date.today
190
- CLIMessage::warning("Ignoring overextended end date and using today's date (#{ Date.today })")
191
- dates = (dates.first..Date.today)
192
- end
193
- rescue ArgumentError => e
194
- CLIMessage::error(e)
195
- end
196
- end
197
- else
198
- dates = DateRangeMaker.today
135
+ # Process a new Sifttter entry for each date.
136
+ dates.each do |date|
137
+ Sifttter::run(date)
199
138
  end
200
139
 
201
- unless dates.nil?
202
- first_date = dates.first
203
- second_date = dates.reverse_each.first
204
-
205
- if first_date == second_date
206
- date_string = first_date.strftime('%B %d, %Y')
207
- CLIMessage::info("Creating entry for #{ date_string }...")
208
- else
209
- date_string = "#{ first_date.strftime('%B %d, %Y') } to #{ second_date.strftime('%B %d, %Y') }"
210
- CLIMessage::info("Creating entries for dates from #{ date_string }...")
211
- end
212
-
213
- DBU.local_target = Configuration['sifttter_redux']['sifttter_local_filepath']
214
- DBU.remote_target = Configuration['sifttter_redux']['sifttter_remote_filepath']
215
- DBU.message = 'Downloading Sifttter files...'
216
- DBU.download
217
-
218
- dates.each do |date|
219
- Sifttter.run(date)
220
- end
221
-
222
- # Upload any Day One entries to Dropbox (if there are any).
223
- unless Dir[Configuration['sifttter_redux']['dayone_local_filepath'] + '/*'].empty?
224
- DBU.local_target = "#{ Configuration['sifttter_redux']['dayone_local_filepath'] }/*"
225
- DBU.remote_target = Configuration['sifttter_redux']['dayone_remote_filepath']
226
- DBU.message = 'Uploading Day One entries to Dropbox...'
227
- DBU.upload
228
- end
229
-
230
- # Remove any downloaded local files that we no longer need.
231
- dirs = [
232
- Configuration['sifttter_redux']['dayone_local_filepath'],
233
- Configuration['sifttter_redux']['sifttter_local_filepath']
234
- ]
235
-
236
- CLIMessage::info_block('Removing temporary local files...') { dirs.each { |d| FileUtils.rm_rf(d) } }
140
+ # Upload any Day One entries to Dropbox (if there are any).
141
+ unless Dir[Configuration['sifttter_redux']['dayone_local_filepath'] + '/*'].empty?
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
237
146
  end
147
+
148
+ # Remove any downloaded local files that we no longer need.
149
+ SifttterRedux::cleanup_temp_files
238
150
  end
239
151
  end
240
152
 
@@ -245,18 +157,15 @@ end
245
157
  #
246
158
  # Initializes the script.
247
159
  # ------------------------------------------------------
248
- desc 'Install and initialize dependencies'
160
+ desc 'Install and SifttterRedux::initialize dependencies'
249
161
  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
-
162
+ c.switch([:s], desc: 'Run init from scratch (i.e., clear out all values from configuration)')
163
+
256
164
  c.action do |global_options, options, args|
257
165
  CLIMessage::section_block('INITIALIZING...') do
258
166
  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'
167
+ long_message = "You've already initialized Sifttter Redux. Do it again?"
168
+ SifttterRedux::init(true) if CLIMessage::prompt(long_message, 'N').downcase == 'y'
260
169
  else
261
170
  SifttterRedux::init
262
171
  end
@@ -2,7 +2,6 @@ require 'sifttter_redux/cli_message.rb'
2
2
  require 'sifttter_redux/configuration.rb'
3
3
  require 'sifttter_redux/date_range_maker.rb'
4
4
  require 'sifttter_redux/dbu.rb'
5
- require 'sifttter_redux/os.rb'
6
5
  require 'sifttter_redux/sifttter.rb'
7
6
  require 'sifttter_redux/version.rb'
8
7
 
@@ -13,19 +12,84 @@ require 'sifttter_redux/version.rb'
13
12
  # ======================================================
14
13
 
15
14
  module SifttterRedux
15
+ attr_accessor :verbose
16
16
 
17
- # ----------------------------------------------------
17
+ # ====================================================
18
18
  # Constants
19
- # ----------------------------------------------------
19
+ # ====================================================
20
20
  DBU_LOCAL_FILEPATH = '/usr/local/opt'
21
- DO_REMOTE_FILEPATH = "/Apps/Day\\ One/Journal.dayone/entries"
21
+
22
22
  DO_LOCAL_FILEPATH = '/tmp/dayone'
23
- SRD_CONFIG_FILEPATH = File.join(ENV['HOME'], '.sifttter_redux')
24
- SRD_LOG_FILEPATH = File.join(ENV['HOME'], '.sifttter_redux_log')
23
+ DO_REMOTE_FILEPATH = "/Apps/Day\\ One/Journal.dayone/entries"
24
+
25
25
  SFT_LOCAL_FILEPATH = '/tmp/sifttter'
26
26
  SFT_REMOTE_FILEPATH = '/Apps/ifttt/sifttter'
27
27
 
28
- @verbose_output = true
28
+ SRD_CONFIG_FILEPATH = File.join(ENV['HOME'], '.sifttter_redux')
29
+ SRD_LOG_FILEPATH = File.join(ENV['HOME'], '.sifttter_redux_log')
30
+
31
+ # ====================================================
32
+ # Methods
33
+ # ====================================================
34
+ # ----------------------------------------------------
35
+ # cleanup_temp_files method
36
+ #
37
+ # Removes temporary directories and their contents
38
+ # @return Void
39
+ # ----------------------------------------------------
40
+ def self.cleanup_temp_files
41
+ dirs = [
42
+ Configuration['sifttter_redux']['dayone_local_filepath'],
43
+ Configuration['sifttter_redux']['sifttter_local_filepath']
44
+ ]
45
+
46
+ CLIMessage::info_block('Removing temporary local files...') { dirs.each { |d| FileUtils.rm_rf(d) } }
47
+ end
48
+
49
+ # ----------------------------------------------------
50
+ # get_dates_from_options method
51
+ #
52
+ # Creates a date range from the supplied command line
53
+ # options.
54
+ # @param options A Hash of command line options
55
+ # @return Range
56
+ # ----------------------------------------------------
57
+ def self.get_dates_from_options(options)
58
+ CLIMessage::section_block('EXECUTING...') do
59
+ if options[:c] || options[:n] || options[:w] || options[:y] || options[:f] || options[:t]
60
+ # Yesterday
61
+ DateRangeMaker.yesterday if options[:y]
62
+
63
+ # Current Week
64
+ DateRangeMaker.last_n_weeks(0, options[:i]) if options[:c]
65
+
66
+ # Last N Days
67
+ DateRangeMaker.last_n_days(options[:n].to_i, options[:i]) if options[:n]
68
+
69
+ # Last N Weeks
70
+ DateRangeMaker.last_n_weeks(options[:w].to_i, options[:i]) if options[:w]
71
+
72
+ # Custom Range
73
+ if (options[:f] || options[:t])
74
+ begin
75
+ _dates = DateRangeMaker.range(options[:f], options[:t], options[:i])
76
+
77
+ if _dates.last > Date.today
78
+ long_message = "Ignoring overextended end date and using today's date (#{ Date.today })..."
79
+ CLIMessage::warning(long_message)
80
+ (_dates.first..Date.today)
81
+ else
82
+ (_dates.first.._dates.last)
83
+ end
84
+ rescue ArgumentError => e
85
+ CLIMessage::error(e)
86
+ end
87
+ end
88
+ else
89
+ DateRangeMaker.today
90
+ end
91
+ end
92
+ end
29
93
 
30
94
  # ----------------------------------------------------
31
95
  # initialize_procedures method
@@ -34,72 +98,54 @@ module SifttterRedux
34
98
  # collecting all necessary items and info.
35
99
  # @return Void
36
100
  # ----------------------------------------------------
37
- def self.init(already_initialized = false)
38
- # Re-initialize the configuration data.
39
- Configuration::add_section('sifttter_redux') unless Configuration::section_exists?('sifttter_redux')
101
+ def self.init(reinit = false)
102
+ unless reinit
103
+ Configuration::reset
104
+ Configuration::add_section('sifttter_redux')
105
+ end
40
106
  Configuration['sifttter_redux'].merge!('version' => VERSION, 'config_location' => Configuration::config_path)
41
107
 
42
108
  # Run the wizard to download Dropbox Uploader.
43
- DBU::install_wizard(already_initialized = already_initialized)
109
+ DBU::install_wizard(reinit = reinit)
44
110
 
45
111
  # Collect other misc. preferences.
46
112
  CLIMessage::section_block('COLLECTING PREFERENCES...') do
47
113
  pref_prompts = [
48
114
  {
49
115
  prompt: 'Location for downloaded Sifttter files from Dropbox',
50
- default: already_initialized ? Configuration['sifttter_redux']['sifttter_local_filepath'] : SFT_LOCAL_FILEPATH,
116
+ default: SFT_LOCAL_FILEPATH,
51
117
  key: 'sifttter_local_filepath',
52
118
  section: 'sifttter_redux'
53
119
  },
54
120
  {
55
121
  prompt: 'Location of Sifttter files in Dropbox',
56
- default: already_initialized ? Configuration['sifttter_redux']['sifttter_remote_filepath'] : SFT_REMOTE_FILEPATH,
122
+ default: SFT_REMOTE_FILEPATH,
57
123
  key: 'sifttter_remote_filepath',
58
124
  section: 'sifttter_redux'
59
125
  },
60
126
  {
61
127
  prompt: 'Location for downloaded Day One files from Dropbox',
62
- default: already_initialized ? Configuration['sifttter_redux']['dayone_local_filepath'] : DO_LOCAL_FILEPATH,
128
+ default: DO_LOCAL_FILEPATH,
63
129
  key: 'dayone_local_filepath',
64
130
  section: 'sifttter_redux'
65
131
  },
66
132
  {
67
133
  prompt: 'Location of Day One files in Dropbox',
68
- default: already_initialized ? Configuration['sifttter_redux']['dayone_remote_filepath'] : DO_REMOTE_FILEPATH,
134
+ default: DO_REMOTE_FILEPATH,
69
135
  key: 'dayone_remote_filepath',
70
136
  section: 'sifttter_redux'
71
137
  }
72
138
  ]
73
139
 
74
140
  pref_prompts.each do |prompt|
75
- pref = CLIMessage::prompt(prompt[:prompt], prompt[:default])
76
- Configuration[prompt[:section]].merge!(prompt[:key] => pref)
141
+ d = reinit ? Configuration[prompt[:section]][prompt[:key]] : prompt[:default]
142
+ pref = CLIMessage::prompt(prompt[:prompt], d)
143
+
144
+ Configuration[prompt[:section]].merge!(prompt[:key] => File.expand_path(pref))
77
145
  end
78
146
  end
79
-
147
+
80
148
  Methadone::CLILogging.info("Configuration values: #{ Configuration::dump }")
81
-
82
149
  Configuration::save
83
150
  end
84
-
85
- # ----------------------------------------------------
86
- # verbose method
87
- #
88
- # Returns the verbosity state.
89
- # @return Bool
90
- # ----------------------------------------------------
91
- def self.verbose
92
- @verbose_output
93
- end
94
-
95
- # ----------------------------------------------------
96
- # verbose= method
97
- #
98
- # Sets the verbosity state.
99
- # @return Void
100
- # ----------------------------------------------------
101
- def self.verbose=(verbose)
102
- @verbose_output = verbose
103
- end
104
-
105
151
  end
@@ -6,6 +6,9 @@ module SifttterRedux
6
6
  # Singleton to manage common CLI interfacing
7
7
  # ======================================================
8
8
  module CLIMessage
9
+ # ====================================================
10
+ # Methods
11
+ # ====================================================
9
12
  # ----------------------------------------------------
10
13
  # error method
11
14
  #
@@ -8,6 +8,9 @@ module SifttterRedux
8
8
  # into which they get stored.
9
9
  # ======================================================
10
10
  module Configuration
11
+ # ====================================================
12
+ # Methods
13
+ # ====================================================
11
14
  # ----------------------------------------------------
12
15
  # [] method
13
16
  #
@@ -29,7 +32,7 @@ module SifttterRedux
29
32
  # []= method
30
33
  #
31
34
  # Assigns the passed hash to the section. NOTE THAT THE
32
- # PREVIOUS CONTENTS OF THAT SECTION ARE DELETED.
35
+ # PREVIOUS CONTENTS OF THAT SECTION ARE OVERWRITTEN.
33
36
  # @param section_name The section in which to look
34
37
  # @param hash The Hash that gets merged into the section
35
38
  # @return Void
@@ -5,9 +5,15 @@ module SifttterRedux
5
5
  # Wrapper module for the Dropbox Uploader project
6
6
  # ======================================================
7
7
  module DBU
8
+ # ====================================================
9
+ # Constants
10
+ # ====================================================
8
11
  CONFIG_FILEPATH = File.join(ENV['HOME'], '.dropbox_uploader')
9
12
  DEFAULT_MESSAGE = 'RUNNING DROPBOX UPLOADER'
10
13
 
14
+ # ====================================================
15
+ # Methods
16
+ # ====================================================
11
17
  # ----------------------------------------------------
12
18
  # download method
13
19
  #
@@ -38,13 +44,18 @@ module SifttterRedux
38
44
  # local filesystem.
39
45
  # @return Void
40
46
  # ----------------------------------------------------
41
- def self.install_wizard(already_initialized = false)
47
+ def self.install_wizard(reinit = false)
42
48
  valid_path_chosen = false
43
49
 
44
50
  CLIMessage::section_block('CONFIGURING DROPBOX UPLOADER...') do
45
51
  until valid_path_chosen
46
52
  # Prompt the user for a location to save Dropbox Uploader.
47
- path = CLIMessage::prompt('Location for Dropbox-Uploader', already_initialized && !Configuration['db_uploader']['base_filepath'].nil? ? Configuration['db_uploader']['base_filepath'] : DBU_LOCAL_FILEPATH)
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)
48
59
  path.chop! if path.end_with?('/')
49
60
 
50
61
  # If the entered directory exists, clone the repository.
@@ -63,9 +74,11 @@ module SifttterRedux
63
74
  end
64
75
 
65
76
  # If the user has never configured Dropbox Uploader, have them do it here.
66
- CLIMessage::info_block('Initializing Dropbox Uploader...') { system "#{ executable_path }" } unless File.exists?(CONFIG_FILEPATH)
77
+ unless File.exists?(CONFIG_FILEPATH)
78
+ CLIMessage::info_block('Initializing Dropbox Uploader...') { system "#{ executable_path }" }
79
+ end
67
80
 
68
- Configuration::add_section('db_uploader') unless Configuration::section_exists?('db_uploader')
81
+ Configuration::add_section('db_uploader') unless reinit
69
82
  Configuration['db_uploader'].merge!('base_filepath' => path, 'dbu_filepath' => dbu_path, 'exe_filepath' => executable_path)
70
83
  else
71
84
  CLIMessage::error("Sorry, but #{ path } isn't a valid directory.")
@@ -5,8 +5,6 @@ module SifttterRedux
5
5
  # Wrapper module for Sifttter itself
6
6
  # ======================================================
7
7
  module Sifttter
8
- include SifttterRedux::OS
9
-
10
8
  # ----------------------------------------------------
11
9
  # run_sifttter method
12
10
  #
@@ -18,9 +16,7 @@ module SifttterRedux
18
16
  # @return Void
19
17
  # ----------------------------------------------------
20
18
  def self.run(date)
21
- uuid_command = 'uuidgen' if OS.mac?
22
- uuid_command = 'uuid' if OS.linux?
23
- uuid = %x{#{ uuid_command }}.gsub(/-/, '').strip
19
+ uuid = SecureRandom.uuid.upcase.gsub(/-/, '').strip
24
20
 
25
21
  date_for_title = date.strftime('%B %d, %Y')
26
22
  datestamp = date.to_time.utc.iso8601
@@ -51,6 +47,11 @@ module SifttterRedux
51
47
  time_regex = "(?:\d{1,2}:\d{1,2}\s?[AaPpMm]{2})"
52
48
 
53
49
  files = `find #{ Configuration['sifttter_redux']['sifttter_local_filepath'] } -type f -name "*.txt" | grep -v -i daily | sort`
50
+ if files.empty?
51
+ m = "Couldn't download Sifttter files; is #{ Configuration['sifttter_redux']['sifttter_remote_filepath'] } the correct remote filepath?"
52
+ CLIMessage.error(m)
53
+ return
54
+ end
54
55
 
55
56
  projects = []
56
57
  files.split("\n").each do |file|
@@ -1,4 +1,4 @@
1
1
  module SifttterRedux
2
- VERSION = '0.4.4'
2
+ VERSION = '0.4.6'
3
3
  NEWEST_CONFIG_VERSION = '0.4.3'
4
4
  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
4
+ version: 0.4.6
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-28 00:00:00.000000000 Z
11
+ date: 2014-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -90,7 +90,6 @@ files:
90
90
  - lib/sifttter_redux/configuration.rb
91
91
  - lib/sifttter_redux/date_range_maker.rb
92
92
  - lib/sifttter_redux/dbu.rb
93
- - lib/sifttter_redux/os.rb
94
93
  - lib/sifttter_redux/sifttter.rb
95
94
  - lib/sifttter_redux/string_extensions.rb
96
95
  - lib/sifttter_redux/version.rb
@@ -1,48 +0,0 @@
1
- module SifttterRedux
2
- # ======================================================
3
- # OS Module
4
- #
5
- # Module to easily find the running operating system
6
- # ======================================================
7
- module OS
8
- # ----------------------------------------------------
9
- # linux? method
10
- #
11
- # Returns true if the host OS is Linux.
12
- # @return Bool
13
- # ----------------------------------------------------
14
- def OS.linux?
15
- self.unix? and not self.mac?
16
- end
17
-
18
- # ----------------------------------------------------
19
- # mac? method
20
- #
21
- # Returns true if the host OS is OS X.
22
- # @return Bool
23
- # ----------------------------------------------------
24
- def OS.mac?
25
- !(/darwin/ =~ RUBY_PLATFORM).nil?
26
- end
27
-
28
- # ----------------------------------------------------
29
- # unix? method
30
- #
31
- # Returns true if the host OS is Unix.
32
- # @return Bool
33
- # ----------------------------------------------------
34
- def OS.unix?
35
- !self.windows?
36
- end
37
-
38
- # ----------------------------------------------------
39
- # windows? method
40
- #
41
- # Returns true if the host OS is Windows
42
- # @return Bool
43
- # ----------------------------------------------------
44
- def OS.windows?
45
- !(/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM).nil?
46
- end
47
- end
48
- end