sifttter-redux 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.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
|
- - ">="
|