git-age 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.md +17 -0
- data/bin/git-age +5 -0
- data/lib/git/age/main.rb +25 -14
- data/lib/git/age/options.rb +2 -1
- data/lib/git/age/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3609bcc6cce83c461c4b72a3c2dc52e0b9ee4a8256616b3d08b5e788b3f2dafb
|
4
|
+
data.tar.gz: dbeb93657c9a244efaea22e7af4d7d12e35dd2affa4eceece7be00e25f5185c3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27c0b90c32a6d11c98ac0513fee1f55a793e7393c61be5ec6aab83a4f9bd89fb329c88e8b6162a11bd7103d68fdee97e6b8193e26df28086753892810421fa6d
|
7
|
+
data.tar.gz: 9663c06613211e3d46052891f293134fd07f991804d380a627bc7adfe9375a4415856bc15c5422b8c676181ed3856ea142af280740a676daedfd01f4cbbe22ad
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/README.md
CHANGED
@@ -21,6 +21,8 @@ Go to your repository and run:
|
|
21
21
|
|
22
22
|
```
|
23
23
|
Usage: git-age [options]
|
24
|
+
-b, --branch=BRANCH Git branch
|
25
|
+
-m, --map Create a file with processed files and dates
|
24
26
|
-o, --output=FILE Output file
|
25
27
|
-i, --image=FILE Image file
|
26
28
|
-g, --graph=PROCESSOR Graphic processor
|
@@ -32,8 +34,23 @@ Usage: git-age [options]
|
|
32
34
|
Example:
|
33
35
|
|
34
36
|
```
|
37
|
+
$ git-age -o /tmp/data.csv -t 'Test project' -x 'Dates here' -y 'Lines here' -i /tmp/data.png
|
35
38
|
```
|
36
39
|
|
40
|
+
Supported image processors:
|
41
|
+
|
42
|
+
- [graph-cli](https://github.com/mcastorina/graph-cli)
|
43
|
+
|
44
|
+
Default options are:
|
45
|
+
|
46
|
+
- branch: master
|
47
|
+
- output: git-age.csv
|
48
|
+
- image: git-age.png
|
49
|
+
- graph: graph-cli
|
50
|
+
- title: Git age statistics
|
51
|
+
- xtitle: Dates
|
52
|
+
- ytitle: Lines
|
53
|
+
|
37
54
|
## Development
|
38
55
|
|
39
56
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/bin/git-age
CHANGED
@@ -13,6 +13,11 @@ opts.on('-b', '--branch=BRANCH', 'Git branch') do |branch|
|
|
13
13
|
options.branch = branch
|
14
14
|
end
|
15
15
|
|
16
|
+
opts.on('-m', '--map', 'Create a file with processed files and dates') do
|
17
|
+
STDOUT.puts "Creating map file"
|
18
|
+
options.map = true
|
19
|
+
end
|
20
|
+
|
16
21
|
opts.on('-o', '--output=FILE', 'Output file') do |file|
|
17
22
|
STDOUT.puts "Output to #{file}"
|
18
23
|
options.output = file
|
data/lib/git/age/main.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
|
+
require 'io/console'
|
2
|
+
|
1
3
|
module Git
|
2
4
|
module Age
|
3
5
|
class Main
|
4
|
-
JUSTIFICATION = 150
|
5
|
-
|
6
6
|
def initialize
|
7
7
|
STDOUT.puts "Waiting, analysing your repository ..."
|
8
8
|
|
9
|
-
@dates
|
10
|
-
@files
|
9
|
+
@dates = Hash.new(0)
|
10
|
+
@files = files
|
11
|
+
@winsize = IO.console.winsize
|
11
12
|
end
|
12
13
|
|
13
14
|
def run
|
@@ -22,24 +23,34 @@ module Git
|
|
22
23
|
private
|
23
24
|
|
24
25
|
def read_files
|
25
|
-
cnt
|
26
|
-
total
|
26
|
+
cnt = 0
|
27
|
+
total = @files.size
|
28
|
+
mapfile = Git::Age::Options.instance.map ? File.open("/tmp/git-age.map", 'w') : nil
|
29
|
+
|
27
30
|
|
28
31
|
@files.each do |file|
|
29
32
|
cnt += 1
|
30
33
|
next unless text?(file)
|
31
34
|
|
32
|
-
print "Checking [#{cnt}/#{total}] #{file.ljust(
|
35
|
+
print "Checking [#{cnt}/#{total}] #{file} ...".ljust(@winsize[1]) + "\r"
|
33
36
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
37
|
+
begin
|
38
|
+
IO.popen("git blame #{file} | iconv -t utf8") do |io|
|
39
|
+
io.read.split("\n")
|
40
|
+
end.each do |line|
|
41
|
+
matches = line.match(/[\w^]+\s\([\w\s]+(?<date>\d{4}-\d{2})-\d{2}/)
|
42
|
+
next unless matches
|
39
43
|
|
40
|
-
|
44
|
+
mapfile << "#{file}: #{line}\n" if mapfile
|
45
|
+
|
46
|
+
@dates[matches[:date]] += 1
|
47
|
+
end
|
48
|
+
rescue => blame
|
49
|
+
print "Error on file: #{file}\r"
|
41
50
|
end
|
42
51
|
end
|
52
|
+
|
53
|
+
mapfile.close if mapfile
|
43
54
|
rescue => e
|
44
55
|
STDERR.puts "Error reading files: #{e}"
|
45
56
|
end
|
@@ -50,7 +61,7 @@ module Git
|
|
50
61
|
|
51
62
|
def create_csv
|
52
63
|
output = Git::Age::Options.instance.output
|
53
|
-
STDOUT.puts "Creating CSV file #{output} ...".ljust(
|
64
|
+
STDOUT.puts "Creating CSV file #{output} ...".ljust(@winsize[1])
|
54
65
|
|
55
66
|
File.open(output, 'w') do |file|
|
56
67
|
@dates.each do |key, value|
|
data/lib/git/age/options.rb
CHANGED
@@ -4,7 +4,7 @@ module Git
|
|
4
4
|
module Age
|
5
5
|
class Options
|
6
6
|
include Singleton
|
7
|
-
attr_accessor :branch, :output, :title, :processor, :image, :xtitle, :ytitle
|
7
|
+
attr_accessor :branch, :output, :title, :processor, :image, :xtitle, :ytitle, :map
|
8
8
|
|
9
9
|
def initialize
|
10
10
|
@branch = 'master'
|
@@ -14,6 +14,7 @@ module Git
|
|
14
14
|
@image = 'git-age.png'
|
15
15
|
@xtitle = 'Dates'
|
16
16
|
@ytitle = 'Lines'
|
17
|
+
@map = false
|
17
18
|
end
|
18
19
|
end
|
19
20
|
end
|
data/lib/git/age/version.rb
CHANGED
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-age
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eustaquio Rangel
|
@@ -83,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
83
83
|
- !ruby/object:Gem::Version
|
84
84
|
version: '0'
|
85
85
|
requirements: []
|
86
|
-
rubygems_version: 3.3
|
86
|
+
rubygems_version: 3.0.3
|
87
87
|
signing_key:
|
88
88
|
specification_version: 4
|
89
89
|
summary: Create a CSV file with line year and month from your Git repository
|
metadata.gz.sig
CHANGED
Binary file
|