git-reviewer 0.1.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.
@@ -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: []