gpr 0.0.2 → 0.0.3

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
  SHA1:
3
- metadata.gz: f91a087109c606f02532188032e4f9416afc3340
4
- data.tar.gz: a3969ac73df86f4a3dc19a359da39a92321d9bae
3
+ metadata.gz: d6aaeb3e46219acf803f62ee8fed9789232e25f1
4
+ data.tar.gz: c13cb934f58327cd44bb16a54aed8a95734a947d
5
5
  SHA512:
6
- metadata.gz: 0d24746135344420454173fd37dd83c9c9671917316d8a83d236b760808491edbdd17cfde358186a03dd8ca012bf0e6f60fb89ea51e2937a69404ea467d4f5d1
7
- data.tar.gz: d0c52d99232833be53e494eda4c5a1fe582876edca14895f5ee96cfa42e974676c0704ce5f0d2e0e00bdb8f5114b4611118d7731a9c7d385f0e8fb8970a2035f
6
+ metadata.gz: 03bf320b8e4ec2952e6e3893fd5e921826616149d078eef651712b4b8d01983e294c6e4764adddb2e7682b7ff12d3525d661575984734ca9d580368ba6ffb725
7
+ data.tar.gz: d3269f2cbd486c71b90bb18a596bb9686187e62a01e5ce93208b8df0408ffc273fdff16e31185f50d2576195794bb03d1193111f59aa406100033e844c0bcce1
data/README.md CHANGED
@@ -12,6 +12,14 @@ For example, all repositories are cloned to `$HOME/.gpr/<host>/<user>/<repositor
12
12
 
13
13
  It is possible to centrally manage of the all repositories.
14
14
 
15
+ ## Work with peco
16
+
17
+ Gpr provides a list of directories of all registered repositories.
18
+
19
+ Therefore, it is powerful when combined with [peco](https://github.com/peco/peco).
20
+
21
+ ![with\_peco](https://raw.github.com/wiki/kaihar4/gpr/images/with_peco.gif)
22
+
15
23
  ## Installation
16
24
 
17
25
  ```sh
@@ -44,30 +52,36 @@ $ gpr get <host>/<user>
44
52
 
45
53
  ```sh
46
54
  $ gpr list
55
+ ```
47
56
 
