xref: /aosp_15_r20/tools/treble/build/treble_build/app/git.go (revision 105f628577ac4ba0e277a494fbb614ed8c12a994)
1*105f6285SAndroid Build Coastguard Worker// Copyright 2022 The Android Open Source Project
2*105f6285SAndroid Build Coastguard Worker//
3*105f6285SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*105f6285SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*105f6285SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*105f6285SAndroid Build Coastguard Worker//
7*105f6285SAndroid Build Coastguard Worker//      http://www.apache.org/licenses/LICENSE-2.0
8*105f6285SAndroid Build Coastguard Worker//
9*105f6285SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*105f6285SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*105f6285SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*105f6285SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*105f6285SAndroid Build Coastguard Worker// limitations under the License.
14*105f6285SAndroid Build Coastguard Worker
15*105f6285SAndroid Build Coastguard Workerpackage app
16*105f6285SAndroid Build Coastguard Worker
17*105f6285SAndroid Build Coastguard Worker// GIT diff
18*105f6285SAndroid Build Coastguard Workertype GitDiff struct {
19*105f6285SAndroid Build Coastguard Worker	AddedLines   int  `json:"added_lines"`
20*105f6285SAndroid Build Coastguard Worker	DeletedLines int  `json:"deleted_lines"`
21*105f6285SAndroid Build Coastguard Worker	BinaryDiff   bool `json:"binary_diff"`
22*105f6285SAndroid Build Coastguard Worker}
23*105f6285SAndroid Build Coastguard Worker
24*105f6285SAndroid Build Coastguard Worker// GIT tree object (files,dirs...)
25*105f6285SAndroid Build Coastguard Workertype GitTreeObj struct {
26*105f6285SAndroid Build Coastguard Worker	Permissions string   `json:"permissions"`
27*105f6285SAndroid Build Coastguard Worker	Type        string   `json:"type"`
28*105f6285SAndroid Build Coastguard Worker	Sha         string   `json:"sha"`
29*105f6285SAndroid Build Coastguard Worker	Filename    string   `json:"filename"`
30*105f6285SAndroid Build Coastguard Worker	BranchDiff  *GitDiff `json:"branch_diff"`
31*105f6285SAndroid Build Coastguard Worker}
32*105f6285SAndroid Build Coastguard Worker
33*105f6285SAndroid Build Coastguard Worker// GitProject
34*105f6285SAndroid Build Coastguard Workertype GitProject struct {
35*105f6285SAndroid Build Coastguard Worker	RepoDir   string                 `json:"repo_dir"`    // Relative directory within repo
36*105f6285SAndroid Build Coastguard Worker	WorkDir   string                 `json:"working_dir"` // Working directory
37*105f6285SAndroid Build Coastguard Worker	GitDir    string                 `json:"git_dir"`     // GIT directory
38*105f6285SAndroid Build Coastguard Worker	Remote    string                 `json:"remote"`      // Remote Name
39*105f6285SAndroid Build Coastguard Worker	RemoteUrl string                 `json:"remote_url"`  // Remote URL
40*105f6285SAndroid Build Coastguard Worker	Revision  string                 `json:"revision"`    // Revision (SHA)
41*105f6285SAndroid Build Coastguard Worker	Files     map[string]*GitTreeObj `json:"files"`       // Files within the project
42*105f6285SAndroid Build Coastguard Worker}
43*105f6285SAndroid Build Coastguard Worker
44*105f6285SAndroid Build Coastguard Workertype GitCommitFileType int
45*105f6285SAndroid Build Coastguard Worker
46*105f6285SAndroid Build Coastguard Workerconst (
47*105f6285SAndroid Build Coastguard Worker	GitFileAdded GitCommitFileType = iota
48*105f6285SAndroid Build Coastguard Worker	GitFileModified
49*105f6285SAndroid Build Coastguard Worker	GitFileRemoved
50*105f6285SAndroid Build Coastguard Worker)
51*105f6285SAndroid Build Coastguard Worker
52*105f6285SAndroid Build Coastguard Workertype GitCommitFile struct {
53*105f6285SAndroid Build Coastguard Worker	Filename string            `json:"filename"`
54*105f6285SAndroid Build Coastguard Worker	Type     GitCommitFileType `json:"type"`
55*105f6285SAndroid Build Coastguard Worker}
56*105f6285SAndroid Build Coastguard Worker
57*105f6285SAndroid Build Coastguard Worker// Git commit
58*105f6285SAndroid Build Coastguard Workertype GitCommit struct {
59*105f6285SAndroid Build Coastguard Worker	Sha   string          `json:"sha"`
60*105f6285SAndroid Build Coastguard Worker	Files []GitCommitFile `json:"files"`
61*105f6285SAndroid Build Coastguard Worker}
62*105f6285SAndroid Build Coastguard Worker
63*105f6285SAndroid Build Coastguard Workerfunc (t GitCommitFileType) String() string {
64*105f6285SAndroid Build Coastguard Worker	switch t {
65*105f6285SAndroid Build Coastguard Worker	case GitFileModified:
66*105f6285SAndroid Build Coastguard Worker		return "M"
67*105f6285SAndroid Build Coastguard Worker	case GitFileAdded:
68*105f6285SAndroid Build Coastguard Worker		return "A"
69*105f6285SAndroid Build Coastguard Worker	case GitFileRemoved:
70*105f6285SAndroid Build Coastguard Worker		return "R"
71*105f6285SAndroid Build Coastguard Worker	}
72*105f6285SAndroid Build Coastguard Worker	return ""
73*105f6285SAndroid Build Coastguard Worker}
74