obst 0.1.0 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 37a6b113b516b2377d046869f403ce9c548b6c62cf8b320538fef6e94cacb070
4
- data.tar.gz: 427c566fc6b6496541a71813b36c1b1e3c178c3d2be39dbfa8a64bcef3c67c81
3
+ metadata.gz: 43dc48712314838bb19c932cd61c53196acfba4d1850192048f0946ba8a2bf90
4
+ data.tar.gz: 7498633a8f52ad0c9651b9e1a7a17361ee3aca822594ea42d96ac9dede0b713a
5
5
  SHA512:
6
- metadata.gz: feb102e3ac56ae7471994c8f2df2e233df80cfae75f545b9e8b2117d1e74abf4bde224e4940dec73f3ed24f09e9b308d199e42b8f3c89f9f5fd99f21b63e67d8
7
- data.tar.gz: 22e3be408cee349091515c8f48587d233cd11802f9a569da90445d289430a11b8868cca88bf680291a08d7cdf28aa7fb463c393b78db42399943d81161c572f3
6
+ metadata.gz: eea44c54b0be8db9911ce89a05a89df918a563ad1adfd266b24f28285b067a22f3923d5cb3003c1994e90a4d74047aa5a7440973a9f1864a7d5761bdb78098d6
7
+ data.tar.gz: ec792740ca69bf79d39ef1b12a2c66903c55f8e51dbbcd78c83c207bb600f036244c2ad7c21941b0af9ebae7f9fb3a28ae76dda4338eec07fe751c0c97fa8949
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
  /Gemfile.lock
10
+ /*.gem
data/exe/obst ADDED
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "obst"
4
+
5
+ path = ARGV[0] || '.'
6
+
7
+ gitignore = File.join(path, '.gitignore')
8
+ File.open(gitignore, 'a+') do |f|
9
+ f.puts("# Obst\nobst.md") unless f.read =~ /# Obst/
10
+ end
11
+
12
+ buffer = []
13
+ Obst::GroupByDays.new(C: path, days: 1).take(7).each do |record|
14
+ buffer << "- #{record.time} (#{record.statuses.size})"
15
+ record.statuses.each_key do |name|
16
+ buffer << "\t- [[#{name}]]"
17
+ end
18
+ end
19
+
20
+ obst_md = File.join(path, 'obst.md')
21
+ File.open(obst_md, 'w') do |f|
22
+ f.puts(buffer.join("\n"))
23
+ end
data/lib/obst/git_log.rb CHANGED
@@ -1,13 +1,16 @@
1
+ require "open3"
2
+
1
3
  module Obst
2
4
  class GitLog
3
5
  def initialize(**opts)
4
- @C = "-C #{opts[:C] || '.'}"
5
- @after = opts[:after] ? "--after #{opts[:after]}" : ''
6
- @before = opts[:before] ? "--before #{opts[:before]}" : ''
6
+ path = opts[:C] || '.'
7
+ @cmd = ['git', '-C', path, 'log', '--name-status', '--pretty=format:%ad', "--date=format:'%Y-%m-%dT%H:%M:%S'"]
8
+ @cmd << '--after' << opts[:after] if opts[:after]
9
+ @cmd << '--before' << opts[:before] if opts[:before]
7
10
  end
8
11
 
9
12
  def to_s
10
- `git #{@C} log --name-status #{@after} #{@before} --pretty=format:%ad --date='format:%Y-%m-%d %H:%M:%S'`
13
+ `#{@cmd.join(' ')}`
11
14
  end
12
15
 
13
16
  class Commit
@@ -26,7 +29,6 @@ module Obst
26
29
  AMD = /^[AMD]/
27
30
  RENAME = /^R/
28
31
 
29
-
30
32
  attr_reader :status, :name, :old_name
31
33
 
32
34
  def initialize(line)
@@ -47,10 +49,13 @@ module Obst
47
49
  def commits
48
50
  Enumerator.new do |y|
49
51
  batch = []
50
- to_s.each_line do |line|
51
- next batch << line unless line == EMPTY_LINE
52
- y << Commit.new(batch)
53
- batch.clear
52
+ Open3.popen2(*@cmd) do |stdin, stdout, status_thread|
53
+ stdout.each_line do |line|
54
+ next batch << line unless line == EMPTY_LINE
55
+ y << Commit.new(batch)
56
+ batch.clear
57
+ end
58
+ raise 'fail to loop git log' unless status_thread.value.success?
54
59
  end
55
60
  y << Commit.new(batch)
56
61
  end
data/lib/obst/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Obst
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: obst
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ken
@@ -13,7 +13,8 @@ dependencies: []
13
13
  description:
14
14
  email:
15
15
  - block24block@gmail.com
16
- executables: []
16
+ executables:
17
+ - obst
17
18
  extensions: []
18
19
  extra_rdoc_files: []
19
20
  files:
@@ -26,6 +27,7 @@ files:
26
27
  - Rakefile
27
28
  - bin/console
28
29
  - bin/setup
30
+ - exe/obst
29
31
  - lib/obst.rb
30
32
  - lib/obst/git_log.rb
31
33
  - lib/obst/group_by_days.rb