nikki 0.2.0 → 0.4.0
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 +1 -3
- data/.rspec +2 -0
- data/README.md +1 -0
- data/Rakefile +3 -5
- data/bin/nikki +1 -1
- data/features/new_entry.feature +7 -21
- data/features/random.feature +8 -0
- data/features/step_definitions/new_entry.steps.rb +11 -38
- data/features/step_definitions/random_steps.rb +11 -0
- data/features/support/env.rb +6 -3
- data/lib/nikki/version.rb +3 -1
- data/lib/nikki.rb +160 -94
- data/nikki.gemspec +3 -1
- data/spec/nikki_spec.rb +17 -0
- data/spec/spec_helper.rb +12 -0
- data/tags +37 -0
- metadata +31 -12
- data/features/initialize_journal.feature +0 -10
- data/features/reveal_journal.feature +0 -9
- data/features/step_definitions/reveal_file.steps.rb +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3af1b34692ff19d9c2da510c3cd4296ec5283e4c
|
4
|
+
data.tar.gz: e1ca1aa574afb7d2d01d43fc157f32c1aa46e9c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 608f65b0730f0c3bed2e61c514de86b31dc1a4c9e1830ee5b4f7d735fd8fdd225640785680e5749b34c675ee52167c6c58c1c97ac8e876ac9551c8446aa45ffd
|
7
|
+
data.tar.gz: 0b85588e5f356e7943d8d18be449294822918e7e4a5f08571f27d1bef5256aed0689e87fe3146ab3a3e64716b57686b59f12efcb5cadea22194f858dddbdc51c
|
data/.gitignore
CHANGED
data/.rspec
ADDED
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -1,15 +1,13 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
2
|
require "rake/testtask"
|
3
|
+
require "rspec/core/rake_task"
|
3
4
|
require 'cucumber'
|
4
5
|
require 'cucumber/rake/task'
|
5
6
|
|
6
|
-
|
7
|
-
t.libs << 'test'
|
8
|
-
t.test_files = FileList['test/*.rb']
|
9
|
-
end
|
7
|
+
RSpec::Core::RakeTask.new(:spec)
|
10
8
|
|
11
9
|
Cucumber::Rake::Task.new(:features) do |t|
|
12
10
|
t.cucumber_opts = "features --format pretty"
|
13
11
|
end
|
14
12
|
|
15
|
-
task(default: :
|
13
|
+
task(default: :spec)
|
data/bin/nikki
CHANGED
data/features/new_entry.feature
CHANGED
@@ -1,27 +1,13 @@
|
|
1
|
-
@entry_creation
|
2
1
|
Feature: Add a new entry to the journal
|
2
|
+
As someone keepings a daily one-line journal
|
3
|
+
I want to be able to be able to save a new line with the day of the month next to it.
|
3
4
|
|
4
|
-
Because I'm keeping a daily one-line journal, I want to be able to be able to save a new line with the day of the month next to it.
|
5
|
-
|
6
|
-
Background:
|
7
|
-
Given I have a journal file
|
8
|
-
|
9
|
-
@file_creation
|
10
5
|
Scenario: I haven't created a journal file
|
11
|
-
|
6
|
+
Given the file "nikki_2014.yaml" should not exist
|
12
7
|
Then a file should be created
|
13
|
-
And
|
14
|
-
|
15
|
-
Scenario: I have a journal file and it's the first of the month
|
16
|
-
When it's the first of the month
|
17
|
-
Then the name of the month as an H2 header should be appended
|
18
|
-
And and my entry should be saved
|
19
|
-
|
20
|
-
Scenario: I have a journal file and it's *not* the first of the month
|
21
|
-
When it's not the first of the month
|
22
|
-
Then my entry should be appended along with the day of the month
|
8
|
+
And an empty file named "nikki_2014.yaml"
|
9
|
+
And a file named "nikki_2014.yaml" should exist
|
23
10
|
|
24
|
-
@missed_day
|
25
11
|
Scenario: I didn't update the journal yesterday
|
26
|
-
|
27
|
-
Then the
|
12
|
+
Given :last_updated isn't yesterday
|
13
|
+
Then the file "nikki_2014.yaml" should open in my editor
|
@@ -2,51 +2,24 @@ require "time"
|
|
2
2
|
require "pathname"
|
3
3
|
require "nikki"
|
4
4
|
|
5
|
-
|
5
|
+
class Journal
|
6
|
+
def last_updated
|
7
|
+
Date.today
|
8
|
+
end
|
6
9
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
FileUtils.touch(@file) unless @file.exist?
|
10
|
+
def yesterday
|
11
|
+
Date.today - 1
|
12
|
+
end
|
11
13
|
end
|
12
14
|
|
13
|
-
|
14
|
-
FileUtils.rm(@file) if File.exist?(@file)
|
15
|
-
end
|
15
|
+
journal = Journal.new
|
16
16
|
|
17
17
|
Then(/^a file should be created$/) do
|
18
|
-
FileUtils.touch(@file)
|
19
|
-
end
|
20
|
-
|
21
|
-
Then(/^(my journal entry) saved$/) do |arg|
|
22
|
-
File.open(@file,"a") { |f| f.puts @nikki.text(arg) }
|
23
|
-
end
|
24
|
-
|
25
|
-
When(/^it's the first of the month$/) do
|
26
|
-
@first = Date.new(2014,2,1)
|
27
|
-
end
|
28
|
-
|
29
|
-
Then(/^the name of the month as an H2 header should be appended$/) do
|
30
|
-
File.open(@file, "a") { |file| file.puts "\n## #{@first.strftime("%B").strip}\n\n" }
|
31
|
-
end
|
32
|
-
|
33
|
-
Then(/^and my (entry) should be saved$/) do |arg|
|
34
|
-
File.open(@file, "a") { |file| file.puts "#{@first.strftime("%e").strip}. #{arg}" }
|
35
|
-
end
|
36
|
-
|
37
|
-
When(/^it's not the first of the month$/) do
|
38
|
-
@not_first = Date.new(2014,2,2)
|
39
|
-
end
|
40
|
-
|
41
|
-
Then(/^my (entry) should be appended along with the day of the month$/) do |arg|
|
42
|
-
File.open(@file, "a") { |file| file.puts "#{@not_first.strftime("%e").strip}. #{arg}" }
|
43
18
|
end
|
44
19
|
|
45
|
-
|
46
|
-
|
47
|
-
@file.mtime.to_date != Date.today-1
|
20
|
+
Given(/^:last_updated isn't yesterday$/) do
|
21
|
+
journal.last_updated != journal.yesterday
|
48
22
|
end
|
49
23
|
|
50
|
-
Then(/^the
|
51
|
-
%x{open -a 'Sublime Text' #{@file}}
|
24
|
+
Then(/^the file "(.*?)" should open in my editor$/) do |arg|
|
52
25
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Given(/^a file named "(.*?)"$/) do |arg1|
|
2
|
+
pending
|
3
|
+
end
|
4
|
+
|
5
|
+
When(/^I run random$/) do
|
6
|
+
pending # express the regexp above with the code you wish you had
|
7
|
+
end
|
8
|
+
|
9
|
+
Then(/^STDOUT should match "(.*?)"$/) do |arg1|
|
10
|
+
pending # express the regexp above with the code you wish you had
|
11
|
+
end
|
data/features/support/env.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
$LOAD_PATH << File.expand_path('../../../lib', __FILE__)
|
2
|
+
|
3
|
+
require "aruba/cucumber"
|
4
|
+
require "fileutils"
|
5
|
+
require "cucumber/rspec/doubles"
|
3
6
|
|
4
7
|
# Before do
|
5
8
|
# @real_home = ENV['HOME']
|
@@ -10,4 +13,4 @@
|
|
10
13
|
|
11
14
|
# After do
|
12
15
|
# ENV['HOME'] = @real_home
|
13
|
-
# end
|
16
|
+
# end
|
data/lib/nikki/version.rb
CHANGED
data/lib/nikki.rb
CHANGED
@@ -2,125 +2,191 @@ require 'thor'
|
|
2
2
|
require "pathname"
|
3
3
|
require "yaml"
|
4
4
|
require "date"
|
5
|
+
require 'fileutils'
|
6
|
+
|
7
|
+
# @author Brandon Pittman
|
8
|
+
# This is the main class that interfaces with Thor's methods and does all the heavy lifting for Nikki.
|
9
|
+
class Generator < Thor
|
10
|
+
|
11
|
+
desc "setup", "Creates new Nikki and config files."
|
12
|
+
# Setup up Nikki for use
|
13
|
+
# @note 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
|
5
19
|
|
6
|
-
|
7
|
-
|
20
|
+
desc "new ENTRY", "Creates a new entry in the Nikki journal."
|
21
|
+
# Add entry to journal
|
22
|
+
# @param entry [String] entry to add to the journal
|
23
|
+
# Will open your configured text editor on OS X if you didn't update the journal the previous day.
|
24
|
+
# This will allow you to add missing entries in bulk.
|
25
|
+
# It reads the settings in from the config YAML file and changes the date updated.
|
26
|
+
# It does the same with the journal file, reading in the YAML and merging the hash of entries, and then saves the YAML back again.
|
27
|
+
# There's also a method to check off a corresponding task in OmniFocus at the end.
|
28
|
+
def new(*args)
|
29
|
+
settings = read_config
|
30
|
+
settings[:updated] = today
|
31
|
+
entry = args.join(" ")
|
32
|
+
entry_hash = { today => entry }
|
33
|
+
journal = read_file.merge(entry_hash)
|
34
|
+
write_file(journal)
|
35
|
+
open unless updated_yesterday?
|
36
|
+
write_config(settings)
|
37
|
+
add_to_omnifocus
|
38
|
+
puts latest
|
39
|
+
end
|
8
40
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
41
|
+
desc "open", "Open current year's journal file in editor."
|
42
|
+
option :marked, :aliases => :m, :type => :boolean
|
43
|
+
# Open Nikki journal in configured text editor
|
44
|
+
def open
|
45
|
+
if options[:marked]
|
46
|
+
%x{open -a Marked #{file}}
|
47
|
+
else
|
48
|
+
%x{open -a "#{editor}" #{file}}
|
17
49
|
end
|
50
|
+
end
|
18
51
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
52
|
+
desc "config", "Change Nikki's settings."
|
53
|
+
option :editor, :aliases => :e, :banner => "Set default editor to open journal file in."
|
54
|
+
option :yesterday, :aliases => :y, :type => :boolean, :banner => "Set nikki's \"updated\" date to yesterday."
|
55
|
+
option :today, :aliases => :t, :type => :boolean, :banner => "Set nikki's \"updated\" date to today."
|
56
|
+
option :print, :aliases => :p, :type => :boolean, :banner => "Prints nikki's config settings."
|
57
|
+
option :latest, :aliases => :l, :type => :boolean, :banner => "Prints latest journal entries."
|
58
|
+
# Configure Nikki's settings
|
59
|
+
# @option options [String] :editor (read_config[:editor]) Sets Nikki's editor to open journal file
|
60
|
+
# @option options [Boolean] :yesterday Set `settings[:updated]` to yesterday
|
61
|
+
# @option options [Boolean] :today Set `settings[:updated]` to today
|
62
|
+
# @option options [Boolean] :print Prints Nikki's configuration settings to STDOUT
|
63
|
+
# @option options [Boolean] :latest Prints Nikki's latest entries to STDOUT
|
64
|
+
def config
|
65
|
+
settings = read_config
|
66
|
+
settings[:editor] = options[:editor] || read_config[:editor]
|
67
|
+
settings[:updated] = Date.today-1 if options[:yesterday]
|
68
|
+
settings[:updated] = Date.today if options[:today]
|
69
|
+
write_config(settings)
|
70
|
+
puts settings.to_yaml if options[:print]
|
71
|
+
puts latest if options[:latest]
|
72
|
+
end
|
73
|
+
|
74
|
+
no_commands do
|
75
|
+
def path
|
76
|
+
Pathname.new("#{ENV['HOME']}/.nikki/")
|
27
77
|
end
|
28
78
|
|
29
|
-
|
30
|
-
|
31
|
-
option :yesterday, :aliases => :y, :type => :boolean
|
32
|
-
option :today, :aliases => :t, :type => :boolean
|
33
|
-
option :display, :aliases => :d, :type => :boolean
|
34
|
-
def config
|
35
|
-
settings = read_config
|
36
|
-
settings[:editor] = options[:editor] || read_config[:editor]
|
37
|
-
settings[:updated] = Date.today-1 if options[:yesterday]
|
38
|
-
settings[:updated] = Date.today if options[:today]
|
39
|
-
puts settings.to_yaml
|
40
|
-
write_config(settings)
|
79
|
+
def create_path
|
80
|
+
path.mkdir unless path.exist?
|
41
81
|
end
|
42
82
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
end
|
83
|
+
def config_file
|
84
|
+
path.join("nikki.config.yaml")
|
85
|
+
end
|
47
86
|
|
48
|
-
|
49
|
-
|
50
|
-
|
87
|
+
def read_config
|
88
|
+
create_path
|
89
|
+
config_file_exist?
|
90
|
+
YAML.load(config_file.read)
|
91
|
+
end
|
51
92
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
end
|
93
|
+
def write_config(hash)
|
94
|
+
config_file.open('w') { |t| t << hash.to_yaml }
|
95
|
+
end
|
56
96
|
|
57
|
-
|
58
|
-
|
59
|
-
|
97
|
+
def read_file
|
98
|
+
create_path
|
99
|
+
file_exist?
|
100
|
+
YAML.load(file.read)
|
101
|
+
end
|
60
102
|
|
61
|
-
|
62
|
-
|
63
|
-
|
103
|
+
def write_file(hash)
|
104
|
+
file.write(hash.to_yaml)
|
105
|
+
end
|
64
106
|
|
65
|
-
|
66
|
-
|
67
|
-
|
107
|
+
def editor
|
108
|
+
read_config[:editor]
|
109
|
+
end
|
68
110
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
return true
|
73
|
-
end
|
111
|
+
def file
|
112
|
+
path.join("nikki.yaml")
|
113
|
+
end
|
74
114
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
115
|
+
def config_file_exist?
|
116
|
+
return true if config_file.exist?
|
117
|
+
create_config_file
|
118
|
+
return true
|
119
|
+
end
|
80
120
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
write_config(settings)
|
87
|
-
end
|
121
|
+
def file_exist?
|
122
|
+
return true if file.exist?
|
123
|
+
create_file
|
124
|
+
return true
|
125
|
+
end
|
88
126
|
|
89
|
-
|
90
|
-
|
91
|
-
|
127
|
+
def create_config_file
|
128
|
+
settings = {}
|
129
|
+
settings[:updated] = today
|
130
|
+
settings[:editor] = 'TextEdit'
|
131
|
+
write_config(settings)
|
132
|
+
end
|
92
133
|
|
93
|
-
|
94
|
-
|
95
|
-
|
134
|
+
def create_file
|
135
|
+
FileUtils.touch(file)
|
136
|
+
end
|
96
137
|
|
97
|
-
|
98
|
-
|
99
|
-
|
138
|
+
def marked
|
139
|
+
Pathname.new("/Applications/Marked.app")
|
140
|
+
end
|
100
141
|
|
101
|
-
|
102
|
-
|
103
|
-
|
142
|
+
def today
|
143
|
+
Date.today
|
144
|
+
end
|
104
145
|
|
105
|
-
|
106
|
-
|
107
|
-
|
146
|
+
def months_with_names
|
147
|
+
{1=>{:name=>"January"},
|
148
|
+
2=>{:name=>"February"},
|
149
|
+
3=>{:name=>"March"},
|
150
|
+
4=>{:name=>"April"},
|
151
|
+
5=>{:name=>"May"},
|
152
|
+
6=>{:name=>"June"},
|
153
|
+
7=>{:name=>"July"},
|
154
|
+
8=>{:name=>"August"},
|
155
|
+
9=>{:name=>"September"},
|
156
|
+
10=>{:name=>"October"},
|
157
|
+
11=>{:name=>"November"},
|
158
|
+
12=>{:name=>"December"}}
|
159
|
+
end
|
108
160
|
|
109
|
-
|
110
|
-
|
111
|
-
|
161
|
+
def leap_year?
|
162
|
+
Date.today.leap?
|
163
|
+
end
|
112
164
|
|
113
|
-
|
114
|
-
|
115
|
-
|
165
|
+
def last_updated
|
166
|
+
read_config[:updated]
|
167
|
+
end
|
168
|
+
|
169
|
+
def updated_yesterday?
|
170
|
+
last_updated == Date.today-1
|
171
|
+
end
|
116
172
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
"#{date}. #{entry}"
|
122
|
-
end
|
173
|
+
def latest
|
174
|
+
list = []
|
175
|
+
(0..3).each do |n|
|
176
|
+
list << "#{today-n}: #{read_file[today-n]}"
|
123
177
|
end
|
178
|
+
list.reverse!
|
179
|
+
end
|
180
|
+
|
181
|
+
def add_to_omnifocus
|
182
|
+
%x{osascript <<-APPLESCRIPT
|
183
|
+
tell application "OmniFocus"
|
184
|
+
tell default document
|
185
|
+
set nikki_task to first remaining task of flattened context "House" whose name is "Record what I learned today"
|
186
|
+
set completed of nikki_task to true
|
187
|
+
end tell
|
188
|
+
end tell
|
189
|
+
APPLESCRIPT}
|
124
190
|
end
|
125
191
|
end
|
126
192
|
end
|
data/nikki.gemspec
CHANGED
@@ -18,10 +18,12 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.executables = ['nikki']
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
20
|
spec.require_paths = ["lib"]
|
21
|
-
|
21
|
+
|
22
|
+
spec.add_dependency "thor"
|
22
23
|
|
23
24
|
spec.add_development_dependency "bundler", "~> 1.5"
|
24
25
|
spec.add_development_dependency "rake"
|
25
26
|
spec.add_development_dependency "cucumber"
|
26
27
|
spec.add_development_dependency "aruba"
|
28
|
+
spec.add_development_dependency "rspec"
|
27
29
|
end
|
data/spec/nikki_spec.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Generator do
|
4
|
+
let(:gen) {Generator.new}
|
5
|
+
|
6
|
+
it "reads the exisiting journal file" do
|
7
|
+
expect(gen.file.class).to eq(Pathname)
|
8
|
+
end
|
9
|
+
|
10
|
+
it "reads the config file YAML as Hash" do
|
11
|
+
expect(gen.read_config.class).to eq(Hash)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "knows the date of the last updated" do
|
15
|
+
expect(gen.last_updated.class).to eq(Date)
|
16
|
+
end
|
17
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'nikki'
|
2
|
+
|
3
|
+
RSpec.configure do |config|
|
4
|
+
config.run_all_when_everything_filtered = true
|
5
|
+
config.filter_run :focus
|
6
|
+
|
7
|
+
# Run specs in random order to surface order dependencies. If you find an
|
8
|
+
# order dependency and want to debug it, you can fix the order by providing
|
9
|
+
# the seed, which is printed after each run.
|
10
|
+
# --seed 1234
|
11
|
+
config.order = 'random'
|
12
|
+
end
|
data/tags
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
|
2
|
+
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
|
3
|
+
!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
|
4
|
+
!_TAG_PROGRAM_NAME Exuberant Ctags //
|
5
|
+
!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
|
6
|
+
!_TAG_PROGRAM_VERSION 5.8 //
|
7
|
+
Generator lib/nikki.rb /^class Generator < Thor$/;" c
|
8
|
+
Nikki lib/nikki/version.rb /^module Nikki$/;" m
|
9
|
+
NikkiTest test/tc_nikki.rb /^class NikkiTest < MiniTest::Unit::TestCase$/;" c
|
10
|
+
config lib/nikki.rb /^ def config$/;" f class:Generator
|
11
|
+
config_file lib/nikki.rb /^ def config_file$/;" f class:Generator
|
12
|
+
config_file_exist? lib/nikki.rb /^ def config_file_exist?$/;" f class:Generator
|
13
|
+
create_config_file lib/nikki.rb /^ def create_config_file$/;" f class:Generator
|
14
|
+
create_file lib/nikki.rb /^ def create_file$/;" f class:Generator
|
15
|
+
create_path lib/nikki.rb /^ def create_path$/;" f class:Generator
|
16
|
+
editor lib/nikki.rb /^ def editor$/;" f class:Generator
|
17
|
+
file features/step_definitions/reveal_file.steps.rb /^def file$/;" f
|
18
|
+
file lib/nikki.rb /^ def file$/;" f class:Generator
|
19
|
+
file_exist? lib/nikki.rb /^ def file_exist?$/;" f class:Generator
|
20
|
+
last_updated lib/nikki.rb /^ def last_updated$/;" f class:Generator
|
21
|
+
latest lib/nikki.rb /^ def latest$/;" f class:Generator
|
22
|
+
leap_year? lib/nikki.rb /^ def leap_year?$/;" f class:Generator
|
23
|
+
marked lib/nikki.rb /^ def marked$/;" f class:Generator
|
24
|
+
months_with_names lib/nikki.rb /^ def months_with_names$/;" f class:Generator
|
25
|
+
new lib/nikki.rb /^ def new(*args)$/;" f class:Generator
|
26
|
+
open lib/nikki.rb /^ def open$/;" f class:Generator
|
27
|
+
path lib/nikki.rb /^ def path$/;" f class:Generator
|
28
|
+
read_config lib/nikki.rb /^ def read_config$/;" f class:Generator
|
29
|
+
read_file lib/nikki.rb /^ def read_file$/;" f class:Generator
|
30
|
+
setup lib/nikki.rb /^ def setup$/;" f class:Generator
|
31
|
+
test_file_exist? test/tc_nikki.rb /^ def test_file_exist?$/;" f class:NikkiTest
|
32
|
+
test_read_config test/tc_nikki.rb /^ def test_read_config$/;" f class:NikkiTest
|
33
|
+
test_updated_yesterday? test/tc_nikki.rb /^ def test_updated_yesterday?$/;" f class:NikkiTest
|
34
|
+
today lib/nikki.rb /^ def today$/;" f class:Generator
|
35
|
+
updated_yesterday? lib/nikki.rb /^ def updated_yesterday?$/;" f class:Generator
|
36
|
+
write_config lib/nikki.rb /^ def write_config(hash)$/;" f class:Generator
|
37
|
+
write_file lib/nikki.rb /^ def write_file(hash)$/;" f class:Generator
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nikki
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.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: 2014-
|
11
|
+
date: 2014-05-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0
|
19
|
+
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
description: A simple one-line-a-day journaling app.
|
84
98
|
email:
|
85
99
|
- brandonpittman@gmail.com
|
@@ -89,21 +103,24 @@ extensions: []
|
|
89
103
|
extra_rdoc_files: []
|
90
104
|
files:
|
91
105
|
- ".gitignore"
|
106
|
+
- ".rspec"
|
92
107
|
- Gemfile
|
93
108
|
- License.txt
|
94
109
|
- README.md
|
95
110
|
- Rakefile
|
96
111
|
- TODO.md
|
97
112
|
- bin/nikki
|
98
|
-
- features/initialize_journal.feature
|
99
113
|
- features/new_entry.feature
|
100
|
-
- features/
|
114
|
+
- features/random.feature
|
101
115
|
- features/step_definitions/new_entry.steps.rb
|
102
|
-
- features/step_definitions/
|
116
|
+
- features/step_definitions/random_steps.rb
|
103
117
|
- features/support/env.rb
|
104
118
|
- lib/nikki.rb
|
105
119
|
- lib/nikki/version.rb
|
106
120
|
- nikki.gemspec
|
121
|
+
- spec/nikki_spec.rb
|
122
|
+
- spec/spec_helper.rb
|
123
|
+
- tags
|
107
124
|
- test/tc_nikki.rb
|
108
125
|
homepage: http://github.com/brandonpittman/nikki
|
109
126
|
licenses:
|
@@ -130,10 +147,12 @@ signing_key:
|
|
130
147
|
specification_version: 4
|
131
148
|
summary: A simple one-line-a-day journaling app.
|
132
149
|
test_files:
|
133
|
-
- features/initialize_journal.feature
|
134
150
|
- features/new_entry.feature
|
135
|
-
- features/
|
151
|
+
- features/random.feature
|
136
152
|
- features/step_definitions/new_entry.steps.rb
|
137
|
-
- features/step_definitions/
|
153
|
+
- features/step_definitions/random_steps.rb
|
138
154
|
- features/support/env.rb
|
155
|
+
- spec/nikki_spec.rb
|
156
|
+
- spec/spec_helper.rb
|
139
157
|
- test/tc_nikki.rb
|
158
|
+
has_rdoc:
|
@@ -1,10 +0,0 @@
|
|
1
|
-
@file_creation
|
2
|
-
Feature: Initialize a new config file
|
3
|
-
I want more information about exactly when last a journal was updated
|
4
|
-
And I want to have a place to save a custom journal location
|
5
|
-
|
6
|
-
Background: No config file exists
|
7
|
-
|
8
|
-
Scenario: New user wants to create a new journal using defaults
|
9
|
-
|
10
|
-
Scenario: New user wants to create a new journal with a custom save location
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require "pathname"
|
2
|
-
require "fileutils"
|
3
|
-
|
4
|
-
def file
|
5
|
-
path = Pathname.new("/tmp/journal.md")
|
6
|
-
end
|
7
|
-
|
8
|
-
Given(/^the file doesn't exist$/) do
|
9
|
-
FileUtils.rm_rf(file) if file.exist?
|
10
|
-
end
|
11
|
-
|
12
|
-
Then(/^create the file$/) do
|
13
|
-
FileUtils.touch(file)
|
14
|
-
end
|
15
|
-
|
16
|
-
Then(/^reveal the file$/) do
|
17
|
-
%x{open -a 'Sublime Text' #{file}}
|
18
|
-
end
|
19
|
-
|
20
|
-
Given(/^the file does exist$/) do
|
21
|
-
FileUtils.touch(file) unless file.exist?
|
22
|
-
end
|