gpr 0.2.0 → 0.3.0

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: ccf15fbb208df9bd4a2ebc336f43d9ee47de666f
4
- data.tar.gz: 7c2257355c1f466e54a15710dd73f218867a9cec
3
+ metadata.gz: 181c099a71a4666961a12dfd1c559b07474aeef6
4
+ data.tar.gz: ba1d71e33a3c878c7aef476b0d32e827e60c0c95
5
5
  SHA512:
6
- metadata.gz: fee681930b621356143e8df951fa3355d2761505082bab2a93b3006cd15236f57b7140eb926138db08fa7ae49fa419fa9530476322e51f50de8632730f589f7d
7
- data.tar.gz: d222565492c05cf9ede05b325da4cc246119e123c62ebf3b26277466bbacc2ac20e760520edcaedba6ac26b142d8c49021ae51cec40b4f621abfa0abdbfa8480
6
+ metadata.gz: f03d43703e429f2578aedca31c5f1c35690cc088364e7977eb1442c8deceab7e5155575deb66b4bde74f616108474510b9f2488da20962212632603303bd197a
7
+ data.tar.gz: b67c9620dda2bac8bb686dcd83e794b63bdc0d37a28cd7071fe74907b74276ee991e9748d198909e43ddf64735543c00d81dc2d52bcaf438418054adb6f8243e
data/README.md CHANGED
@@ -49,82 +49,6 @@ Options:
49
49
  Show all registered repositories
50
50
  ```
51
51
 
52
- ### Select a repository using the interactive interface
53
-
54
- ```sh
55
- $ gpr select
56
- ```
57
-
58
- Possible use as this.
59
-
60
- ![select](http://kaihar4.com/images/github.com/kaihar4/gpr/select.gif)
61
-
62
- Other benefits is [here](#convenient-aliases).
63
-
64
- ### Show your contributions of registered repositories
65
-
66
- Display in graph format.
67
-
68
- ```sh
69
- $ gpr contrib
70
- ```
71
-
72
- ![contrib](http://kaihar4.com/images/github.com/kaihar4/gpr/contrib.png)
73
-
74
- ### Show the status of all registered repositories
75
-
76
- You can check the status of the registered repositories at a glance.
77
-
78
- ```sh
79
- $ gpr status
80
- ```
81
-
82
- ![status](http://kaihar4.com/images/github.com/kaihar4/gpr/status.png)
83
-
84
- ### Search the specified keyword in registered repositories
85
-
86
- Show a list of the files that the specified keyword is included.
87
-
88
- ```
89
- Usage:
90
- gpr search
91
-
92
- Options:
93
- -f, [--file=FILE] # Filter by filename
94
- -h, [--host=HOST] # Filter by host
95
- -r, [--repository=REPOSITORY] # Filter by repository
96
-
97
- Search the specified keyword in registered repositories
98
- ```
99
-
100
- ![search](http://kaihar4.com/images/github.com/kaihar4/gpr/search.png)
101
-
102
- ### Update the database to be used for search
103
-
104
- ```sh
105
- $ gpr update
106
- ```
107
-
108
- ### Fetch all registered repositories
109
-
110
- ```sh
111
- # e.g. gpr fetch origin
112
- $ gpr fetch <remote repository>
113
- ```
114
-
115
- Also possible to specify the branch.
116
-
117
- ```sh
118
- # e.g. gpr fetch origin master
119
- $ gpr fetch <remote repository> <branch>
120
- ```
121
-
122
- If you run for short, it means `gpr fetch origin`.
123
-
124
- ```sh
125
- $ gpr fetch
126
- ```
127
-
128
52
  ## Configuration
129
53
 
130
54
  ### Change the directory to be cloned
@@ -132,25 +56,3 @@ $ gpr fetch
132
56
  ```sh
133
57
  $ export GPR_ROOT=$HOME/develop
