tempo-cli 1.0.0 → 1.0.1
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 +5 -5
- data/Gemfile.lock +64 -39
- data/README.md +7 -6
- data/Rakefile +3 -3
- data/features/step_definitions/tempo_steps.rb +7 -7
- data/features/support/env.rb +1 -1
- data/lib/file_record/file_utility.rb +8 -8
- data/lib/file_record/record.rb +1 -1
- data/lib/tempo/controllers/projects_controller.rb +1 -1
- data/lib/tempo/controllers/records_controller.rb +2 -2
- data/lib/tempo/version.rb +1 -1
- data/tempo-cli.gemspec +6 -8
- data/test/lib/file_record/directory_test.rb +9 -9
- data/test/lib/file_record/record_test.rb +5 -5
- data/test/lib/tempo/models/base_test.rb +3 -3
- data/test/lib/tempo/models/composite_test.rb +2 -2
- data/test/lib/tempo/models/log_test.rb +3 -3
- data/test/lib/tempo/models/project_test.rb +1 -1
- data/test/lib/tempo/models/time_record_test.rb +2 -2
- data/test/support/factories.rb +3 -3
- metadata +22 -31
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 4630648caa1ae6432140a0e621d276836a3a26a248ae7ab80cd8eb2a147af837
|
|
4
|
+
data.tar.gz: cb6ecc56d1cf069b75ff8a3bd54e3de81703dc20ea59b1cf85d36789bedb5254
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1c846d66d6f427e7b8610c298dbb89ae9542adcb1e61eaaaefb7f1bf0479a6be21533e14d0db1c47536339f14ee96e3f98a040418255ab6366235940d64fd883
|
|
7
|
+
data.tar.gz: 1ab3da83905ef323f6edb24d6c581e5d988d50b313d991c568a7c150ad967172f6d0625465d05c87452251dcd9703d49e38e575f27fb92d901060a2c2008f63b
|
data/Gemfile.lock
CHANGED
|
@@ -1,56 +1,81 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
tempo-cli (1.0.
|
|
5
|
-
chronic (~> 0.10)
|
|
6
|
-
gli (
|
|
4
|
+
tempo-cli (1.0.1)
|
|
5
|
+
chronic (~> 0.10.2)
|
|
6
|
+
gli (>= 2.21.1)
|
|
7
7
|
|
|
8
8
|
GEM
|
|
9
9
|
remote: https://rubygems.org/
|
|
10
10
|
specs:
|
|
11
|
-
ansi (1.
|
|
12
|
-
aruba (
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
ansi (1.5.0)
|
|
12
|
+
aruba (2.2.0)
|
|
13
|
+
bundler (>= 1.17, < 3.0)
|
|
14
|
+
contracts (>= 0.16.0, < 0.18.0)
|
|
15
|
+
cucumber (>= 8.0, < 10.0)
|
|
16
|
+
rspec-expectations (~> 3.4)
|
|
17
|
+
thor (~> 1.0)
|
|
18
|
+
bigdecimal (3.1.7)
|
|
19
|
+
builder (3.2.4)
|
|
19
20
|
chronic (0.10.2)
|
|
20
|
-
coderay (1.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
21
|
+
coderay (1.1.3)
|
|
22
|
+
contracts (0.17)
|
|
23
|
+
cucumber (9.2.0)
|
|
24
|
+
builder (~> 3.2)
|
|
25
|
+
cucumber-ci-environment (> 9, < 11)
|
|
26
|
+
cucumber-core (> 13, < 14)
|
|
27
|
+
cucumber-cucumber-expressions (~> 17.0)
|
|
28
|
+
cucumber-gherkin (> 24, < 28)
|
|
29
|
+
cucumber-html-formatter (> 20.3, < 22)
|
|
30
|
+
cucumber-messages (> 19, < 25)
|
|
31
|
+
diff-lcs (~> 1.5)
|
|
32
|
+
mini_mime (~> 1.1)
|
|
33
|
+
multi_test (~> 1.1)
|
|
34
|
+
sys-uname (~> 1.2)
|
|
35
|
+
cucumber-ci-environment (10.0.1)
|
|
36
|
+
cucumber-core (13.0.2)
|
|
37
|
+
cucumber-gherkin (>= 27, < 28)
|
|
38
|
+
cucumber-messages (>= 20, < 23)
|
|
39
|
+
cucumber-tag-expressions (> 5, < 7)
|
|
40
|
+
cucumber-cucumber-expressions (17.1.0)
|
|
41
|
+
bigdecimal
|
|
42
|
+
cucumber-gherkin (27.0.0)
|
|
43
|
+
cucumber-messages (>= 19.1.4, < 23)
|
|
44
|
+
cucumber-html-formatter (21.3.1)
|
|
45
|
+
cucumber-messages (> 19, < 25)
|
|
46
|
+
cucumber-messages (22.0.0)
|
|
47
|
+
cucumber-tag-expressions (6.1.0)
|
|
48
|
+
diff-lcs (1.5.1)
|
|
49
|
+
ffi (1.16.3)
|
|
50
|
+
gli (2.21.1)
|
|
51
|
+
method_source (1.0.0)
|
|
52
|
+
mini_mime (1.1.5)
|
|
53
|
+
minitest (4.7.5)
|
|
54
|
+
multi_test (1.1.0)
|
|
55
|
+
pry (0.14.2)
|
|
56
|
+
coderay (~> 1.1)
|
|
57
|
+
method_source (~> 1.0)
|
|
38
58
|
rake (10.3.2)
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
59
|
+
rspec-expectations (3.13.0)
|
|
60
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
61
|
+
rspec-support (~> 3.13.0)
|
|
62
|
+
rspec-support (3.13.1)
|
|
63
|
+
sys-uname (1.2.3)
|
|
64
|
+
ffi (~> 1.1)
|
|
65
|
+
thor (1.3.1)
|
|
66
|
+
turn (0.9.7)
|
|
45
67
|
ansi
|
|
68
|
+
minitest (~> 4)
|
|
46
69
|
|
|
47
70
|
PLATFORMS
|
|
48
71
|
ruby
|
|
49
72
|
|
|
50
73
|
DEPENDENCIES
|
|
51
|
-
aruba (~>
|
|
52
|
-
pry (~> 0.
|
|
74
|
+
aruba (~> 2.2)
|
|
75
|
+
pry (~> 0.14.2)
|
|
53
76
|
rake (~> 10.3)
|
|
54
|
-
rdoc (~> 4.1)
|
|
55
77
|
tempo-cli!
|
|
56
|
-
turn (~> 0.9)
|
|
78
|
+
turn (~> 0.9.7)
|
|
79
|
+
|
|
80
|
+
BUNDLED WITH
|
|
81
|
+
2.4.20
|
data/README.md
CHANGED
|
@@ -2,16 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
A command line interface for time tracking by project.
|
|
4
4
|
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
gem install tempo-cli
|
|
8
|
-
|
|
9
|
-
## Version 1.0
|
|
5
|
+
## A note on Version 1.0
|
|
10
6
|
|
|
11
7
|
If you are updatging from version ~> 0.2.6 to 1.0, there is a new structure to the time records - time records are now kept in sub-folders by year.
|
|
12
8
|
|
|
13
9
|
Run `tempo clean` to make a backup of your old directory, move files into the proper folders, and check all earlier records for errors.
|
|
14
10
|
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
gem install tempo-cli
|
|
15
|
+
|
|
15
16
|
### binary
|
|
16
17
|
|
|
17
18
|
Tempo cli runs with the binary `tempo`, but you can alias a shorter binary for your convenience, for example "t":
|
|
@@ -344,7 +345,7 @@ You can cleanup the testing directories with `bundle exec rake clean`
|
|
|
344
345
|
|
|
345
346
|
This is a very opinionated time tracking app, you may find others that suit your working method better:
|
|
346
347
|
|
|
347
|
-
If you would prefer to keep your data in a database, or run
|
|
348
|
+
If you would prefer to keep your data in a database, or run independent time sheets by project, here is a utility that uses SQLite:
|
|
348
349
|
|
|
349
350
|
[timetrap](https://github.com/samg/timetrap)
|
|
350
351
|
|
data/Rakefile
CHANGED
|
@@ -39,15 +39,15 @@ task :cucumber => :features
|
|
|
39
39
|
task :tests_setup do
|
|
40
40
|
@ORIGINAL_HOME = ENV['HOME']
|
|
41
41
|
ENV['HOME'] = ENV['HOME'] + "/testing"
|
|
42
|
-
Dir.mkdir(ENV['HOME'], 0700) unless File.
|
|
42
|
+
Dir.mkdir(ENV['HOME'], 0700) unless File.exist?(ENV['HOME'])
|
|
43
43
|
dir = File.join(Dir.home,"tempo")
|
|
44
|
-
Dir.mkdir(dir, 0700) unless File.
|
|
44
|
+
Dir.mkdir(dir, 0700) unless File.exist?(dir)
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
task :tests_teardown do
|
|
48
48
|
ENV['HOME'] = @ORIGINAL_HOME
|
|
49
49
|
dir = File.join(Dir.home, "testing")
|
|
50
|
-
FileUtils.rm_r dir if File.
|
|
50
|
+
FileUtils.rm_r dir if File.exist?(dir)
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
require 'rake/testtask'
|
|
@@ -5,16 +5,16 @@ end
|
|
|
5
5
|
|
|
6
6
|
Given /^a clean installation$/ do
|
|
7
7
|
@testing_env = File.join(ENV['HOME'], 'tempo')
|
|
8
|
-
FileUtils.rm_r(@testing_env) if File.
|
|
8
|
+
FileUtils.rm_r(@testing_env) if File.exist?(@testing_env)
|
|
9
9
|
|
|
10
10
|
# Testing global --directory argument in /alt_dir
|
|
11
11
|
@alt_dir = File.join(ENV['HOME'], 'alt_dir')
|
|
12
|
-
FileUtils.rm_r(@alt_dir) if File.
|
|
12
|
+
FileUtils.rm_r(@alt_dir) if File.exist?(@alt_dir)
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
Given /^an existing project file$/ do
|
|
16
16
|
@testing_env = File.join(ENV['HOME'], 'tempo')
|
|
17
|
-
FileUtils.rm_r(@testing_env) if File.
|
|
17
|
+
FileUtils.rm_r(@testing_env) if File.exist?(@testing_env)
|
|
18
18
|
Dir.mkdir(@testing_env, 0700)
|
|
19
19
|
projects_file = File.join(@testing_env, 'tempo_projects.yaml')
|
|
20
20
|
|
|
@@ -34,7 +34,7 @@ end
|
|
|
34
34
|
|
|
35
35
|
Given /^an alternate directory and an existing project file$/ do
|
|
36
36
|
@testing_env = File.join(ENV['HOME'], 'alt_dir', 'tempo')
|
|
37
|
-
FileUtils.rm_r(@testing_env) if File.
|
|
37
|
+
FileUtils.rm_r(@testing_env) if File.exist?(@testing_env)
|
|
38
38
|
FileUtils.mkdir_p(@testing_env)
|
|
39
39
|
projects_file = File.join(@testing_env, 'tempo_projects.yaml')
|
|
40
40
|
|
|
@@ -54,7 +54,7 @@ end
|
|
|
54
54
|
|
|
55
55
|
Given /^an existing time record file$/ do
|
|
56
56
|
@records_directory = File.join(ENV['HOME'], 'tempo/tempo_time_records', '2014')
|
|
57
|
-
FileUtils.rm_r(@records_directory) if File.
|
|
57
|
+
FileUtils.rm_r(@records_directory) if File.exist?(@records_directory)
|
|
58
58
|
FileUtils.mkdir_p @records_directory
|
|
59
59
|
projects_file = File.join(@records_directory, '20140101.yaml')
|
|
60
60
|
|
|
@@ -130,7 +130,7 @@ end
|
|
|
130
130
|
|
|
131
131
|
Then /^the time record (.*?) should not exist$/ do |arg1|
|
|
132
132
|
file = File.join(ENV['HOME'], 'tempo/tempo_time_records', "#{arg1[0..3]}", "#{arg1}.yaml")
|
|
133
|
-
File.
|
|
133
|
+
File.exist?(file).should == false
|
|
134
134
|
end
|
|
135
135
|
|
|
136
136
|
Then /^the (\S*) file should contain "(.*?)" at line (\d+)$/ do |arg1, arg2, arg3|
|
|
@@ -212,6 +212,6 @@ end
|
|
|
212
212
|
|
|
213
213
|
Then /^the alternate directory time record (.*?) should not exist$/ do |arg1|
|
|
214
214
|
file = File.join(ENV['HOME'], 'alt_dir', 'tempo/tempo_time_records', "#{arg1[0..3]}", "#{arg1}.yaml")
|
|
215
|
-
File.
|
|
215
|
+
File.exist?(file).should == false
|
|
216
216
|
end
|
|
217
217
|
|
data/features/support/env.rb
CHANGED
|
@@ -16,7 +16,7 @@ Before do
|
|
|
16
16
|
@real_home = ENV['HOME']
|
|
17
17
|
@testing_env = File.join(ENV['HOME'], 'testing_features')
|
|
18
18
|
#FileUtils.rm_rf @testing_env, :secure => true
|
|
19
|
-
Dir.mkdir(@testing_env, 0700) unless File.
|
|
19
|
+
Dir.mkdir(@testing_env, 0700) unless File.exist?(@testing_env)
|
|
20
20
|
ENV['HOME'] = @testing_env
|
|
21
21
|
end
|
|
22
22
|
|
|
@@ -93,7 +93,7 @@ module FileRecord
|
|
|
93
93
|
def log_directory_path
|
|
94
94
|
dir = File.join(log_main_directory_path, log_year_directory)
|
|
95
95
|
|
|
96
|
-
if @create and !File.
|
|
96
|
+
if @create and !File.exist?(dir)
|
|
97
97
|
FileUtils.mkdir_p dir
|
|
98
98
|
end
|
|
99
99
|
|
|
@@ -111,7 +111,7 @@ module FileRecord
|
|
|
111
111
|
|
|
112
112
|
dir = File.join(@directory, module_name)
|
|
113
113
|
|
|
114
|
-
if @create and !File.
|
|
114
|
+
if @create and !File.exist?(dir)
|
|
115
115
|
Dir.mkdir(dir, 0700)
|
|
116
116
|
end
|
|
117
117
|
|
|
@@ -119,7 +119,7 @@ module FileRecord
|
|
|
119
119
|
end
|
|
120
120
|
|
|
121
121
|
def old_style_log_records_exists?
|
|
122
|
-
return false if !File.
|
|
122
|
+
return false if !File.exist?(log_main_directory_path)
|
|
123
123
|
Pathname.new(log_main_directory_path).children.each do |c|
|
|
124
124
|
return true if c.to_s.match(/\.yaml/)
|
|
125
125
|
end
|
|
@@ -127,13 +127,13 @@ module FileRecord
|
|
|
127
127
|
end
|
|
128
128
|
|
|
129
129
|
def move_old_records
|
|
130
|
-
return false if !File.
|
|
130
|
+
return false if !File.exist?(log_main_directory_path)
|
|
131
131
|
puts "moving files in #{log_main_directory_path}"
|
|
132
132
|
Pathname.new(log_main_directory_path).children.each do |c|
|
|
133
133
|
if c.to_s.match(/\.yaml/)
|
|
134
134
|
year = File.basename(c).match(/(^\d{4})/)[1]
|
|
135
|
-
raise Tempo::DuplicateRecordError.new(File.join(log_main_directory_path,year,File.basename(c))) if File.
|
|
136
|
-
FileUtils.mkdir_p File.join(log_main_directory_path,year) if !File.
|
|
135
|
+
raise Tempo::DuplicateRecordError.new(File.join(log_main_directory_path,year,File.basename(c))) if File.exist?(File.join(log_main_directory_path,year,File.basename(c)))
|
|
136
|
+
FileUtils.mkdir_p File.join(log_main_directory_path,year) if !File.exist? File.join(log_main_directory_path,year)
|
|
137
137
|
FileUtils.cp c, File.join(log_main_directory_path,year,File.basename(c))
|
|
138
138
|
FileUtils.rm c
|
|
139
139
|
end
|
|
@@ -143,7 +143,7 @@ module FileRecord
|
|
|
143
143
|
# Returns the list of log records from a log directory
|
|
144
144
|
def log_records
|
|
145
145
|
records = []
|
|
146
|
-
return records if !File.
|
|
146
|
+
return records if !File.exist?(log_main_directory_path)
|
|
147
147
|
years = Pathname.new(log_main_directory_path).children.select { |c| c.directory? }
|
|
148
148
|
years.each do |dir|
|
|
149
149
|
records = records | Dir[dir.to_s + "/*.yaml"]
|
|
@@ -154,7 +154,7 @@ module FileRecord
|
|
|
154
154
|
# remove existing file when passed destroy:true in options
|
|
155
155
|
def clean_path(file_path)
|
|
156
156
|
|
|
157
|
-
if @destroy and File.
|
|
157
|
+
if @destroy and File.exist?(file_path)
|
|
158
158
|
File.delete(file_path)
|
|
159
159
|
end
|
|
160
160
|
|
data/lib/file_record/record.rb
CHANGED
|
@@ -9,7 +9,7 @@ module Tempo
|
|
|
9
9
|
|
|
10
10
|
dir = options.fetch( :directory, ENV['HOME'])
|
|
11
11
|
|
|
12
|
-
if File.
|
|
12
|
+
if File.exist?(File.join(dir, 'tempo'))
|
|
13
13
|
Tempo::Controllers::Projects.load directory: dir
|
|
14
14
|
else
|
|
15
15
|
FileRecord::Directory.create_new directory: dir
|
|
@@ -20,7 +20,7 @@ module Tempo
|
|
|
20
20
|
dir = options.fetch( :directory, ENV['HOME'])
|
|
21
21
|
Views::interactive_progress "\nBacking up #{dir}/tempo"
|
|
22
22
|
|
|
23
|
-
if File.
|
|
23
|
+
if File.exist?(File.join(dir, 'tempo'))
|
|
24
24
|
dest = FileRecord::Directory.backup directory: dir
|
|
25
25
|
Views::interactive_progress "Sucessfully created #{dest}"
|
|
26
26
|
else
|
data/lib/tempo/version.rb
CHANGED
data/tempo-cli.gemspec
CHANGED
|
@@ -12,14 +12,12 @@ spec = Gem::Specification.new do |s|
|
|
|
12
12
|
s.description = 'tempo-cli is a command line time tracking application. Record time spent on projects in YAML files, and manage them from the command line.'
|
|
13
13
|
s.files = `git ls-files`.split("\n")
|
|
14
14
|
s.require_paths << 'lib'
|
|
15
|
-
s.has_rdoc = true
|
|
16
15
|
s.bindir = 'bin'
|
|
17
16
|
s.executables << 'tempo'
|
|
18
|
-
s.add_development_dependency
|
|
19
|
-
s.add_development_dependency
|
|
20
|
-
s.add_development_dependency
|
|
21
|
-
s.add_development_dependency
|
|
22
|
-
s.
|
|
23
|
-
s.add_runtime_dependency
|
|
24
|
-
s.add_runtime_dependency "chronic", "~> 0.10"
|
|
17
|
+
s.add_development_dependency 'rake', '~> 10.3'
|
|
18
|
+
s.add_development_dependency 'aruba', '~> 2.2'
|
|
19
|
+
s.add_development_dependency 'turn', '~> 0.9.7'
|
|
20
|
+
s.add_development_dependency 'pry','~> 0.14.2'
|
|
21
|
+
s.add_runtime_dependency 'gli', '~> 2.21', '>= 2.21.1'
|
|
22
|
+
s.add_runtime_dependency 'chronic', '~> 0.10.2'
|
|
25
23
|
end
|
|
@@ -5,12 +5,12 @@ describe FileRecord do
|
|
|
5
5
|
def setup
|
|
6
6
|
@dir = File.join(Dir.home,"tempo")
|
|
7
7
|
@alt_dir = File.join(Dir.home, "testdir", "tempo")
|
|
8
|
-
FileUtils.rm_r @dir if File.
|
|
8
|
+
FileUtils.rm_r @dir if File.exist?(@dir)
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def teardown
|
|
12
|
-
FileUtils.rm_r @dir if File.
|
|
13
|
-
FileUtils.rm_r @alt_dir if File.
|
|
12
|
+
FileUtils.rm_r @dir if File.exist?(@dir)
|
|
13
|
+
FileUtils.rm_r @alt_dir if File.exist?(@alt_dir)
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
describe "Directory" do
|
|
@@ -22,9 +22,9 @@ describe FileRecord do
|
|
|
22
22
|
readme = File.join(@dir, "README.txt")
|
|
23
23
|
|
|
24
24
|
FileRecord::Directory.create_new
|
|
25
|
-
File.
|
|
26
|
-
File.
|
|
27
|
-
File.
|
|
25
|
+
File.exist?( @dir ).must_equal true
|
|
26
|
+
File.exist?( project_file ).must_equal true
|
|
27
|
+
File.exist?( readme ).must_equal true
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
it "takes an optional directory parameter" do
|
|
@@ -33,9 +33,9 @@ describe FileRecord do
|
|
|
33
33
|
dir = File.join(Dir.home, "testdir")
|
|
34
34
|
|
|
35
35
|
FileRecord::Directory.create_new directory: dir
|
|
36
|
-
File.
|
|
37
|
-
File.
|
|
38
|
-
File.
|
|
36
|
+
File.exist?( @alt_dir ).must_equal true
|
|
37
|
+
File.exist?( project_file ).must_equal true
|
|
38
|
+
File.exist?( readme ).must_equal true
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
it "creates a zipped backup directory" do
|
|
@@ -5,9 +5,9 @@ describe FileRecord do
|
|
|
5
5
|
before do
|
|
6
6
|
# See Rakefile for directory prep and cleanup
|
|
7
7
|
dir = File.join(Dir.home,"tempo")
|
|
8
|
-
Dir.mkdir(dir, 0700) unless File.
|
|
8
|
+
Dir.mkdir(dir, 0700) unless File.exist?(dir)
|
|
9
9
|
@dir = File.join(Dir.home,"tempo", "tempo_unit_tests")
|
|
10
|
-
Dir.mkdir(@dir, 0700) unless File.
|
|
10
|
+
Dir.mkdir(@dir, 0700) unless File.exist?(@dir)
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
describe "Record" do
|
|
@@ -16,7 +16,7 @@ describe FileRecord do
|
|
|
16
16
|
|
|
17
17
|
it "should create a record of all instances" do
|
|
18
18
|
test_file = File.join(ENV['HOME'],'tempo','tempo_animals.yaml')
|
|
19
|
-
File.delete( test_file ) if File.
|
|
19
|
+
File.delete( test_file ) if File.exist?( test_file )
|
|
20
20
|
pantherinae_factory
|
|
21
21
|
FileRecord::Record.save_model( Tempo::Model::Animal )
|
|
22
22
|
contents = eval_file_as_array( test_file )
|
|
@@ -32,9 +32,9 @@ describe FileRecord do
|
|
|
32
32
|
|
|
33
33
|
it "should create daily records containing each instance" do
|
|
34
34
|
test_file_1 = File.join(ENV['HOME'],'tempo','tempo_message_logs', '2014', '20140101.yaml')
|
|
35
|
-
File.delete( test_file_1 ) if File.
|
|
35
|
+
File.delete( test_file_1 ) if File.exist?( test_file_1 )
|
|
36
36
|
test_file_2 = File.join(ENV['HOME'],'tempo','tempo_message_logs', '2014', '20140102.yaml')
|
|
37
|
-
File.delete( test_file_2 ) if File.
|
|
37
|
+
File.delete( test_file_2 ) if File.exist?( test_file_2 )
|
|
38
38
|
|
|
39
39
|
log_factory
|
|
40
40
|
FileRecord::Record.save_log(Tempo::Model::MessageLog)
|
|
@@ -19,7 +19,7 @@ describe Tempo do
|
|
|
19
19
|
before do
|
|
20
20
|
# See Rakefile for directory prep and cleanup
|
|
21
21
|
@dir = File.join( Dir.home,"tempo" )
|
|
22
|
-
Dir.mkdir(@dir, 0700) unless File.
|
|
22
|
+
Dir.mkdir(@dir, 0700) unless File.exist?(@dir)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def after_teardown
|
|
@@ -57,7 +57,7 @@ describe Tempo do
|
|
|
57
57
|
it "grants children the ability to write to a file" do
|
|
58
58
|
frog_factory
|
|
59
59
|
test_file = File.join(ENV['HOME'],'tempo','tempo_animals.yaml')
|
|
60
|
-
File.delete(test_file) if File.
|
|
60
|
+
File.delete(test_file) if File.exist?( test_file )
|
|
61
61
|
contents = Tempo::Model::Animal.save_to_file
|
|
62
62
|
contents = eval_file_as_array( test_file )
|
|
63
63
|
contents.must_equal ["---", ":id: 1", ":genious: hyla", ":species: h. versicolor",
|
|
@@ -69,7 +69,7 @@ describe Tempo do
|
|
|
69
69
|
|
|
70
70
|
it "grants children ability to read from a file" do
|
|
71
71
|
test_file = File.join(ENV['HOME'],'tempo','tempo_animals.yaml')
|
|
72
|
-
File.delete(test_file) if File.
|
|
72
|
+
File.delete(test_file) if File.exist?( test_file )
|
|
73
73
|
file_lines = [ "---", ":id: 11", ":genious: hyla", ":species: h. versicolor",
|
|
74
74
|
"---", ":id: 12", ":genious: hyla", ":species: h. chrysoscelis",
|
|
75
75
|
"---", ":id: 14", ":genious: hyla", ":species: h. andersonii",
|
|
@@ -5,7 +5,7 @@ describe Tempo do
|
|
|
5
5
|
before do
|
|
6
6
|
# See Rakefile for directory prep and cleanup
|
|
7
7
|
@dir = File.join( Dir.home,"tempo" )
|
|
8
|
-
Dir.mkdir(@dir, 0700) unless File.
|
|
8
|
+
Dir.mkdir(@dir, 0700) unless File.exist?(@dir)
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
describe "Model::Composite" do
|
|
@@ -44,7 +44,7 @@ describe Tempo do
|
|
|
44
44
|
it "should revive a tree structure from a file" do
|
|
45
45
|
tree_factory
|
|
46
46
|
test_file = File.join(ENV['HOME'],'tempo','tempo_trees.yaml')
|
|
47
|
-
File.delete(test_file) if File.
|
|
47
|
+
File.delete(test_file) if File.exist?( test_file )
|
|
48
48
|
contents = Tempo::Model::Tree.save_to_file
|
|
49
49
|
Tempo::Model::Tree.clear_all
|
|
50
50
|
Tempo::Model::Tree.read_from_file
|
|
@@ -5,11 +5,11 @@ describe Tempo do
|
|
|
5
5
|
before do
|
|
6
6
|
# See Rakefile for directory prep and cleanup
|
|
7
7
|
@dir = File.join( Dir.home,"tempo" )
|
|
8
|
-
Dir.mkdir(@dir, 0700) unless File.
|
|
8
|
+
Dir.mkdir(@dir, 0700) unless File.exist?(@dir)
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
after do
|
|
12
|
-
FileUtils.rm_r(@dir) if File.
|
|
12
|
+
FileUtils.rm_r(@dir) if File.exist?(@dir)
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
describe "Model::Log" do
|
|
@@ -48,7 +48,7 @@ describe Tempo do
|
|
|
48
48
|
it "grants children the ability to write to a file" do
|
|
49
49
|
log_factory
|
|
50
50
|
test_dir = File.join(ENV['HOME'],'tempo','tempo_message_logs')
|
|
51
|
-
FileUtils.rm_r test_dir if File.
|
|
51
|
+
FileUtils.rm_r test_dir if File.exist?(test_dir)
|
|
52
52
|
Tempo::Model::MessageLog.save_to_file
|
|
53
53
|
test_file_1 = File.join(test_dir, "2014/20140101.yaml")
|
|
54
54
|
test_file_2 = File.join(test_dir, "2014/20140102.yaml")
|
|
@@ -6,11 +6,11 @@ describe Tempo do
|
|
|
6
6
|
before do
|
|
7
7
|
# See Rakefile for directory prep and cleanup
|
|
8
8
|
@dir = File.join( Dir.home,"tempo" )
|
|
9
|
-
Dir.mkdir(@dir, 0700) unless File.
|
|
9
|
+
Dir.mkdir(@dir, 0700) unless File.exist?(@dir)
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
after do
|
|
13
|
-
FileUtils.rm_r(@dir) if File.
|
|
13
|
+
FileUtils.rm_r(@dir) if File.exist?(@dir)
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
describe "Model::TimeRecord" do
|
data/test/support/factories.rb
CHANGED
|
@@ -99,7 +99,7 @@ def log_factory
|
|
|
99
99
|
|
|
100
100
|
# delete all records so they aren't loaded when new logs are created
|
|
101
101
|
test_dir = File.join(ENV['HOME'],'tempo','tempo_message_logs')
|
|
102
|
-
FileUtils.rm_r test_dir if File.
|
|
102
|
+
FileUtils.rm_r test_dir if File.exist?(test_dir)
|
|
103
103
|
|
|
104
104
|
Tempo::Model::MessageLog.clear_all
|
|
105
105
|
@log_1 = Tempo::Model::MessageLog.new({ message: "day 1 pet the sheep", start_time: Time.new(2014, 1, 1, 7 ) })
|
|
@@ -125,8 +125,8 @@ def log_record_factory
|
|
|
125
125
|
Tempo::Model::MessageLog.clear_all
|
|
126
126
|
test_dir = File.join(ENV['HOME'],'tempo','tempo_message_logs','2014')
|
|
127
127
|
|
|
128
|
-
FileUtils.rm_r test_dir if File.
|
|
129
|
-
FileUtils.mkdir_p(test_dir) unless File.
|
|
128
|
+
FileUtils.rm_r test_dir if File.exist?(test_dir)
|
|
129
|
+
FileUtils.mkdir_p(test_dir) unless File.exist?(test_dir)
|
|
130
130
|
file_lines = ["---", ":start_time: 2014-01-01 07:15:00.000000000 -05:00",
|
|
131
131
|
":id: 1", ":message: day 1 pet the sheep",
|
|
132
132
|
"---", ":start_time: 2014-01-01 07:45:00.000000000 -05:00",
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: tempo-cli
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jonathan Gabel
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2024-04-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|
|
@@ -24,90 +24,82 @@ dependencies:
|
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '10.3'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: rdoc
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - "~>"
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '4.1'
|
|
34
|
-
type: :development
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - "~>"
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '4.1'
|
|
41
27
|
- !ruby/object:Gem::Dependency
|
|
42
28
|
name: aruba
|
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
|
44
30
|
requirements:
|
|
45
31
|
- - "~>"
|
|
46
32
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
33
|
+
version: '2.2'
|
|
48
34
|
type: :development
|
|
49
35
|
prerelease: false
|
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
37
|
requirements:
|
|
52
38
|
- - "~>"
|
|
53
39
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
40
|
+
version: '2.2'
|
|
55
41
|
- !ruby/object:Gem::Dependency
|
|
56
42
|
name: turn
|
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
|
58
44
|
requirements:
|
|
59
45
|
- - "~>"
|
|
60
46
|
- !ruby/object:Gem::Version
|
|
61
|
-
version:
|
|
47
|
+
version: 0.9.7
|
|
62
48
|
type: :development
|
|
63
49
|
prerelease: false
|
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
51
|
requirements:
|
|
66
52
|
- - "~>"
|
|
67
53
|
- !ruby/object:Gem::Version
|
|
68
|
-
version:
|
|
54
|
+
version: 0.9.7
|
|
69
55
|
- !ruby/object:Gem::Dependency
|
|
70
56
|
name: pry
|
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
|
72
58
|
requirements:
|
|
73
59
|
- - "~>"
|
|
74
60
|
- !ruby/object:Gem::Version
|
|
75
|
-
version:
|
|
61
|
+
version: 0.14.2
|
|
76
62
|
type: :development
|
|
77
63
|
prerelease: false
|
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
65
|
requirements:
|
|
80
66
|
- - "~>"
|
|
81
67
|
- !ruby/object:Gem::Version
|
|
82
|
-
version:
|
|
68
|
+
version: 0.14.2
|
|
83
69
|
- !ruby/object:Gem::Dependency
|
|
84
70
|
name: gli
|
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
|
86
72
|
requirements:
|
|
87
73
|
- - "~>"
|
|
88
74
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '2.
|
|
75
|
+
version: '2.21'
|
|
76
|
+
- - ">="
|
|
77
|
+
- !ruby/object:Gem::Version
|
|
78
|
+
version: 2.21.1
|
|
90
79
|
type: :runtime
|
|
91
80
|
prerelease: false
|
|
92
81
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
82
|
requirements:
|
|
94
83
|
- - "~>"
|
|
95
84
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: '2.
|
|
85
|
+
version: '2.21'
|
|
86
|
+
- - ">="
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: 2.21.1
|
|
97
89
|
- !ruby/object:Gem::Dependency
|
|
98
90
|
name: chronic
|
|
99
91
|
requirement: !ruby/object:Gem::Requirement
|
|
100
92
|
requirements:
|
|
101
93
|
- - "~>"
|
|
102
94
|
- !ruby/object:Gem::Version
|
|
103
|
-
version:
|
|
95
|
+
version: 0.10.2
|
|
104
96
|
type: :runtime
|
|
105
97
|
prerelease: false
|
|
106
98
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
99
|
requirements:
|
|
108
100
|
- - "~>"
|
|
109
101
|
- !ruby/object:Gem::Version
|
|
110
|
-
version:
|
|
102
|
+
version: 0.10.2
|
|
111
103
|
description: tempo-cli is a command line time tracking application. Record time spent
|
|
112
104
|
on projects in YAML files, and manage them from the command line.
|
|
113
105
|
email: hello@jonathangabel.com
|
|
@@ -202,7 +194,7 @@ homepage: https://github.com/josankapo/tempo-cli
|
|
|
202
194
|
licenses:
|
|
203
195
|
- MIT
|
|
204
196
|
metadata: {}
|
|
205
|
-
post_install_message:
|
|
197
|
+
post_install_message:
|
|
206
198
|
rdoc_options: []
|
|
207
199
|
require_paths:
|
|
208
200
|
- lib
|
|
@@ -218,9 +210,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
218
210
|
- !ruby/object:Gem::Version
|
|
219
211
|
version: '0'
|
|
220
212
|
requirements: []
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
signing_key:
|
|
213
|
+
rubygems_version: 3.3.7
|
|
214
|
+
signing_key:
|
|
224
215
|
specification_version: 4
|
|
225
216
|
summary: A command line time tracker for recording by day and by project
|
|
226
217
|
test_files: []
|