Class: Makit::Git::Repository

Inherits:
Object
  • Object
show all
Defined in:
lib/makit/git/repository.rb

Overview

This class provides methods for querying git repository state and metadata. Refactored to use protobuf messages exclusively.

Class Method Summary collapse

Class Method Details

.branchObject



58
59
60
# File 'lib/makit/git/repository.rb', line 58

def self.branch
  get_repository_state.branch
end

.ci?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/makit/git/repository.rb', line 24

def self.ci?
  get_repository_state.is_ci
end

.clean?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/makit/git/repository.rb', line 36

def self.clean?
  get_repository_state.is_clean
end

.commitauthorObject



74
75
76
# File 'lib/makit/git/repository.rb', line 74

def self.commitauthor
  get_repository_state.commit_author
end

.commitdateObject



70
71
72
# File 'lib/makit/git/repository.rb', line 70

def self.commitdate
  get_repository_state.commit_date
end

.commitemailObject



78
79
80
# File 'lib/makit/git/repository.rb', line 78

def self.commitemail
  get_repository_state.commit_email
end

.commitmsgObject



66
67
68
# File 'lib/makit/git/repository.rb', line 66

def self.commitmsg
  get_repository_state.commit_message
end

.commitshaObject



62
63
64
# File 'lib/makit/git/repository.rb', line 62

def self.commitsha
  get_repository_state.commit_sha
end

.convert_file_infos_from_proto(proto_file_infos) ⇒ Object

Convert protobuf FileInfo objects to Ruby FileInfo objects



89
90
91
92
93
94
95
96
97
# File 'lib/makit/git/repository.rb', line 89

def self.convert_file_infos_from_proto(proto_file_infos)
  proto_file_infos.map do |proto_file_info|
    Makit::FileInfo.new(
      name: proto_file_info.name,
      mtime: Time.at(proto_file_info.mtime.seconds, proto_file_info.mtime.nanos, :nsec),
      size: proto_file_info.size
    )
  end
end

.detachedObject



28
29
30
# File 'lib/makit/git/repository.rb', line 28

def self.detached
  get_repository_state.is_detached
end

.get_file_infosObject



48
49
50
51
# File 'lib/makit/git/repository.rb', line 48

def self.get_file_infos
  proto_file_infos = get_repository_state.tracked_file_infos
  convert_file_infos_from_proto(proto_file_infos)
end

.get_remote_urlObject



82
83
84
# File 'lib/makit/git/repository.rb', line 82

def self.get_remote_url
  get_repository_state.remote_url
end

.get_repository_stateObject

Get current repository state via gRPC service



13
14
15
16
17
# File 'lib/makit/git/repository.rb', line 13

def self.get_repository_state
  service = Makit::V1::Git::GitRepositoryServiceImpl.new
  request = Makit::V1::Git::GetRepositoryStateRequest.new
  service.get_repository_state(request, nil)
end

.get_untracked_file_infosObject



53
54
55
56
# File 'lib/makit/git/repository.rb', line 53

def self.get_untracked_file_infos
  proto_file_infos = get_repository_state.untracked_file_infos
  convert_file_infos_from_proto(proto_file_infos)
end

.git_repo?Boolean

Delegate all static methods to gRPC service

Returns:

  • (Boolean)


20
21
22
# File 'lib/makit/git/repository.rb', line 20

def self.git_repo?
  get_repository_state.is_git_repo
end

.read_only?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/makit/git/repository.rb', line 32

def self.read_only?
  get_repository_state.is_read_only
end

.unstaged_filesObject



40
41
42
# File 'lib/makit/git/repository.rb', line 40

def self.unstaged_files
  get_repository_state.unstaged_files.to_a
end

.untracked_filesObject



44
45
46
# File 'lib/makit/git/repository.rb', line 44

def self.untracked_files
  get_repository_state.untracked_files.to_a
end