134
58
  ```
135
-
136
- ### Install the zsh completion
137
-
138
- ```sh
139
- $ gpr get https://github.com/kaihar4/gpr.git
140
- $ cd $HOME/.gpr/github.com/kaihar4/gpr
141
- $ rake zsh:install
142
- $ source ~/.zshrc
143
- ```
144
-
145
- ### Convenient aliases
146
-
147
- ```sh
148
- # Change Directory to a directory that you specify
149
- alias gcd='cd $(gpr select)'
150
- # Remove a directory that you specify
151
- alias grm='rm -rf $(gpr select)'
152
-
153
- # And more...
154
- alias gcontrib='gpr contrib $(gpr select)'
155
- alias gfetch='gpr fetch $(gpr select)'
156
- ```
data/gpr.gemspec CHANGED
@@ -17,10 +17,7 @@ Gem::Specification.new do |spec|
17
17
  spec.require_paths = ['lib']
18
18
 
19
19
  spec.add_dependency 'thor'
20
- spec.add_dependency 'rroonga'
21
20
  spec.add_dependency 'safe_colorize'
22
- spec.add_dependency 'ifilter'
23
- spec.add_dependency 'utils_drawer'
24
21
 
25
22
  spec.add_development_dependency 'bundler', '~> 1.6'
26
23
  spec.add_development_dependency 'rake'
data/lib/gpr/main.rb CHANGED
@@ -4,11 +4,6 @@ require 'gpr/action'
4
4
  require 'gpr/commands/base'
5
5
  require 'gpr/commands/get'
6
6
  require 'gpr/commands/list'
7
- require 'gpr/commands/select'
8
- require 'gpr/commands/search'
9
- require 'gpr/commands/status'
10
- require 'gpr/commands/contrib'
11
- require 'gpr/commands/fetch'
12
7
  require 'gpr/commands/version'
13
8
 
14
9
  Bundler.require
data/lib/gpr/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Gpr
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.0'
3
3
  end
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.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - kaihar4
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-25 00:00:00.000000000 Z
11
+ date: 2015-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: rroonga
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: safe_colorize
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -52,34 +38,6 @@ dependencies:
52
38
  - - ">="
53
39
  - !ruby/object:Gem::Version
54
40
  version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: ifilter
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: utils_drawer
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
41
  - !ruby/object:Gem::Dependency
84
42
  name: bundler
85
43
  requirement: !ruby/object:Gem::Requirement
@@ -125,21 +83,12 @@ files:
125
83
  - gpr.gemspec
126
84
  - lib/gpr.rb
127
85
  - lib/gpr/action.rb
128
- - lib/gpr/actions/contrib.rb
129
- - lib/gpr/actions/search.rb
130
86
  - lib/gpr/commands/base.rb
131
- - lib/gpr/commands/contrib.rb
132
- - lib/gpr/commands/fetch.rb
133
87
  - lib/gpr/commands/get.rb
134
88
  - lib/gpr/commands/list.rb
135
- - lib/gpr/commands/search.rb
136
- - lib/gpr/commands/select.rb
137
- - lib/gpr/commands/status.rb
138
89
  - lib/gpr/commands/version.rb
139
- - lib/gpr/git_helper.rb
140
90
  - lib/gpr/main.rb
141
91
  - lib/gpr/version.rb
142
- - zsh/gpr.zsh
143
92
  homepage: https://github.com/kaihar4/gpr
144
93
  licenses:
145
94
  - MIT
@@ -1,14 +0,0 @@
1
- module Gpr
2
- module Actions
3
- module Contrib
4
- def detect_git_user
5
- git_user = File.open("#{ENV['HOME']}/.gitconfig", 'r') do |f|
6
- body = f.read
7
- body.match(/name\s+=\s+(?<username>.+)/)[:username]
8
- end
9
-
10
- git_user
11
- end
12
- end
13
- end
14
- end
@@ -1,52 +0,0 @@
1
- require 'fileutils'
2
-
3
- require 'groonga'
4
-
5
- require 'gpr/git_helper'
6
-
7
- module Gpr
8
- module Actions
9
- module Search
10
- DB_PATH = "#{::Gpr::APP_PATH}/.database"
11
-
12
- def initialize_groonga
13
- if FileTest.exist?("#{DB_PATH}/gpr.db")
14
- Groonga::Database.open("#{DB_PATH}/gpr.db")
15
- else
16
- FileUtils.mkdir_p(DB_PATH)
17
- Groonga::Context.default_options = { encoding: :utf8 }
18
- Groonga::Database.create(path: "#{DB_PATH}/gpr.db")
19
- Groonga::Schema.create_table('Files', type: :patricia_trie) do |t|
20
- t.text('filename')
21
- t.text('body')
22
- t.text('host')
23
- t.text('repository')
24
- end
25
- Groonga::Schema.create_table(
26
- 'Terms',
27
- type: :patricia_trie,
28
- normalizer: :NormalizerAuto,
29
- default_tokenizer: 'TokenBigramSplitSymbolAlpha'
30
- ) do |t|
31
- t.index('Files.body')
32
- end
33
- end
34
- end
35
-
36
- def add_file(path)
37
- repo_info = parse_repository(path)
38
-
39
- GitHelper.ls_files(path).each do |file|
40
- next unless FileTest.file?(file)
41
- Groonga['Files'].add(
42
- File.expand_path(file),
43
- filename: File.basename(file),
44
- body: File.open(file).read,
45
- host: repo_info[:host],
46
- repository: repo_info[:repository]
47
- )
48
- end
49
- end
50
- end
51
- end
52
- end
@@ -1,51 +0,0 @@
1
- require 'utils_drawer'
2
-
3
- require 'gpr/git_helper'
4
- require 'gpr/actions/contrib'
5
-
6
- module Gpr
7
- module Commands
8
- class Contrib < Base
9
- def initialize(thor)
10
- thor.class_eval do
11
- include UtilsDrawer
12
- include ::Gpr::Actions::Contrib
13
-
14
- desc 'contrib', 'Show your contributions of registered repositories'
15
- def contrib(path = nil)
16
- user = detect_git_user || ENV['USER']
17
-
18
- if path.nil?
19
- repositories = repository_list
20
- dates = repositories.each_with_object([]) { |repository, ary|
21
- ary << GitHelper.log_by_date(repository, user)
22
- }.flatten!
23
- else
24
- dates = GitHelper.log_by_date(path, user)
25
- end
26
-
27
- first_date = Time.parse(dates.sort.first)
28
- diff = ((Time.now - first_date).to_i / 86400) + 1
29
-
30
- # Initialize a hash
31
- commit_counts = diff.times.each_with_object({}) do |index, hash|
32
- date = Time.at(first_date + (86400 * index)).strftime('%Y-%m-%d')
33
- hash[date] = 0
34
- end
35
-
36
- # Count commits
37
- dates.each do |date|
38
- commit_counts[date] += 1 if commit_counts[date]
39
- end
40
-
41
- graph do
42
- commit_counts.sort.each do |date, value|
43
- data(date, value)
44
- end
45
- end
46
- end
47
- end
48
- end
49
- end
50
- end
51
- end
@@ -1,35 +0,0 @@
1
- require 'safe_colorize'
2
-
3
- require 'gpr/git_helper'
4
-
5
- module Gpr
6
- module Commands
7
- class Fetch < Base
8
- using SafeColorize
9
-
10
- def initialize(thor)
11
- thor.class_eval do
12
- desc 'fetch', 'Fetch the registered repositories'
13
- def fetch(remote = 'origin', branch = nil, path = nil)
14
- if path.nil?
15
- repositories = repository_list
16
- repositories.each do |repository|
17
- repo_info = parse_repository(repository)
18
-
19
- puts "#{repo_info[:host].color(:yellow)} - #{repo_info[:repository].color(:blue)}"
20
-
21
- GitHelper.fetch(repository, remote, branch)
22
- end
23
- else
24
- repo_info = parse_repository(path)
25
-
26
- puts "#{repo_info[:host].color(:yellow)} - #{repo_info[:repository].color(:blue)}"
27
-
28
- GitHelper.fetch(path, remote, branch)
29
- end
30
- end
31
- end
32
- end
33
- end
34
- end
35
- end
@@ -1,60 +0,0 @@
1
- require 'groonga'
2
- require 'safe_colorize'
3
-
4
- require 'gpr/actions/search'
5
-
6
- module Gpr
7
- module Commands
8
- class Search < Base
9
- using SafeColorize
10
- include ::Gpr::Actions::Search
11
-
12
- def initialize(thor)
13
- initialize_groonga
14
-
15
- thor.class_eval do
16
- include ::Gpr::Actions::Search
17
-
18
- desc 'search', 'Search the specified keyword in registered repositories'
19
- option :file, type: :string, aliases: '-f', desc: 'Filter by filename'
20
- option :host, type: :string, aliases: '-h', desc: 'Filter by host'
21
- option :repository, type: :string, aliases: '-r', desc: 'Filter by repository'
22
- def search(string)
23
- result = Groonga['Files'].select do |record|
24
- record.body =~ string
25
- end
26
-
27
- result.each do |record|
28
- next unless FileTest.exist?(record._key)
29
-
30
- next if options[:file] && !(record.filename =~ /#{options[:file]}/)
31
- next if options[:host] && !(record.host == options[:host])
32
- next if options[:repository] && !(record.repository == options[:repository])
33
-
34
- relative_path = record._key.sub(/#{::Gpr::APP_PATH}\/#{record.host}\/#{record.repository}\//, '')
35
- puts "#{record.host.color(:yellow)} - #{record.repository.color(:blue)} : #{relative_path.color(:red)}"
36
- end
37
- end
38
-
39
- desc 'update', 'Update the database to be used for search'
40
- def update
41
- puts 'Updating...'
42
-
43
- Groonga['Files'].truncate
44
-
45
- # Remove unregistered directories
46
- Dir.glob("#{::Gpr::APP_PATH}/*/*").each do |path|
47
- # Unregistered directories returns [".", ".."].
48
- Dir.rmdir(path) if Dir.entries(path).size == 2
49
- end
50
-
51
- repositories = repository_list
52
- repositories.each do |repository|
53
- add_file(repository)
54
- end
55
- end
56
- end
57
- end
58
- end
59
- end
60
- end
@@ -1,17 +0,0 @@
1
- require 'ifilter'
2
-
3
- module Gpr
4
- module Commands
5
- class Select < Base
6
- def initialize(thor)
7
- thor.class_eval do
8
- desc 'select', 'Select a repository using the interactive interface'
9
- def select
10
- repositories = repository_list
11
- puts Ifilter.filtering(repositories)
12
- end
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,38 +0,0 @@
1
- require 'utils_drawer'
2
- require 'safe_colorize'
3
-
4
- require 'gpr/git_helper'
5
-
6
- module Gpr
7
- module Commands
8
- class Status < Base
9
- using SafeColorize
10
-
11
- def initialize(thor)
12
- thor.class_eval do
13
- include UtilsDrawer
14
-
15
- desc 'status', 'Show the status of all registered repositories'
16
- def status
17
- repositories = repository_list
18
- table do
19
- row do
20
- column('REPOSITORY NAME'.style(:bold), 25)
21
- column('BRANCH STATUS'.style(:bold), 45)
22
- column('DIRECTORY STATUS'.style(:bold), 25)
23
- end
24
- repositories.each do |repository|
25
- status = GitHelper.status(repository)
26
- row do
27
- column(repository.match(/.+\/(?<repository>.+\/.+)/)[:repository])
28
- column(status[:branch])
29
- column(status[:directory])
30
- end
31
- end
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
38
- end
@@ -1,64 +0,0 @@
1
- require 'safe_colorize'
2
-
3
- module Gpr
4
- module GitHelper
5
- using SafeColorize
6
-
7
- class << self
8
- def ls_files(path)
9
- Dir.chdir(path)
10
- `git ls-files`.split("\n")
11
- end
12
-
13
- def status(path)
14
- Dir.chdir(path)
15
- result = {}
16
- git_status = `git status -sb`.split("\n")
17
- branch_name = git_status.shift.match(/## (?<branch>.+)/)[:branch]
18
- unstaged_changes = []
19
- untracked_files = []
20
-
21
- git_status.each do |file|
22
- if match_object = file.match(/^\sM (.+)$/)
23
- unstaged_changes << match_object[1]
24
- elsif match_object = file.match(/^\?\? (.+)$/)
25
- untracked_files << match_object[1]
26
- end
27
- end
28
-
29
- # Means no branch || ahead || behind
30
- if branch_name =~ /HEAD|\[.+\]/
31
- result[:branch] = branch_name.color(:red)
32
- else
33
- result[:branch] = branch_name.color(:green)
34
- end
35
-
36
- if unstaged_changes.empty? && untracked_files.empty?
37
- result[:directory] = 'Working directory clean'.color(:green)
38
- else
39
- result[:directory] = "Modified[#{unstaged_changes.size}] ??[#{untracked_files.size}]".color(:red)
40
- end
41
-
42
- result
43
- end
44
-
45
- def log_by_date(path, user = nil)
46
- Dir.chdir(path)
47
- if user.nil?
48
- `git log --date=short --pretty=format:"%cd"`.split("\n")
49
- else
50
- `git log --author=#{user} --date=short --pretty=format:"%cd"`.split("\n")
51
- end
52
- end
53
-
54
- def fetch(path, remote, branch)
55
- Dir.chdir(path)
56
- if branch.nil?
57
- `git fetch #{remote}`
58
- else
59
- `git fetch #{remote} #{branch}`
60
- end
61
- end
62
- end
63
- end
64
- end
data/zsh/gpr.zsh DELETED
@@ -1,70 +0,0 @@
1
- function _gpr () {
2
- local context curcontext=$curcontext state line
3
- declare -A opt_args
4
- local ret=1
5
-
6
- _arguments -C \
7
- '1: :__gpr_cmds' \
8
- '*:: :->args' \
9
- && ret=0
10
-
11
- case $state in
12
- (args)
13
- case $words[1] in
14
- (get)
15
- ;;
16
- (help)
17
- __gpr_cmds \
18
- && ret=0
19
- ;;
20
- (list)
21
- _arguments -C \
22
- '--paths[Show the paths of all registered repositories]' \
23
- '(-)*:: :->null_state' \
24
- && ret=0
25
- ;;
26
- (select)
27
- ;;
28
- (contrib)
29
- ;;
30
- (search)
31
- _arguments -C \
32
- '-f[Filter by filename]' \
33
- '-h[Filter by host]' \
34
- '-r[Filter by repository]' \
35
- '(-)*:: :->null_state' \
36
- && ret=0
37
- ;;
38
- (update)
39
- ;;
40
- (fetch)
41
- ;;
42
- (status)
43
- ;;
44
- (version)
45
- ;;
46
- esac
47
- ;;
48
- esac
49
-
50
- return ret
51
- }
52
-
53
- __gpr_cmds () {
54
- local -a _c
55
- _c=(
56
- 'get:Get a repository'
57
- 'help:Describe available commands or one specific command'
58
- 'list:Show all registered repositories'
59
- 'select:Select a repository using the interactive interface'
60
- 'contrib:Show your contributions of registered repositories'
61
- 'search:Search the specified keyword in registered repositories'
62
- 'update:Update the database to be used for search'
63
- 'fetch:Fetch the registered repositories'
64
- 'status:Show the status of all registered repositories'
65
- 'version:Display installed gpr version'
66
- )
67
-
68
- _describe -t commands Commands _c
69
- }
70
- compdef _gpr gpr