sifttter-redux 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +0 -3
- data/HISTORY.md +4 -0
- data/{LICENSE.txt → LICENSE} +0 -0
- data/README.md +1 -1
- data/Rakefile +77 -2
- data/bin/srd +11 -10
- data/lib/sifttter_redux/cli_message.rb +1 -0
- data/lib/sifttter_redux/configuration.rb +26 -86
- data/lib/sifttter_redux/sifttter.rb +4 -4
- data/lib/sifttter_redux/version.rb +4 -2
- data/lib/sifttter_redux.rb +30 -24
- data/sifttter_redux.gemspec +26 -22
- data/test/cli_message_test.rb +1 -16
- data/test/configuration_test.rb +32 -30
- metadata +34 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 125b9d118c416b34ebe992b95f18bb55d97d3807
|
4
|
+
data.tar.gz: a5e68191e9b9a584427e86e241f8ab0933b19104
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e59c3223ed42ccb22ff39a66673f5ce906646157a0e42f97c23a5e217da86bffdaeec2b977ea65c971812fd2c60becd605d11bdc6d408ce68a1160d201258bf
|
7
|
+
data.tar.gz: b8d58d3b7ce838909504694dd5346ee94874b790cda987604ed1facf27890cf2d814aaef527c2634484615c874d9d88d6bd2497ae3d29189213d83e38e11efff
|
data/.gitignore
CHANGED
data/HISTORY.md
CHANGED
data/{LICENSE.txt → LICENSE}
RENAMED
File without changes
|
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -1,9 +1,84 @@
|
|
1
1
|
require 'rake/clean'
|
2
|
-
require '
|
2
|
+
require 'rubygems'
|
3
|
+
require 'rubygems/package_task'
|
4
|
+
require 'rdoc/task'
|
5
|
+
require 'cucumber'
|
6
|
+
require 'cucumber/rake/task'
|
7
|
+
Rake::RDocTask.new do |rd|
|
8
|
+
rd.main = "README.rdoc"
|
9
|
+
rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*")
|
10
|
+
rd.title = 'Your application title'
|
11
|
+
end
|
12
|
+
|
13
|
+
spec = eval(File.read('sifttter_redux.gemspec'))
|
14
|
+
|
15
|
+
Gem::PackageTask.new(spec) do |pkg|
|
16
|
+
end
|
17
|
+
CUKE_RESULTS = 'results.html'
|
18
|
+
CLEAN << CUKE_RESULTS
|
19
|
+
desc 'Run features'
|
20
|
+
Cucumber::Rake::Task.new(:features) do |t|
|
21
|
+
opts = "features --format html -o #{CUKE_RESULTS} --format progress -x"
|
22
|
+
opts += " --tags #{ENV['TAGS']}" if ENV['TAGS']
|
23
|
+
t.cucumber_opts = opts
|
24
|
+
t.fork = false
|
25
|
+
end
|
26
|
+
|
27
|
+
desc 'Run features tagged as work-in-progress (@wip)'
|
28
|
+
Cucumber::Rake::Task.new('features:wip') do |t|
|
29
|
+
tag_opts = ' --tags ~@pending'
|
30
|
+
tag_opts = ' --tags @wip'
|
31
|
+
t.cucumber_opts = "features --format html -o #{CUKE_RESULTS} --format pretty -x -s#{tag_opts}"
|
32
|
+
t.fork = false
|
33
|
+
end
|
3
34
|
|
35
|
+
task :cucumber => :features
|
36
|
+
task 'cucumber:wip' => 'features:wip'
|
37
|
+
task :wip => 'features:wip'
|
38
|
+
require 'rake/testtask'
|
4
39
|
Rake::TestTask.new do |t|
|
5
40
|
t.libs << "test"
|
6
41
|
t.test_files = FileList['test/*_test.rb']
|
7
42
|
end
|
8
43
|
|
9
|
-
task :default => [:test]
|
44
|
+
task :default => [:test,:features]
|
45
|
+
|
46
|
+
# require 'rake/clean'
|
47
|
+
# require 'rubygems'
|
48
|
+
# require 'rubygems/package_task'
|
49
|
+
# require 'cucumber'
|
50
|
+
# require 'cucumber/rake/task'
|
51
|
+
# spec = eval(File.read('sifttter_redux.gemspec'))
|
52
|
+
#
|
53
|
+
# Gem::PackageTask.new(spec) do |pkg|
|
54
|
+
# end
|
55
|
+
#
|
56
|
+
# CUKE_RESULTS = 'results.html'
|
57
|
+
# CLEAN << CUKE_RESULTS
|
58
|
+
#
|
59
|
+
# desc 'Run features'
|
60
|
+
# Cucumber::Rake::Task.new(:features) do |t|
|
61
|
+
# opts = "features --format html -o #{CUKE_RESULTS} --format progress -x"
|
62
|
+
# opts += " --tags #{ENV['TAGS']}" if ENV['TAGS']
|
63
|
+
# t.cucumber_opts = opts
|
64
|
+
# t.fork = false
|
65
|
+
# end
|
66
|
+
#
|
67
|
+
# desc 'Run features tagged as work-in-progress (@wip)'
|
68
|
+
# Cucumber::Rake::Task.new('features:wip') do |t|
|
69
|
+
# tag_opts = ' --tags ~@pending'
|
70
|
+
# tag_opts = ' --tags @wip'
|
71
|
+
# t.cucumber_opts = "features --format html -o #{CUKE_RESULTS} --format pretty -x -s#{tag_opts}"
|
72
|
+
# t.fork = false
|
73
|
+
# end
|
74
|
+
#
|
75
|
+
# task :cucumber => :features
|
76
|
+
# task 'cucumber:wip' => 'features:wip'
|
77
|
+
# task :wip => 'features:wip'
|
78
|
+
# require 'rake/testtask'
|
79
|
+
# Rake::TestTask.new do |t|
|
80
|
+
# t.libs << "test"
|
81
|
+
# t.test_files = FileList['test/*_test.rb']
|
82
|
+
# end
|
83
|
+
#
|
84
|
+
# task :default => [:test,:features]
|
data/bin/srd
CHANGED
@@ -59,19 +59,20 @@ switch([:verbose], desc: 'Turns on verbose output')
|
|
59
59
|
# Pre, Post, and Error
|
60
60
|
# ======================================================
|
61
61
|
pre do |global, command, options, args|
|
62
|
+
|
62
63
|
# Load SifttterRedux configuration module.
|
63
64
|
Configuration::load(SRD_CONFIG_FILEPATH)
|
64
|
-
|
65
|
+
|
65
66
|
# Set up logging.
|
66
67
|
CLIMessage::activate_logging
|
67
|
-
CLIMessage::log_level(Configuration
|
68
|
+
CLIMessage::log_level(Configuration::sifttter_redux[:log_level] || Logger::WARN)
|
68
69
|
|
69
70
|
if File.exists?(SRD_CONFIG_FILEPATH)
|
70
|
-
current_version = Gem::Version.new(Configuration
|
71
|
+
current_version = Gem::Version.new(Configuration::sifttter_redux[:version])
|
71
72
|
last_config_change_version = Gem::Version.new(NEWEST_CONFIG_VERSION)
|
72
73
|
|
73
74
|
# If the config file needs updating, force the user to do that first.
|
74
|
-
if Configuration
|
75
|
+
if Configuration::sifttter_redux[:version].nil? || current_version < last_config_change_version
|
75
76
|
CLIMessage::info('This version needs to make some config changes.')
|
76
77
|
CLIMessage::info("Don't worry; when prompted, your current values for")
|
77
78
|
CLIMessage::info("existing config options will be presented (so it'll")
|
@@ -124,10 +125,10 @@ command :exec do |c|
|
|
124
125
|
CLIMessage::info("Creating #{ first_date == second_date ? 'entry' : 'entries' }: #{ date_string }")
|
125
126
|
|
126
127
|
# Download Sifttter files from Dropbox.
|
127
|
-
dbu = DropboxUploader.new(Configuration
|
128
|
+
dbu = DropboxUploader.new(Configuration::db_uploader[:exe_filepath])
|
128
129
|
dbu.verbose = SifttterRedux.verbose
|
129
|
-
dbu.local_target = Configuration
|
130
|
-
dbu.remote_target = Configuration
|
130
|
+
dbu.local_target = Configuration::sifttter_redux[:sifttter_local_filepath]
|
131
|
+
dbu.remote_target = Configuration::sifttter_redux[:sifttter_remote_filepath]
|
131
132
|
dbu.message = 'Downloading Sifttter files...'
|
132
133
|
|
133
134
|
CLIMessage::info_block(dbu.message || dbu::DEFAULT_MESSAGE, 'Done.', SifttterRedux.verbose) do
|
@@ -140,9 +141,9 @@ command :exec do |c|
|
|
140
141
|
end
|
141
142
|
|
142
143
|
# Upload any Day One entries to Dropbox (if there are any).
|
143
|
-
unless Dir[Configuration
|
144
|
-
dbu.local_target = "#{ Configuration
|
145
|
-
dbu.remote_target = Configuration
|
144
|
+
unless Dir[Configuration::sifttter_redux[:dayone_local_filepath] + '/*'].empty?
|
145
|
+
dbu.local_target = "#{ Configuration::sifttter_redux[:dayone_local_filepath] }/*"
|
146
|
+
dbu.remote_target = Configuration::sifttter_redux[:dayone_remote_filepath]
|
146
147
|
dbu.message = 'Uploading Day One entries to Dropbox...'
|
147
148
|
|
148
149
|
CLIMessage::info_block(dbu.message || dbu::DEFAULT_MESSAGE, 'Done.', SifttterRedux.verbose) do
|
@@ -8,92 +8,44 @@ module SifttterRedux
|
|
8
8
|
# into which they get stored.
|
9
9
|
# ======================================================
|
10
10
|
module Configuration
|
11
|
+
extend self
|
12
|
+
|
13
|
+
@_data = {}
|
11
14
|
# ====================================================
|
12
15
|
# Methods
|
13
16
|
# ====================================================
|
14
17
|
# ----------------------------------------------------
|
15
|
-
#
|
18
|
+
# deep_merge! method
|
16
19
|
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
20
|
+
# Deep merges two hashes.
|
21
|
+
# deep_merge by Stefan Rusterholz;
|
22
|
+
# see http://www.ruby-forum.com/topic/142809
|
23
|
+
# @return Void
|
20
24
|
# ----------------------------------------------------
|
21
|
-
def
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
error = "Section does not exist: #{ section_name }"
|
26
|
-
fail ArgumentError, error
|
27
|
-
end
|
25
|
+
def deep_merge!(target, data)
|
26
|
+
merger = proc{|key, v1, v2|
|
27
|
+
Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : v2 }
|
28
|
+
target.merge! data, &merger
|
28
29
|
end
|
29
30
|
|
30
|
-
|
31
|
-
|
32
|
-
#
|
33
|
-
# Assigns the passed hash to the section. NOTE THAT THE
|
34
|
-
# PREVIOUS CONTENTS OF THAT SECTION ARE OVERWRITTEN.
|
35
|
-
# @param section_name The section in which to look
|
36
|
-
# @param hash The Hash that gets merged into the section
|
37
|
-
# @return Void
|
38
|
-
# ----------------------------------------------------
|
39
|
-
def self.[]=(section_name, hash)
|
40
|
-
if hash.is_a?(Hash)
|
41
|
-
@data[section_name] = {}
|
42
|
-
@data[section_name].merge!(hash)
|
43
|
-
else
|
44
|
-
error = "Parameter is not a Hash: #{ hash }"
|
45
|
-
fail ArgumentError, error
|
46
|
-
end
|
31
|
+
def method_missing(name, *args, &block)
|
32
|
+
@_data[name.to_sym] || {}
|
47
33
|
end
|
48
34
|
|
49
|
-
# ----------------------------------------------------
|
50
|
-
# add_section method
|
51
|
-
#
|
52
|
-
# Creates a new section in the configuration data.
|
53
|
-
# @param section_name The section to add
|
54
|
-
# @return Void
|
55
|
-
# ----------------------------------------------------
|
56
35
|
def self.add_section(section_name)
|
57
|
-
|
58
|
-
@data[section_name] = {}
|
59
|
-
else
|
60
|
-
CLIMessage::warning("Can't create already-existing section: #{ section_name }")
|
61
|
-
end
|
36
|
+
@_data[section_name] = {} unless @_data.key?(section_name)
|
62
37
|
end
|
63
|
-
|
64
|
-
# ----------------------------------------------------
|
65
|
-
# config_path method
|
66
|
-
#
|
67
|
-
# Returns the filepath to the flat configuration file.
|
68
|
-
# @return String
|
69
|
-
# ----------------------------------------------------
|
38
|
+
|
70
39
|
def self.config_path
|
71
|
-
@
|
40
|
+
@_config_path
|
72
41
|
end
|
73
|
-
|
74
|
-
# ----------------------------------------------------
|
75
|
-
# delete_section method
|
76
|
-
#
|
77
|
-
# Deletes a section from the configuration data.
|
78
|
-
# @param section_name The section to delete
|
79
|
-
# @return Void
|
80
|
-
# ----------------------------------------------------
|
42
|
+
|
81
43
|
def self.delete_section(section_name)
|
82
|
-
if
|
83
|
-
@data.delete(section_name)
|
84
|
-
else
|
85
|
-
CLIMessage::warning("Can't delete non-existing section: #{ section_name }")
|
86
|
-
end
|
44
|
+
@_data.delete(section_name) if @_data.key?(section_name)
|
87
45
|
end
|
88
46
|
|
89
|
-
# ----------------------------------------------------
|
90
|
-
# dump method
|
91
|
-
#
|
92
|
-
# Returns the data Hash
|
93
|
-
# @return Hash
|
94
|
-
# ----------------------------------------------------
|
95
47
|
def self.dump
|
96
|
-
@
|
48
|
+
@_data
|
97
49
|
end
|
98
50
|
|
99
51
|
# ----------------------------------------------------
|
@@ -105,12 +57,11 @@ module SifttterRedux
|
|
105
57
|
# @return Void
|
106
58
|
# ----------------------------------------------------
|
107
59
|
def self.load(path)
|
108
|
-
@
|
109
|
-
|
60
|
+
@_config_path = path
|
61
|
+
|
110
62
|
if File.exists?(path)
|
111
|
-
|
112
|
-
|
113
|
-
@data = {}
|
63
|
+
data = YAML.load_file(path)
|
64
|
+
deep_merge!(@_data, data)
|
114
65
|
end
|
115
66
|
end
|
116
67
|
|
@@ -121,7 +72,7 @@ module SifttterRedux
|
|
121
72
|
# @return Void
|
122
73
|
# ----------------------------------------------------
|
123
74
|
def self.reset
|
124
|
-
@
|
75
|
+
@_data = {}
|
125
76
|
end
|
126
77
|
|
127
78
|
# ----------------------------------------------------
|
@@ -132,18 +83,7 @@ module SifttterRedux
|
|
132
83
|
# @return Void
|
133
84
|
# ----------------------------------------------------
|
134
85
|
def self.save
|
135
|
-
File.open(@
|
136
|
-
end
|
137
|
-
|
138
|
-
# ----------------------------------------------------
|
139
|
-
# section_exists? method
|
140
|
-
#
|
141
|
-
# Checks for the existance of the passed section.
|
142
|
-
# @param section_name The section to look for
|
143
|
-
# @return Bool
|
144
|
-
# ----------------------------------------------------
|
145
|
-
def self.section_exists?(section_name)
|
146
|
-
@data.key?(section_name)
|
86
|
+
File.open(@_config_path, 'w') { |f| f.write(@_data.to_yaml) }
|
147
87
|
end
|
148
88
|
end
|
149
89
|
end
|
@@ -46,9 +46,9 @@ module SifttterRedux
|
|
46
46
|
date_regex = "(?:#{ date.strftime("%B") } 0?#{ date.strftime("%-d") }, #{ date.strftime("%Y") })"
|
47
47
|
time_regex = "(?:\d{1,2}:\d{1,2}\s?[AaPpMm]{2})"
|
48
48
|
|
49
|
-
files = `find #{ Configuration
|
49
|
+
files = `find #{ Configuration::sifttter_redux[:sifttter_local_filepath] } -type f -name "*.txt" | grep -v -i daily | sort`
|
50
50
|
if files.empty?
|
51
|
-
CLIMessage::error("No Sifttter files to parse; is #{ Configuration
|
51
|
+
CLIMessage::error("No Sifttter files to parse; is #{ Configuration::sifttter_redux[:sifttter_remote_filepath] } the correct remote filepath?")
|
52
52
|
return
|
53
53
|
end
|
54
54
|
|
@@ -86,9 +86,9 @@ module SifttterRedux
|
|
86
86
|
entrytext += project.gsub(/.txt/, ' ') + "\n\n"
|
87
87
|
end
|
88
88
|
|
89
|
-
Dir.mkdir(Configuration
|
89
|
+
Dir.mkdir(Configuration::sifttter_redux[:dayone_local_filepath]) if !Dir.exists?(Configuration::sifttter_redux[:dayone_local_filepath])
|
90
90
|
|
91
|
-
fh = File.new(File.expand_path(Configuration
|
91
|
+
fh = File.new(File.expand_path(Configuration::sifttter_redux[:dayone_local_filepath] + '/' + uuid + '.doentry'), 'w+')
|
92
92
|
fh.puts template.result(binding)
|
93
93
|
fh.close
|
94
94
|
CLIMessage::success("Entry logged for #{ date_for_title }...")
|
@@ -1,4 +1,6 @@
|
|
1
1
|
module SifttterRedux
|
2
|
-
|
3
|
-
|
2
|
+
DESCRIPTION = 'A customized IFTTT-to-Day One service that allows for smart installation and automated running on a standalone *NIX device (such as a Raspberry Pi).'
|
3
|
+
SUMMARY = 'Automated IFTTT to Day One engine.'
|
4
|
+
VERSION = '0.5.2'
|
5
|
+
NEWEST_CONFIG_VERSION = '0.5.2'
|
4
6
|
end
|
data/lib/sifttter_redux.rb
CHANGED
@@ -40,8 +40,8 @@ module SifttterRedux
|
|
40
40
|
# ----------------------------------------------------
|
41
41
|
def self.cleanup_temp_files
|
42
42
|
dirs = [
|
43
|
-
Configuration
|
44
|
-
Configuration
|
43
|
+
Configuration::sifttter_redux[:dayone_local_filepath],
|
44
|
+
Configuration::sifttter_redux[:sifttter_local_filepath]
|
45
45
|
]
|
46
46
|
|
47
47
|
CLIMessage::info_block('Removing temporary local files...') do
|
@@ -65,8 +65,8 @@ module SifttterRedux
|
|
65
65
|
CLIMessage::section_block('CONFIGURING DROPBOX UPLOADER...') do
|
66
66
|
until valid_path_chosen
|
67
67
|
# Prompt the user for a location to save Dropbox Uploader.
|
68
|
-
if reinit && !Configuration
|
69
|
-
default = Configuration
|
68
|
+
if reinit && !Configuration::db_uploader[:base_filepath].nil?
|
69
|
+
default = Configuration::db_uploader[:base_filepath]
|
70
70
|
else
|
71
71
|
default = DBU_LOCAL_FILEPATH
|
72
72
|
end
|
@@ -94,8 +94,12 @@ module SifttterRedux
|
|
94
94
|
CLIMessage::info_block('Initializing Dropbox Uploader...') { system "#{ executable_path }" }
|
95
95
|
end
|
96
96
|
|
97
|
-
Configuration::add_section(
|
98
|
-
Configuration
|
97
|
+
Configuration::add_section(:db_uploader) unless reinit
|
98
|
+
Configuration::db_uploader.merge!({
|
99
|
+
base_filepath: path,
|
100
|
+
dbu_filepath: dbu_path,
|
101
|
+
exe_filepath: executable_path
|
102
|
+
})
|
99
103
|
else
|
100
104
|
CLIMessage::error("Sorry, but #{ path } isn't a valid directory.")
|
101
105
|
end
|
@@ -159,10 +163,11 @@ module SifttterRedux
|
|
159
163
|
Configuration::reset
|
160
164
|
Configuration::add_section('sifttter_redux')
|
161
165
|
end
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
'
|
166
|
+
|
167
|
+
Configuration::sifttter_redux.merge!({
|
168
|
+
config_location: Configuration::config_path,
|
169
|
+
log_level: 'WARN',
|
170
|
+
version: VERSION,
|
166
171
|
})
|
167
172
|
|
168
173
|
# Run the wizard to download Dropbox Uploader.
|
@@ -172,36 +177,37 @@ module SifttterRedux
|
|
172
177
|
CLIMessage::section_block('COLLECTING PREFERENCES...') do
|
173
178
|
pref_prompts = [
|
174
179
|
{
|
175
|
-
prompt: '
|
180
|
+
prompt: 'Temporary path to download Sifttter files to',
|
176
181
|
default: SFT_LOCAL_FILEPATH,
|
177
|
-
key:
|
178
|
-
section:
|
182
|
+
key: :sifttter_local_filepath,
|
183
|
+
section: :sifttter_redux
|
179
184
|
},
|
180
185
|
{
|
181
|
-
prompt: '
|
186
|
+
prompt: 'Path to Sifttter files in Dropbox',
|
182
187
|
default: SFT_REMOTE_FILEPATH,
|
183
|
-
key:
|
184
|
-
section:
|
188
|
+
key: :sifttter_remote_filepath,
|
189
|
+
section: :sifttter_redux
|
185
190
|
},
|
186
191
|
{
|
187
|
-
prompt: '
|
192
|
+
prompt: 'Temporary path to download Day One files to',
|
188
193
|
default: DO_LOCAL_FILEPATH,
|
189
|
-
key:
|
190
|
-
section:
|
194
|
+
key: :dayone_local_filepath,
|
195
|
+
section: :sifttter_redux
|
191
196
|
},
|
192
197
|
{
|
193
|
-
prompt: '
|
198
|
+
prompt: 'Path to Day One files in Dropbox',
|
194
199
|
default: DO_REMOTE_FILEPATH,
|
195
|
-
key:
|
196
|
-
section:
|
200
|
+
key: :dayone_remote_filepath,
|
201
|
+
section: :sifttter_redux
|
197
202
|
}
|
198
203
|
]
|
199
204
|
|
200
205
|
pref_prompts.each do |prompt|
|
201
|
-
d = reinit ? Configuration
|
206
|
+
d = reinit ? Configuration::send(prompt[:section].to_sym)[prompt[:key]] : prompt[:default]
|
202
207
|
pref = CLIMessage::prompt(prompt[:prompt], d)
|
203
208
|
|
204
|
-
|
209
|
+
pref = File.expand_path(pref) if pref.start_with?('~')
|
210
|
+
Configuration::send(prompt[:section].to_sym).merge!(prompt[:key] => pref)
|
205
211
|
CLIMessage::debug("Value for #{ prompt[:key] }: #{ pref }")
|
206
212
|
end
|
207
213
|
end
|
data/sifttter_redux.gemspec
CHANGED
@@ -1,27 +1,31 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'sifttter_redux/version'
|
3
5
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'sifttter-redux'
|
8
|
+
spec.version = SifttterRedux::VERSION
|
9
|
+
spec.authors = ['Aaron Bach']
|
10
|
+
spec.email = ['bachya1208@googlemail.com']
|
11
|
+
spec.summary = SifttterRedux::SUMMARY
|
12
|
+
spec.description = SifttterRedux::DESCRIPTION
|
13
|
+
spec.homepage = 'https://github.com/bachya/sifttter-redux'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
spec.platform = Gem::Platform::RUBY
|
13
16
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
s.executables << 'srd'
|
17
|
+
spec.require_paths = ["lib"]
|
18
|
+
spec.files = `git ls-files`.split("\n")
|
19
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
20
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
21
|
|
20
|
-
|
21
|
-
|
22
|
-
|
22
|
+
spec.license = 'MIT'
|
23
|
+
spec.rdoc_options = ['--charset=UTF-8']
|
24
|
+
spec.extra_rdoc_files = %w[README.md HISTORY.md LICENSE]
|
23
25
|
|
24
|
-
|
25
|
-
|
26
|
-
|
26
|
+
spec.add_development_dependency('rake', '~> 0')
|
27
|
+
spec.add_development_dependency('rdoc', '~> 0')
|
28
|
+
spec.add_development_dependency('aruba', '~> 0')
|
29
|
+
spec.add_runtime_dependency('chronic', '0.10.2')
|
30
|
+
spec.add_runtime_dependency('gli','2.9.0')
|
27
31
|
end
|
data/test/cli_message_test.rb
CHANGED
@@ -50,20 +50,5 @@ class CLIMessageTest < Test::Unit::TestCase
|
|
50
50
|
def test_warning_message
|
51
51
|
assert_output('# test'.yellow + "\n") { SifttterRedux::CLIMessage::warning('test') }
|
52
52
|
end
|
53
|
-
|
54
|
-
# def test_prompt
|
55
|
-
# with_stdin do |answer|
|
56
|
-
# answer.puts 'default'
|
57
|
-
# assert_equal(SifttterRedux::CLIMessage::prompt('Hit enter to give the default response', 'default'), 'default')
|
58
|
-
# end
|
59
|
-
# end
|
60
|
-
#
|
61
|
-
# def with_stdin
|
62
|
-
# stdin = $stdin # remember $stdin
|
63
|
-
# $stdin, write = IO.pipe # create pipe assigning its "read end" to $stdin
|
64
|
-
# yield write # pass pipe's "write end" to block
|
65
|
-
# ensure
|
66
|
-
# write.close # close pipe
|
67
|
-
# $stdin = stdin # restore $stdin
|
68
|
-
# end
|
53
|
+
|
69
54
|
end
|
data/test/configuration_test.rb
CHANGED
@@ -12,26 +12,29 @@ class ConfigurationTest < Test::Unit::TestCase
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_add_data
|
15
|
-
SifttterRedux::Configuration::
|
16
|
-
SifttterRedux::Configuration
|
17
|
-
|
15
|
+
SifttterRedux::Configuration::reset
|
16
|
+
SifttterRedux::Configuration::add_section(:section1)
|
17
|
+
SifttterRedux::Configuration::section1.merge!( a: 'test', b: 'test' )
|
18
|
+
assert_equal(SifttterRedux::Configuration::dump, { section1: { a: 'test', b: 'test' } })
|
18
19
|
|
19
|
-
SifttterRedux::Configuration
|
20
|
-
SifttterRedux::Configuration
|
21
|
-
assert_equal(SifttterRedux::Configuration::dump, {
|
20
|
+
SifttterRedux::Configuration::section1[:a] = 'bigger test'
|
21
|
+
SifttterRedux::Configuration::section1[:c] = 'little test'
|
22
|
+
assert_equal(SifttterRedux::Configuration::dump, { section1: { a: 'bigger test', b: 'test', c: 'little test' } })
|
22
23
|
end
|
23
24
|
|
24
25
|
def test_add_section
|
25
|
-
SifttterRedux::Configuration::
|
26
|
-
SifttterRedux::Configuration::add_section(
|
27
|
-
|
26
|
+
SifttterRedux::Configuration::reset
|
27
|
+
SifttterRedux::Configuration::add_section(:section1)
|
28
|
+
SifttterRedux::Configuration::add_section(:section2)
|
29
|
+
assert_equal(SifttterRedux::Configuration::dump, { section1: {}, section2: {} })
|
28
30
|
end
|
29
31
|
|
30
32
|
def test_add_section_duplicate
|
31
|
-
SifttterRedux::Configuration::
|
32
|
-
SifttterRedux::Configuration::add_section(
|
33
|
-
SifttterRedux::Configuration::add_section(
|
34
|
-
|
33
|
+
SifttterRedux::Configuration::reset
|
34
|
+
SifttterRedux::Configuration::add_section(:section1)
|
35
|
+
SifttterRedux::Configuration::add_section(:section2)
|
36
|
+
SifttterRedux::Configuration::add_section(:section2)
|
37
|
+
assert_equal(SifttterRedux::Configuration::dump, { section1: {}, section2: {} })
|
35
38
|
end
|
36
39
|
|
37
40
|
def test_config_path
|
@@ -39,38 +42,37 @@ class ConfigurationTest < Test::Unit::TestCase
|
|
39
42
|
end
|
40
43
|
|
41
44
|
def test_delete_section
|
42
|
-
SifttterRedux::Configuration::
|
43
|
-
SifttterRedux::Configuration::add_section(
|
44
|
-
SifttterRedux::Configuration::
|
45
|
-
|
45
|
+
SifttterRedux::Configuration::reset
|
46
|
+
SifttterRedux::Configuration::add_section(:section1)
|
47
|
+
SifttterRedux::Configuration::add_section(:section2)
|
48
|
+
SifttterRedux::Configuration::delete_section(:section2)
|
49
|
+
assert_equal(SifttterRedux::Configuration::dump, { section1: {} })
|
46
50
|
end
|
47
51
|
|
48
52
|
def test_delete_section_nonexistant
|
49
|
-
SifttterRedux::Configuration::
|
53
|
+
SifttterRedux::Configuration::reset
|
54
|
+
SifttterRedux::Configuration::add_section(:section1)
|
50
55
|
SifttterRedux::Configuration::delete_section('section12723762323')
|
51
|
-
assert_equal(SifttterRedux::Configuration::dump, {
|
56
|
+
assert_equal(SifttterRedux::Configuration::dump, { section1: {} })
|
52
57
|
end
|
53
58
|
|
54
59
|
def test_reset
|
55
|
-
SifttterRedux::Configuration::
|
56
|
-
SifttterRedux::Configuration::add_section(
|
57
|
-
SifttterRedux::Configuration::add_section(
|
60
|
+
SifttterRedux::Configuration::reset
|
61
|
+
SifttterRedux::Configuration::add_section(:section1)
|
62
|
+
SifttterRedux::Configuration::add_section(:section2)
|
63
|
+
SifttterRedux::Configuration::add_section(:section3)
|
58
64
|
SifttterRedux::Configuration::reset
|
59
65
|
assert_equal(SifttterRedux::Configuration::dump, {})
|
60
66
|
end
|
61
67
|
|
62
68
|
def test_save
|
63
|
-
SifttterRedux::Configuration::
|
64
|
-
SifttterRedux::Configuration
|
69
|
+
SifttterRedux::Configuration::reset
|
70
|
+
SifttterRedux::Configuration::add_section(:section1)
|
71
|
+
SifttterRedux::Configuration.section1.merge!({ a: 'test', b: 'test' })
|
65
72
|
SifttterRedux::Configuration::save
|
66
73
|
|
67
74
|
File.open('/tmp/srd_config', 'r') do |f|
|
68
|
-
assert_output("---\
|
75
|
+
assert_output("---\n:section1:\n :a: test\n :b: test\n") { puts f.read }
|
69
76
|
end
|
70
77
|
end
|
71
|
-
|
72
|
-
def test_section_exists
|
73
|
-
SifttterRedux::Configuration::add_section('section1')
|
74
|
-
assert_equal(SifttterRedux::Configuration::section_exists?('section1'), true)
|
75
|
-
end
|
76
78
|
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.5.
|
4
|
+
version: 0.5.2
|
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-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -24,6 +24,34 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rdoc
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: aruba
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
27
55
|
- !ruby/object:Gem::Dependency
|
28
56
|
name: chronic
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -54,20 +82,21 @@ dependencies:
|
|
54
82
|
version: 2.9.0
|
55
83
|
description: A customized IFTTT-to-Day One service that allows for smart installation
|
56
84
|
and automated running on a standalone *NIX device (such as a Raspberry Pi).
|
57
|
-
email:
|
85
|
+
email:
|
86
|
+
- bachya1208@googlemail.com
|
58
87
|
executables:
|
59
88
|
- srd
|
60
89
|
extensions: []
|
61
90
|
extra_rdoc_files:
|
62
91
|
- README.md
|
63
92
|
- HISTORY.md
|
64
|
-
- LICENSE
|
93
|
+
- LICENSE
|
65
94
|
files:
|
66
95
|
- ".gitignore"
|
67
96
|
- ".travis.yml"
|
68
97
|
- Gemfile
|
69
98
|
- HISTORY.md
|
70
|
-
- LICENSE
|
99
|
+
- LICENSE
|
71
100
|
- README.md
|
72
101
|
- Rakefile
|
73
102
|
- bin/srd
|
@@ -92,7 +121,6 @@ rdoc_options:
|
|
92
121
|
- "--charset=UTF-8"
|
93
122
|
require_paths:
|
94
123
|
- lib
|
95
|
-
- lib
|
96
124
|
required_ruby_version: !ruby/object:Gem::Requirement
|
97
125
|
requirements:
|
98
126
|
- - ">="
|