nikki 0.5.7 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -0
- data/lib/nikki/version.rb +1 -1
- data/lib/nikki.rb +25 -157
- metadata +4 -4
- data/.travis.yml +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df96721c6f7e903e772be3b0bcb13e0d350d2d7c
|
4
|
+
data.tar.gz: 0f2cd93c62189cc99dd68c17840b9d7d7c77f50e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 28c5cb7d185cf27818f601becdfca46929f60a1759e8c1eea89aa888614244fcf02b238a9e6ff559d0f02753b061b9619060ff5c66cce74d8668dad318b1775f
|
7
|
+
data.tar.gz: fe47682a4916ed1983e81f68c9f520473bb4b0d116da1561165d2cd7e8dbc248df41d63d342e3cf5f007a68bf3aba7b056eab5cecc9356d542b18fcbb0f0f3e2
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.3.0
|
data/lib/nikki/version.rb
CHANGED
data/lib/nikki.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'thor'
|
2
2
|
require 'pathname'
|
3
|
-
require 'yaml'
|
3
|
+
require 'yaml/store'
|
4
4
|
require 'date'
|
5
5
|
require 'fileutils'
|
6
6
|
|
@@ -8,16 +8,8 @@ require 'fileutils'
|
|
8
8
|
# This is the main class that interfaces with Thor's methods and does all the
|
9
9
|
# heavy lifting for Nikki. It's a bit of a "God" object. Sorries.
|
10
10
|
class Generator < Thor
|
11
|
-
|
12
|
-
|
13
|
-
# This methods creates the ".nikki" directory, config file and journal file.
|
14
|
-
def setup
|
15
|
-
create_path
|
16
|
-
create_file
|
17
|
-
create_config_file
|
18
|
-
end
|
19
|
-
|
20
|
-
# @!endgroup
|
11
|
+
NIKKI_PATH = Pathname.new("#{ENV['HOME']}/.nikki")
|
12
|
+
NIKKI_FILE = Pathname.new("#{ENV['HOME']}/.nikki/nikki.yaml")
|
21
13
|
|
22
14
|
# @!group Data entry
|
23
15
|
desc 'new ENTRY', 'Creates a new entry in the Nikki journal.'
|
@@ -30,21 +22,12 @@ class Generator < Thor
|
|
30
22
|
# Reads the settings in from the config YAML file and changes the
|
31
23
|
# date updated. It does the same with the journal file, reading in the YAML
|
32
24
|
# and merging the hash of entries, and then saves the YAML back again.
|
33
|
-
def new(entry,
|
34
|
-
|
35
|
-
|
36
|
-
date = Date.parse(update)
|
37
|
-
settings[:updated] = date
|
38
|
-
else
|
39
|
-
date = today
|
40
|
-
settings[:updated] = today
|
25
|
+
def new(entry, date = Date.today)
|
26
|
+
YAML::Store.new("#{ENV['HOME']}/.nikki/nikki.yaml").transaction do |store|
|
27
|
+
store['entries'] << { date => entry.strip }
|
41
28
|
end
|
42
|
-
|
43
|
-
|
44
|
-
write_file(journal)
|
45
|
-
open unless updated_yesterday?
|
46
|
-
write_config(settings)
|
47
|
-
puts latest
|
29
|
+
|
30
|
+
ls
|
48
31
|
end
|
49
32
|
|
50
33
|
desc 'missed', 'Create new entry for yesterday'
|
@@ -52,14 +35,14 @@ class Generator < Thor
|
|
52
35
|
# @param entry [String]
|
53
36
|
# @since 0.5.3
|
54
37
|
def missed(entry)
|
55
|
-
new(entry, (Date.today - 1)
|
38
|
+
new(entry, (Date.today - 1))
|
56
39
|
end
|
57
40
|
# @!endgroup
|
58
41
|
|
59
42
|
desc 'open', "Open current year's journal file in editor."
|
60
43
|
# Open Nikki journal in configured text editor
|
61
44
|
def open
|
62
|
-
system(ENV['EDITOR'],
|
45
|
+
system(ENV['EDITOR'], NIKKI_FILE.to_s)
|
63
46
|
end
|
64
47
|
|
65
48
|
desc 'ls', 'Displays latest Nikki entries.'
|
@@ -67,137 +50,22 @@ class Generator < Thor
|
|
67
50
|
# @return [String]
|
68
51
|
# @option options :sticky [String]
|
69
52
|
def ls
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
option :today, :aliases => :t, :type => :boolean, :banner => "Set nikki's \"updated\" date to today."
|
77
|
-
option :print, :aliases => :p, :type => :boolean, :banner => "Prints nikki's config settings."
|
78
|
-
option :latest, :aliases => :l, :type => :boolean, :banner => "Prints latest journal entries."
|
79
|
-
# Configure Nikki's settings
|
80
|
-
# @param [Hash] options The options for configuring Nikki
|
81
|
-
# @option options :editor [String] (read_config[:editor]) Sets Nikki's editor to open journal file
|
82
|
-
# @option options :yesterday [Boolean] Set `settings[:updated]` to yesterday
|
83
|
-
# @option options :today [Boolean] Set `settings[:updated]` to today
|
84
|
-
# @option options :print [Boolean] Prints Nikki's configuration settings to STDOUT
|
85
|
-
# @option options :latest [Boolean] Prints Nikki's latest entries to STDOUT
|
86
|
-
def config
|
87
|
-
settings = read_config
|
88
|
-
settings[:editor] = options[:editor] || read_config[:editor]
|
89
|
-
settings[:updated] = options[:yesterday] ? Date.today - 1 : Date.today
|
90
|
-
write_config(settings)
|
91
|
-
puts settings.to_yaml if options[:print]
|
92
|
-
puts latest if options[:latest]
|
93
|
-
end
|
94
|
-
|
95
|
-
desc 'export YEAR', 'Export Nikki journal from YEAR as YAML'
|
96
|
-
# @param [String] year of journal entries you wish to export
|
97
|
-
def export(year)
|
98
|
-
export_path = "#{path}nikki_export_#{year}.yml"
|
99
|
-
IO.write(export_path, yamlize(read_file, year.to_i))
|
100
|
-
puts "YAML saved to \"#{export_path}\"."
|
101
|
-
end
|
102
|
-
|
103
|
-
no_commands do
|
104
|
-
def path
|
105
|
-
Pathname.new("#{ENV['HOME']}/.nikki/")
|
106
|
-
end
|
107
|
-
|
108
|
-
def create_path
|
109
|
-
path.mkdir unless path.exist?
|
110
|
-
end
|
111
|
-
|
112
|
-
def config_file
|
113
|
-
path.join('nikki.config.yaml')
|
114
|
-
end
|
115
|
-
|
116
|
-
def read_config
|
117
|
-
create_path
|
118
|
-
config_file_exist?
|
119
|
-
YAML.load(config_file.read)
|
120
|
-
end
|
121
|
-
|
122
|
-
def write_config(hash)
|
123
|
-
config_file.open('w') { |t| t << hash.to_yaml }
|
124
|
-
end
|
125
|
-
|
126
|
-
def read_file
|
127
|
-
create_path
|
128
|
-
file_exist?
|
129
|
-
YAML.load(file.read)
|
130
|
-
end
|
131
|
-
|
132
|
-
def write_file(hash)
|
133
|
-
file.write(hash.to_yaml)
|
134
|
-
end
|
135
|
-
|
136
|
-
def editor
|
137
|
-
read_config[:editor]
|
138
|
-
end
|
139
|
-
|
140
|
-
def file
|
141
|
-
path.join('nikki.yaml')
|
142
|
-
end
|
143
|
-
|
144
|
-
def config_file_exist?
|
145
|
-
return true if config_file.exist?
|
146
|
-
create_config_file
|
147
|
-
true
|
148
|
-
end
|
149
|
-
|
150
|
-
def file_exist?
|
151
|
-
return true if file.exist?
|
152
|
-
create_file
|
153
|
-
true
|
154
|
-
end
|
155
|
-
|
156
|
-
def create_config_file
|
157
|
-
settings = {}
|
158
|
-
settings[:updated] = today
|
159
|
-
settings[:editor] = 'TextEdit'
|
160
|
-
write_config(settings)
|
161
|
-
end
|
162
|
-
|
163
|
-
def create_file
|
164
|
-
FileUtils.touch(file)
|
165
|
-
end
|
166
|
-
|
167
|
-
def today
|
168
|
-
Date.today
|
169
|
-
end
|
170
|
-
|
171
|
-
def yesterday
|
172
|
-
Date.today - 1
|
173
|
-
end
|
174
|
-
|
175
|
-
def leap_year?
|
176
|
-
Date.today.leap?
|
177
|
-
end
|
178
|
-
|
179
|
-
def last_updated
|
180
|
-
read_config[:updated]
|
181
|
-
end
|
182
|
-
|
183
|
-
def updated_yesterday?
|
184
|
-
last_updated == Date.today - 1
|
185
|
-
end
|
186
|
-
|
187
|
-
def latest
|
188
|
-
list = []
|
189
|
-
(0..3).each do |n|
|
190
|
-
list << "#{today - n}: #{read_file[today - n]}"
|
191
|
-
end
|
192
|
-
list.reverse!
|
193
|
-
end
|
194
|
-
|
195
|
-
def yamlize(hash, year)
|
196
|
-
string = "---\n"
|
197
|
-
hash.each_pair do |date, sentence|
|
198
|
-
string += "#{date}: \"#{sentence}\"\n" if date.year == year
|
53
|
+
YAML::Store.new(NIKKI_FILE).transaction do |store|
|
54
|
+
entries = store['entries'].last(5)
|
55
|
+
entries.each do |entry|
|
56
|
+
entry.each do |date, text|
|
57
|
+
puts "#{date.to_s}: #{text}"
|
58
|
+
end
|
199
59
|
end
|
200
|
-
string
|
201
60
|
end
|
202
61
|
end
|
62
|
+
|
63
|
+
# desc 'export YEAR', 'Export Nikki journal from YEAR as YAML'
|
64
|
+
# @param [String] year of journal entries you wish to export
|
65
|
+
# def export(year)
|
66
|
+
# TODO Fix this export command
|
67
|
+
# export_path = "#{NIKKI_PATH}/nikki_export_#{year}.yml"
|
68
|
+
# IO.write(export_path, yamlize(read_file, year.to_i))
|
69
|
+
# puts "YAML saved to \"#{export_path}\"."
|
70
|
+
# end
|
203
71
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nikki
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Pittman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -76,8 +76,8 @@ extra_rdoc_files: []
|
|
76
76
|
files:
|
77
77
|
- ".gitignore"
|
78
78
|
- ".rspec"
|
79
|
+
- ".ruby-version"
|
79
80
|
- ".tags"
|
80
|
-
- ".travis.yml"
|
81
81
|
- Gemfile
|
82
82
|
- License.txt
|
83
83
|
- README.md
|
@@ -114,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
114
114
|
version: '0'
|
115
115
|
requirements: []
|
116
116
|
rubyforge_project:
|
117
|
-
rubygems_version: 2.5.
|
117
|
+
rubygems_version: 2.5.2
|
118
118
|
signing_key:
|
119
119
|
specification_version: 4
|
120
120
|
summary: A simple one-line-a-day journaling app.
|
data/.travis.yml
DELETED