devlog 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2d71d5f7886292ce279efe60c29e61dbf73b25d9
4
- data.tar.gz: a06319a20bdc514b36260a3437c56e447c6f85cf
3
+ metadata.gz: 7493b2bbd6d4cffb285aa30469f67c7fe6f73111
4
+ data.tar.gz: 1eb62c36e3c51d93d259c6152d3177b44be57539
5
5
  SHA512:
6
- metadata.gz: 2e99cc92a045dc1e01dab7adb87d190444a2ce543047853b13c0593ee7d4e85fe3b297291937c6a2c851fd83b0927f8ec13815fbf7c8363225024fd73d6dddfd
7
- data.tar.gz: 1c2add6d4bd48bbe54864deec0cee8b8cfd99bef52681513b5892ad1f4af4e741b6df9d713d503544265f7e21f999cc825ce4e902b8be27f16fd9a50052aa10e
6
+ metadata.gz: 011975f73976cd54a868d7e7f9d61c0a1058f6a5804d54e6cd26907336b3f5e2865cc873f509e55556d5222ba5901d044f079514f97debf711fea90c0a2f814b
7
+ data.tar.gz: 1b74fd0683516915ffe226ac12168fa99f7ce36678b4289b9910564bac47f987eb1458e1a39dabf7f5146b6a41f39add1d72cb70a66182cba0502e5f76826d09
data/Gemfile CHANGED
@@ -2,5 +2,6 @@ source "https://rubygems.org"
2
2
  gem "activesupport", ">= 4.1"
3
3
 
4
4
  group :development, :test do
5
+ gem "test-unit"
5
6
  gem "jeweler", "~> 2.0"
6
7
  end
data/Gemfile.lock CHANGED
@@ -49,10 +49,13 @@ GEM
49
49
  multi_json (~> 1.3)
50
50
  multi_xml (~> 0.5)
51
51
  rack (~> 1.2)
52
+ power_assert (0.2.2)
52
53
  rack (1.5.2)
53
54
  rake (10.1.1)
54
55
  rdoc (4.1.1)
55
56
  json (~> 1.4)
57
+ test-unit (3.0.8)
58
+ power_assert
56
59
  thread_safe (0.3.4)
57
60
  tzinfo (1.2.2)
58
61
  thread_safe (~> 0.1)
@@ -63,3 +66,4 @@ PLATFORMS
63
66
  DEPENDENCIES
64
67
  activesupport (>= 4.1)
65
68
  jeweler (~> 2.0)
69
+ test-unit
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.3
data/bin/devlog CHANGED
@@ -3,11 +3,11 @@ require 'benchmark'
3
3
  require File.expand_path(File.join(File.dirname(__FILE__), %w[.. lib devlog.rb]))
4
4
  USAGE= <<-EOF
5
5
  #{Devlog.display_version}
6
- This software is intended to parse and present information within devlog.markdown development logs.
6
+ This software is intended to parse and present information within devlog.markdown development logs. It also helps You to write the devlog.
7
7
 
8
8
  #{'Use it as You'.green} #{'dodo'.pur}.
9
9
 
10
- Using with a file:
10
+ Using with a file, for parsing and seeing the information summary:
11
11
 
12
12
  #{'devlog'.red} /path/to/devlog.markdown
13
13
 
@@ -15,12 +15,14 @@ or in a folder with a 'devlog.markdown' file in it:
15
15
 
16
16
  #{'devlog'.green}
17
17
 
18
- commands for the current folder:
18
+ write commands for the current folder, the top three:
19
19
 
20
20
  #{'devlog'.green} b ~ starts coding session
21
21
  #{'devlog'.green} e ~ stops coding session
22
+ #{'devlog'.green} save ~ save info.markdown, commit & push git repo
23
+
24
+ #{'devlog'.green} i ~ save info.markdown
22
25
  #{'devlog'.green} s ~ status of coding session
23
- #{'devlog'.green} save ~ commit & push git repo
24
26
  #{'devlog'.green} commit ~ commit git repo
25
27
  #{'devlog'.green} push ~ push git repo
26
28
 
@@ -50,6 +52,9 @@ def dodo
50
52
  elsif @in_file_or_cmd == 'e'
51
53
  puts "CodingSession::END"
52
54
  stop_coding_session("devlog.markdown")
55
+ elsif @in_file_or_cmd == 'i'
56
+ puts "Save info.markdown"
57
+ save_info("devlog.markdown")
53
58
  elsif @in_file_or_cmd == 'commit'
54
59
  puts "Commit git"
55
60
  `git commit -am "devlog"`
@@ -57,7 +62,8 @@ def dodo
57
62
  puts "Push git"
