git-reviewer 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,63 @@
1
+ module GitReviewer
2
+ class Checker
3
+ # 判断当前是否在一个 Git 仓库中
4
+ def self.is_git_repository_exist?
5
+ cmd = "git rev-parse --is-inside-work-tree > /dev/null 2>&1"
6
+ success = system(cmd)
7
+ return success
8
+ end
9
+
10
+ # 判断 Git 分支是否存在
11
+ def self.is_git_branch_exist?(branch)
12
+ cmd = "git show-ref --verify --quiet refs/heads/#{branch}"
13
+ success = system(cmd)
14
+ return success
15
+ end
16
+
17
+ # 判断 {指定分支,指定文件} 是否存在
18
+ def self.is_file_exist?(branch, filename)
19
+ cmd = "git ls-tree -r #{branch} --name-only | grep '#{filename}' > /dev/null 2>&1"
20
+ success = system(cmd)
21
+ return success
22
+ end
23
+
24
+ # 判断一个文件是否为二进制文件
25
+ def self.is_file_binary?(branch, filename)
26
+ tmpfile = "/tmp/analyzer-tmp-file"
27
+ cmd = "git show #{branch}:#{filename.chomp} > #{tmpfile}"
28
+ `#{cmd}`
29
+
30
+ cmd = "file --mime #{tmpfile}"
31
+ result = `#{cmd}`
32
+
33
+ cmd = "rm #{tmpfile}"
34
+ `#{cmd}`
35
+ return result.include? 'charset=binary'
36
+ end
37
+
38
+ # 分析「指定分支、指定文件」的快照信息
39
+ def self.snapshot_of_blame_file(branch, filename)
40
+ cmd = "git blame #{branch} -l -c #{filename}"
41
+ result = `#{cmd}`
42
+ return result
43
+ end
44
+
45
+ # 分析两个分支之间修改的文件
46
+ def self.diff_files(source, target)
47
+ cmd = "git merge-base #{source} #{target}"
48
+ merge_base = `#{cmd}`
49
+ merge_base = merge_base.chomp
50
+
51
+ cmd = "git diff --name-only #{merge_base} #{source}"
52
+ result = `#{cmd}`
53
+ result = result.lines.map { |line| line.chomp }
54
+ return result
55
+ end
56
+
57
+ def self.current_git_branch
58
+ cmd = "git symbolic-ref --short HEAD"
59
+ result = `#{cmd}`
60
+ return result.chomp
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,63 @@
1
+ module GitReviewer
2
+ class Printer
3
+ @@verbose = false
4
+
5
+ # 类方法,用于访问类变量
6
+ def self.verbose
7
+ @@verbose
8
+ end
9
+
10
+ # (可选)类方法,用于设置类变量
11
+ def self.verbose=(value)
12
+ @@verbose = value
13
+ end
14
+
15
+ def self.put(content)
16
+ puts content
17
+ end
18
+
19
+ def self.red(content)
20
+ puts "\033[0;31m#{content}\033[0m"
21
+ end
22
+
23
+ def self.green(content)
24
+ puts "\033[0;32m#{content}\033[0m"
25
+ end
26
+
27
+ def self.yellow(content)
28
+ puts "\033[0;33m#{content}\033[0m"
29
+ end
30
+
31
+ def self.bold(content)
32
+ puts "\033[0;1m#{content} \033[0m"
33
+ end
34
+
35
+ def self.verbose_put(content)
36
+ if @@verbose
37
+ puts content
38
+ end
39
+ end
40
+
41
+ def self.verbose_red(content)
42
+ puts "\033[0;31m#{content}\033[0m"
43
+ end
44
+
45
+ def self.verbose_green(content)
46
+ if @@verbose
47
+ puts "\033[0;32m#{content}\033[0m"
48
+ end
49
+ end
50
+
51
+ def self.verbose_yellow(content)
52
+ if @@verbose
53
+ puts "\033[0;33m#{content}\033[0m"
54
+ end
55
+ end
56
+
57
+ def self.verbose_bold(content)
58
+ if @@verbose
59
+ puts "\033[0;1m#{content} \033[0m"
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,3 @@
1
+ module GitReviewer
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "gitreviewer/version"
4
+
5
+ module GitReviewer
6
+ class Error < StandardError; end
7
+ # Your code goes here...
8
+ autoload :Command, 'gitreviewer/command'
9
+ end
@@ -0,0 +1,6 @@
1
+ module Git
2
+ module Reviewer
3
+ VERSION: String
4
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
5
+ end
6
+ end
metadata ADDED
@@ -0,0 +1,96 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: git-reviewer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - baochuquan
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2024-05-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: claide
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.0.3
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.0.3
27
+ - !ruby/object:Gem::Dependency
28
+ name: terminal-table
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
+ description: Helps you solve the problem of who should review your code.
42
+ email:
43
+ - baochuquan@163.com
44
+ executables:
45
+ - git-reviewer
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - ".solargraph.yml"
50
+ - ".vscode/launch.json"
51
+ - Gemfile
52
+ - Gemfile.lock
53
+ - README.md
54
+ - Rakefile
55
+ - exe/git-reviewer
56
+ - lib/gitreviewer.rb
57
+ - lib/gitreviewer/algorithm/myers.rb
58
+ - lib/gitreviewer/analyze/analyzer.rb
59
+ - lib/gitreviewer/analyze/blame_tree.rb
60
+ - lib/gitreviewer/analyze/builder.rb
61
+ - lib/gitreviewer/analyze/diff_tree.rb
62
+ - lib/gitreviewer/analyze/result_item.rb
63
+ - lib/gitreviewer/command.rb
64
+ - lib/gitreviewer/config/configuration.rb
65
+ - lib/gitreviewer/option/analyze_option.rb
66
+ - lib/gitreviewer/option/init_option.rb
67
+ - lib/gitreviewer/utils/checker.rb
68
+ - lib/gitreviewer/utils/printer.rb
69
+ - lib/gitreviewer/version.rb
70
+ - sig/git/reviewer.rbs
71
+ homepage: https://github.com/baochuquan/git-reviewer
72
+ licenses: []
73
+ metadata:
74
+ homepage_uri: https://github.com/baochuquan/git-reviewer
75
+ source_code_uri: https://github.com/baochuquan/git-reviewer
76
+ changelog_uri: https://github.com/baochuquan/git-reviewer
77
+ post_install_message:
78
+ rdoc_options: []
79
+ require_paths:
80
+ - lib
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: 2.6.0
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ requirements: []
92
+ rubygems_version: 3.0.3.1
93
+ signing_key:
94
+ specification_version: 4
95
+ summary: A git plugin that can automatically analyze code reviewers.
96
+ test_files: []