sifttter-redux 0.4.4 → 0.4.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 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