58
63
  `git push`
59
64
  elsif @in_file_or_cmd == 'save'
60
- puts "Commit and push git"
65
+ puts "Save info.markdown and Commit and push git"
66
+ save_info("devlog.markdown")
61
67
  `git commit -am "devlog" && git push`
62
68
  elsif @in_file_or_cmd == 's'
63
69
  puts is_session_open("devlog.markdown") ? "Session is open..." : "No open session."
data/devlog.gemspec CHANGED
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: devlog 0.1.2 ruby lib
5
+ # stub: devlog 0.1.3 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "devlog"
9
- s.version = "0.1.2"
9
+ s.version = "0.1.3"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["mihael"]
14
- s.date = "2015-02-06"
14
+ s.date = "2015-02-17"
15
15
  s.description = "devlog.markdown time&space extractor"
16
16
  s.email = "kitschmaster@gmail.com"
17
17
  s.executables = ["devlog"]
@@ -62,13 +62,16 @@ Gem::Specification.new do |s|
62
62
 
63
63
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
64
64
  s.add_runtime_dependency(%q<activesupport>, [">= 4.1"])
65
+ s.add_development_dependency(%q<test-unit>, [">= 0"])
65
66
  s.add_development_dependency(%q<jeweler>, ["~> 2.0"])
66
67
  else
67
68
  s.add_dependency(%q<activesupport>, [">= 4.1"])
69
+ s.add_dependency(%q<test-unit>, [">= 0"])
68
70
  s.add_dependency(%q<jeweler>, ["~> 2.0"])
69
71
  end
70
72
  else
71
73
  s.add_dependency(%q<activesupport>, [">= 4.1"])
74
+ s.add_dependency(%q<test-unit>, [">= 0"])
72
75
  s.add_dependency(%q<jeweler>, ["~> 2.0"])
73
76
  end
74
77
  end
data/devlog.markdown CHANGED
@@ -1,3 +1,21 @@
1
+ #16.02.2015 23:09:06 CodingSession::END
2
+
3
+ who's got time...not to sweet dream. still did not get rid of active support... well, let's keep it until, after all, it's active, reactive uppsort... and maybe someday You would dare work without it.
4
+
5
+ let's see, if ii comment out active_support and run rake test:
6
+
7
+ 23 tests, 53 assertions, 0 failures, 10 errors, 0 pendings, 0 omissions, 0 notifications
8
+
9
+ just 10 errors, not failures, but what is the difference between the two, 0 is not 1.
10
+
11
+ #16.02.2015 23:08:38 CodingSession::BEGIN
12
+
13
+ #09.02.2015 15:41:16 CodingSession::END
14
+
15
+ aha... no comment haha...
16
+
17
+ #09.02.2015 15:41:09 CodingSession::BEGIN
18
+
1
19
 
2
20
  #02.02.2015 17:53:20 CodingSession::END
3
21
 
@@ -100,7 +118,7 @@ obviously the parse_devlog method returns the Tajm object, so that is where the
100
118
 
101
119
  ii have the methods implemented at #02.02.2014 15:10:01 and am about to run the test again... the darn thing still fails! :) and the methods are simply empty now, so let's make the tests pass by returning what, more than zero... ii would need to know exactly the hours and the some testing... so let me do something funky...
102
120
 