48
- github.com - kaihar4/dotfiles
49
- github.com - kaihar4/gpr
57
+ ![list](https://raw.github.com/wiki/kaihar4/gpr/images/list.png)
50
58
 
59
+ ```sh
51
60
  $ gpr list --paths
61
+ ```
62
+
63
+ ![list\_paths](https://raw.github.com/wiki/kaihar4/gpr/images/list_paths.png)
64
+
65
+ ### Show contributions of registered repositories
52
66
 
53
- /home/kaihara/.gpr/github.com/kaihar4/dotfiles
54
- /home/kaihara/.gpr/github.com/kaihar4/gpr
67
+ Display in graph format.
68
+
69
+ ```sh
70
+ $ gpr contrib
55
71
  ```
56
72
 
73
+ ![contrib](https://raw.github.com/wiki/kaihar4/gpr/images/contrib.png)
74
+
57
75
  ### Show the status of all registered repositories
58
76
 
77
+ You can check the status of the registered repositories at a glance.
78
+
59
79
  ```sh
60
80
  $ gpr status
61
-
62
- +-----------------+------------------------------------------+---------------------------+
63
- | REPOSITORY NAME | BRANCH STATUS | DIRECTORY STATUS |
64
- +-----------------+------------------------------------------+---------------------------+
65
- | dotfiles | up-to-date with 'origin/master' | Working directory clean |
66
- +-----------------+------------------------------------------+---------------------------+
67
- | gpr | ahead of 'origin/master' by 1 commit | Exist unstaged changes |
68
- +-----------------+------------------------------------------+---------------------------+
69
81
  ```
70
82
 
83
+ ![status](https://raw.github.com/wiki/kaihar4/gpr/images/status.png)
84
+
71
85
  ### Search the specified keyword in registered repositories
72
86
 
73
87
  Show a list of the files that the specified keyword is included.
@@ -84,20 +98,7 @@ Options:
84
98
  Search the specified keyword in registered repositories
85
99
  ```
86
100
 
87
- ```sh
88
- $ gpr search 'net/http'
89
-
90
- github.com - kaihar4/gpr : lib/gpr.rb
91
- github.com - kaihar4/kaihar4.com : source/articles/2014-06-29-mechanize-scraping.md
92
-
93
- $ gpr search 'net/http' -f '.rb'
94
-
95
- github.com - kaihar4/gpr : lib/gpr.rb
96
-
97
- $ gpr search 'net/http' -r 'kaihar4/kaihar4.com'
98
-
99
- github.com - kaihar4/kaihar4.com : source/articles/2014-06-29-mechanize-scraping.md
100
- ```
101
+ ![search](https://raw.github.com/wiki/kaihar4/gpr/images/search.png)
101
102
 
102
103
  ### Update the database to be used for search
103
104
 
@@ -108,7 +109,7 @@ $ gpr update
108
109
  ### Fetch all registered repositories
109
110
 
110
111
  ```sh
111
- $ gpr fetch remote_repo
112
+ $ gpr fetch <remote_repo>
112
113
  ```
113
114
 
114
115
  If you run for short, it means `gpr fetch origin`.
data/lib/gpr.rb CHANGED
@@ -8,6 +8,7 @@ require 'groonga'
8
8
 
9
9
  require 'colorize'
10
10
  require 'table_builder'
11
+ require 'graph_drawer'
11
12
  require 'gpr/version'
12
13
  require 'gpr/api_helper'
13
14
  require 'gpr/git_helper'
@@ -2,6 +2,7 @@ module Gpr
2
2
  class CLI < Thor
3
3
  using Colorize
4
4
  include TableBuilder
5
+ include GraphDrawer
5
6
 
6
7
  desc 'get', 'Get a repository'
7
8
  def get(param)
@@ -52,6 +53,42 @@ module Gpr
52
53
  end
53
54
  end
54
55
 
56
+ desc 'contrib', 'Show contributions of registered repositories'
57
+ def contrib(path = nil)
58
+ if path.nil?
59
+ dates = []
60
+
61
+ repositories = get_repositories
62
+ repositories.each do |repository|
63
+ dates.concat(GitHelper.log_by_date(repository))
64
+ end
65
+
66
+ else
67
+ dates = GitHelper.log_by_date(path)
68
+ end
69
+
70
+ first_date = Time.parse(dates.sort.first)
71
+ diff = ((Time.now - first_date).to_i / 86400) + 1
72
+
73
+ # Initialize a hash
74
+ commit_counts = {}
75
+ diff.times.with_index do |index|
76
+ date = Time.at(first_date + (86400 * index)).strftime('%Y-%m-%d')
77
+ commit_counts[date] = 0
78
+ end
79
+
80
+ # Count commits
81
+ dates.each do |date|
82
+ commit_counts[date] += 1 if commit_counts[date]
83
+ end
84
+
85
+ graph do
86
+ commit_counts.sort.each do |date, value|
87
+ data(date, value)
88
+ end
89
+ end
90
+ end
91
+
55
92
  desc 'search', 'Search the specified keyword in registered repositories'
56
93
  option :file, type: :string, aliases: '-f', desc: 'Filter by filename'
57
94
  option :host, type: :string, aliases: '-h', desc: 'Filter by host'
@@ -38,6 +38,11 @@ module Gpr
38
38
  end
39
39
  result
40
40
  end
41
+
42
+ def log_by_date(path)
43
+ Dir.chdir(path)
44
+ `git log --date=short --pretty=format:"%cd"`.split("\n")
45
+ end
41
46
  end
42
47
  end
43
48
  end
@@ -1,3 +1,3 @@
1
1
  module Gpr
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
@@ -0,0 +1,16 @@
1
+ require 'graph_drawer/graph.rb'
2
+ require 'graph_drawer/data.rb'
3
+
4
+ module GraphDrawer
5
+ def graph(&block)
6
+ @graph = Graph.new
7
+ block.call
8
+ @graph.datas_init
9
+ @graph.to_s
10
+ end
11
+
12
+ def data(item, value)
13
+ @data = Data.new(item, value)
14
+ @graph.add(@data)
15
+ end
16
+ end
@@ -0,0 +1,30 @@
1
+ module GraphDrawer
2
+ class Data
3
+ using Colorize
4
+
5
+ attr_accessor :item
6
+ attr_accessor :value
7
+ attr_accessor :level
8
+
9
+ def initialize(item, value)
10
+ @item = item
11
+ @value = value
12
+ @level = nil
13
+ end
14
+
15
+ def to_s
16
+ color =
17
+ case @level
18
+ when 1
19
+ :green
20
+ when 2
21
+ :cyan
22
+ when 3
23
+ :blue
24
+ end
25
+
26
+ bar = ' ' * @value
27
+ "#{@item}|#{bar.bg_color(color)}"
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,98 @@
1
+ module GraphDrawer
2
+ class Graph
3
+ def initialize
4
+ @datas = []
5
+ @max_item_size = 0
6
+ @max_value_size = 0
7
+ end
8
+
9
+ def add(data)
10
+ @datas << data
11
+ @max_item_size = data.item.size if @max_item_size < data.item.size
12
+ @max_value_size = data.value if @max_value_size < data.value
13
+ end
14
+
15
+ def datas_init
16
+ @datas.each do |data|
17
+ # Adjust the data item size
18
+ data.item = adjust_item_size(data)
19
+
20
+ # Set the data level
21
+ data.level = calc_data_level(data)
22
+ end
23
+ end
24
+
25
+ def to_s
26
+ puts separate
27
+
28
+ ommit_flag = false
29
+ omitted = false
30
+
31
+ @datas.each.with_index do |data, index|
32
+ ommit_flag = false if ommit_flag == true && !data.value.zero?
33
+
34
+ # First and Last
35
+ if index.zero? || index == @datas.size - 1
36
+ puts data.to_s
37
+
38
+ # Omission
39
+ elsif ommit_flag == true && omitted == false && @datas[index + 1].value.zero?
40
+ puts draw_omission
41
+
42
+ omitted = true
43
+
44
+ # Omitted already
45
+ elsif ommit_flag == true && omitted == true && @datas[index + 1].value.zero?
46
+ next
47
+
48
+ else
49
+ puts data.to_s
50
+
51
+ omitted = false
52
+ end
53
+
54
+ ommit_flag = true if ommit_flag == false && data.value.zero?
55
+ end
56
+
57
+ puts separate
58
+ end
59
+
60
+ private
61
+
62
+ def adjust_item_size(data)
63
+ missing_size = @max_item_size - data.item.size
64
+
65
+ # Nothing to do
66
+ return data.item if missing_size.zero?
67
+
68
+ if missing_size.even?
69
+ ' ' * (missing_size / 2) + data.item + ' ' * (missing_size / 2)
70
+ else
71
+ ' ' * (missing_size / 2) + data.item + ' ' * (missing_size / 2 + 1)
72
+ end
73
+ end
74
+
75
+ def calc_data_level(data)
76
+ basis = (@max_value_size / 3).round
77
+ if data.value <= basis * 1
78
+ 1
79
+ elsif data.value <= basis * 2
80
+ 2
81
+ else
82
+ 3
83
+ end
84
+ end
85
+
86
+ def separate
87
+ '=' * (@max_item_size + 1 + (@max_value_size * 2))
88
+ end
89
+
90
+ def draw_omission
91
+ if @max_item_size.even?
92
+ ' ' * (@max_item_size / 2) + '|' + ' ' * (@max_item_size / 2 - 1) + '|'
93
+ else
94
+ ' ' * (@max_item_size / 2) + '|' + ' ' * (@max_item_size / 2) + '|'
95
+ end
96
+ end
97
+ end
98
+ end
@@ -23,6 +23,8 @@ function _gpr () {
23
23
  '(-)*:: :->null_state' \
24
24
  && ret=0
25
25
  ;;
26
+ (contrib)
27
+ ;;
26
28
  (search)
27
29
  _arguments -C \
28
30
  '-f[Filter by filename]' \
@@ -52,6 +54,7 @@ __gpr_cmds () {
52
54
  'get:Get a repository'
53
55
  'help:Describe available commands or one specific command'
54
56
  'list:Show all registered repositories'
57
+ 'contrib:Show contributions of registered repositories'
55
58
  'search:Search the specified keyword in registered repositories'
56
59
  'update:Update the database to be used for search'
57
60
  'fetch:Fetch the registered repositories'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gpr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - kaihar4
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-14 00:00:00.000000000 Z
11
+ date: 2014-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -115,6 +115,9 @@ files:
115
115
  - lib/gpr/cli.rb
116
116
  - lib/gpr/git_helper.rb
117
117
  - lib/gpr/version.rb
118
+ - lib/graph_drawer.rb
119
+ - lib/graph_drawer/data.rb
120
+ - lib/graph_drawer/graph.rb
118
121
  - lib/table_builder.rb
119
122
  - lib/table_builder/column.rb
120
123
  - lib/table_builder/column_validator.rb