103
- ii adedd parse_devlog_now, which will be developed as the new thing, while parse_devlog will be used as reference, to get the reference time and compare for validity.
121
+ ii added parse_devlog_now, which will be developed as the new thing, (LOL back at this record at #16.02.2015 22:59:10) while parse_devlog will be used as reference, to get the reference time and compare for validity.
104
122
 
105
123
  also, this morning, ii discovered ii am unable to install gems under ruby 1.8.7 after installing that with rvm on 10.9 OSX, soo ii will add some more code to the binary script, to enable me to push this devlog to a github or any git repo actually and have the summary of the devlog parse inserted before pushing. it just requires some more commands to be implemented and some more parsing...
106
124
 
data/lib/devlog.rb CHANGED
@@ -240,6 +240,17 @@ module Devlog
240
240
  #close the current session, if any
241
241
  def stop_coding_session(devlog_file='devlog.markdown')
242
242
  prepend_string(devlog_session_entry('Coding', 'END'), devlog_file)
243
+ save_info(devlog_file)
244
+ end
245
+
246
+ def save_info(devlog_file='devlog.markdown', info_file='info.markdown')
247
+ info = parse_devlog_now(devlog_file)
248
+ if info.has_info?
249
+ File.open(File.join(File.dirname(devlog_file), info_file), 'w') {|f| f.write(info.to_info_string(short=true)) }
250
+ `cp #{devlog_file} #{File.join(File.dirname(devlog_file), 'README.markdown')}`
251
+ else
252
+ puts "No info present.".red
253
+ end
243
254
  end
244
255
 
245
256
  #if the first non empty line is not and END entry then session is open (or malformed file)
@@ -278,7 +289,11 @@ module Devlog
278
289
  @payed_time = 0.0
279
290
 
280
291
  @devlog_file = ""
281
- end
292
+ end
293
+
294
+ def has_info?
295
+ @zezzions.any?
296
+ end
282
297
 
283
298
  def add_zezzion(zezzion)
284
299
  @zezzions << zezzion
@@ -391,38 +406,41 @@ module Devlog
391
406
  vs << (File.exist?(self.devlog_file) ? '' : "No such file #{self.devlog_file}...\n".red)
392
407
  end
393
408
 
394
- def to_info_string
409
+ def to_info_string(short=false)
395
410
  s = ""
396
411
  s << "\nSession::Time: = #{self.session_time} [h]\n"
397
- s << ("\nCodingSession::Time = %.1f [h]" % self.coding_session_time)
398
- s << ("\nComSession::Time = %.1f [h]" % self.com_session_time)
399
- s << ("\nCharge::Time = #{self.charge_time} [h]")
400
- s << ("\nUnpayed::Time = #{self.unpayed_time.to_s.green} [h]\n")
401
- s << ("\n")
402
- s << ("Num of Sessions = #{self.devlog_sessions.size}\n")
403
- s << ("Hours per Day = #{self.per_day} [h]\n")
404
- s << ("Hours per Week = #{self.per_week} [h]\n")
405
- s << ("Hours per Month = #{self.per_month} [h]\n")
406
- s << ("Hours last 7 days = #{self.hours_for_last(7)} [h]\n")
407
- s << ("Hours last 14 days = #{self.hours_for_last(14)} [h]\n")
408
- s << ("Hours last 28 days = #{self.hours_for_last(28)} [h]\n")
412
+ s << ("\nCodingSession::Time = %.1f [h]\n" % self.coding_session_time)
413
+ s << ("\nComSession::Time = %.1f [h]\n" % self.com_session_time)
414
+ s << ("\nCharge::Time = #{self.charge_time} [h]\n")
415
+ s << ("\nUnpayed::Time = #{self.unpayed_time.to_s} [h]\n")
409
416
  s << ("\n")
410
- s << ("Devlog Time = #{self.devlog_days * 24} [h]\n")
411
- s << ("Devlog Days = #{self.devlog_days} [days]\n")
412
- s << ("Devlog Weeks = #{self.devlog_weeks} [weeks]\n")
413
- s << ("Devlog Months = #{self.devlog_months} [months]\n")
414
- if self.negative_sessions.any?
417
+ unless short
418
+ s << ("Num of Sessions = #{self.devlog_sessions.size}\n")
419
+ s << ("Hours per Day = #{self.per_day} [h]\n")
420
+ s << ("Hours per Week = #{self.per_week} [h]\n")
421
+ s << ("Hours per Month = #{self.per_month} [h]\n")
422
+ s << ("Hours last 7 days = #{self.hours_for_last(7)} [h]\n")
423
+ s << ("Hours last 14 days = #{self.hours_for_last(14)} [h]\n")
424
+ s << ("Hours last 28 days = #{self.hours_for_last(28)} [h]\n")
415
425
  s << ("\n")
416
- s << ("#{'Negative Sessions'.red} = #{self.negative_sessions_to_s}\n")
417
- end
418
- if self.zero_sessions.any?
426
+ s << ("Devlog Time = #{self.devlog_days * 24} [h]\n")
427
+ s << ("Devlog Days = #{self.devlog_days} [days]\n")
428
+ s << ("Devlog Weeks = #{self.devlog_weeks} [weeks]\n")
429
+ s << ("Devlog Months = #{self.devlog_months} [months]\n")
430
+ if self.negative_sessions.any?
431
+ s << ("\n")
432
+ s << ("#{'Negative Sessions'.red} = #{self.negative_sessions_to_s}\n")
433
+ end
434
+ if self.zero_sessions.any?
435
+ s << ("\n")
436
+ s << ("#{'Zero Sessions'.blue} = #{self.zero_sessions_to_s}\n")
437
+ end
419
438
  s << ("\n")
420
- s << ("#{'Zero Sessions'.blue} = #{self.zero_sessions_to_s}\n")
439
+ s << ("Longest Session = #{self.longest_session.to_s}\n")
440
+ s << ("Shortest Session = #{self.shortest_session.to_s}\n")
441
+ s << ("Last Session = #{self.devlog_end.ago_in_words}, duration: #{self.last_session.session_time.round(3)} [h]")
421
442
  end
422
- s << ("\n")
423
- s << ("Longest Session = #{self.longest_session.to_s}\n")
424
- s << ("Shortest Session = #{self.shortest_session.to_s}\n")
425
- s << ("Last Session = #{self.devlog_end.ago_in_words}, duration: #{self.last_session.session_time.round(3)} [h]")
443
+ s
426
444
  end
427
445
 
428
446
  private
data/test/devlog_test.rb CHANGED
@@ -136,8 +136,8 @@ class DevlogTest < Test::Unit::TestCase
136
136
  end
137
137
 
138
138
  def test_start_coding_session
139
- @empty_devlog = File.join(File.dirname(__FILE__), '..', 'tmp_devlog.markdown')
140
- File.new(@empty_devlog, 'w').puts('empty')
139
+ @empty_devlog = File.join(File.dirname(__FILE__), '..', 'tmp1_devlog.markdown')
140
+ File.open(@empty_devlog, 'w') {|f| f.puts('empty')}
141
141
  start_coding_session(@empty_devlog)
142
142
  assert(File.readlines(@empty_devlog).grep(/CodingSession::BEGIN/).size>0, "should insert CodingSession::BEGIN at top of file")
143
143
  assert(is_session_open(@empty_devlog)==true, "should be true, session should be open after starting")
@@ -145,12 +145,35 @@ class DevlogTest < Test::Unit::TestCase
145
145
  end
146
146
 
147
147
  def test_stop_coding_session
148
- @empty_devlog = File.join(File.dirname(__FILE__), '..', 'tmp_devlog.markdown')
149
- File.new(@empty_devlog, 'w').puts('empty')
148
+ @empty_devlog = File.join(File.dirname(__FILE__), '..', 'tmp2_devlog.markdown')
149
+ File.delete(@empty_devlog) if File.exist?(@empty_devlog)
150
+ File.open(@empty_devlog, 'w') {|f| f.puts('empty')}
150
151
  stop_coding_session(@empty_devlog)
151
152
  assert(File.readlines(@empty_devlog).grep(/CodingSession::END/).size>0, "should insert CodingSession::END at top of file")
152
153
  assert(is_session_open(@empty_devlog)==false, "should be false, session should be closed after stopping")
153
- File.delete(@empty_devlog)
154
+ File.delete(@empty_devlog) if File.exist?(@empty_devlog)
155
+ end
156
+
157
+ def test_save_info_after_stop_coding_session
158
+ @devlog_info = File.join(File.dirname(__FILE__), '..', 'info.markdown')
159
+ @empty_devlog = File.join(File.dirname(__FILE__), '..', 'tmp3_devlog.markdown')
160
+ #File.delete(@empty_devlog) if File.exist?(@empty_devlog)
161
+ File.new(@empty_devlog, 'w').puts('\n')
162
+ start_coding_session(@empty_devlog)
163
+ assert(File.readlines(@empty_devlog).grep(/CodingSession::BEGIN/).size>0, "should insert CodingSession::BEGIN at top of file")
164
+ assert(is_session_open(@empty_devlog)==true, "should be true, session should be open after starting")
165
+ prepend_string('+1h', @empty_devlog)
166
+ sleep(1)
167
+ stop_coding_session(@empty_devlog)
168
+ assert(File.readlines(@empty_devlog).grep(/CodingSession::END/).size>0, "should insert CodingSession::END at top of file")
169
+ assert(is_session_open(@empty_devlog)==false, "should be false, session should be closed after stopping")
170
+ assert(File.exists?(@devlog_info)==true, "should exist")
171
+ hasinfo = parse_devlog_now(@empty_devlog).has_info?
172
+ assert(hasinfo==true, 'should have info')
173
+ assert(File.readlines(@devlog_info).grep(/Session::Time/).size>0, "should have info about Session::Time")
174
+ assert(File.readlines(@devlog_info).grep(/Unpayed::Time/).size>0, "should have info about Session::Time")
175
+ assert(File.readlines(@devlog_info).grep(/Num of Sessions/).size==0, "should not include full info")
176
+ #File.delete(@empty_devlog) if File.exist?(@empty_devlog)
154
177
  end
155
178
 
156
179
  def test_is_session_open
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devlog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - mihael
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-06 00:00:00.000000000 Z
11
+ date: 2015-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '4.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: test-unit
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'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: jeweler
29
43
  requirement: !ruby/object:Gem::Requirement