summaryrefslogtreecommitdiff
path: root/repo.proto
blob: 19f62e10262efe414bf5b4da7d10691899cd7430 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
syntax = "proto3";

package gitpb;

// stores information about git repos
// If the project is in golang, also gets the go language dependacies

import "gitTag.proto";
import "goDep.proto";
import "google/protobuf/timestamp.proto"; // Import the well-known type for Timestamp

// global settings for autogenpb `autogenpb:mutex`

message Repo {						// `autogenpb:marshal`
	string 	fullPath			= 1;	// `autogenpb:unique` 	// the actual path to the .git directory: '/home/devel/golang.org/x/tools'
	string 	masterBranchName		= 3; 		// git 'main' or 'master' branch name
	string 	develBranchName			= 4; 		// whatever the git 'devel' branch name is
	string 	userBranchName			= 5; 		// whatever your username branch is
	bool	dirty				= 6;		// if git says things have been changed
	string	URL				= 7; 		// the URL
	GitTags tags				= 8;		// known tags
        GitTimes   times			= 9; 		// store all the mtime values here. these are temporary
        GoInfo  goInfo  			= 10; 		// put all the go specifcs here
	GoDeps	goDeps 				= 11;		// what is in the go.sum file
	string 	currentBranchName		= 12; 		// the branch currently checked out
	string 	currentBranchVersion		= 13; 		// the branch currently checked out
	string	lastTag 			= 14; 		// the oldest tag
	string	targetVersion			= 15; 		// useful during the package release process
	bool	readOnly			= 16; 		// tracks access to 'git push'
	string	desc				= 17; 		// what is this repo?
	string	stateChange           		= 18; 		// used for debugging tool logic
	string 	masterVersion   		= 19; 		// just store this for now
	string 	develVersion			= 20; 		//
	string 	userVersion			= 21; 		//
	repeated string	dirtyList		= 22;		// store the list from git status --porcelain
	string	state           		= 23; 		// status or state. useful for building tooling
}

message Repos {				// `autogenpb:marshal`
	string   uuid	        = 1;    // `autogenpb:uuid:8daaeba1-fb1f-4762-ae6e-95a55d352673`
	string   version        = 2;    // maybe can be used for protobuf schema change violations
	repeated Repo repos 	= 3;
}

// should it be done this way?
message GitTimes {
	google.protobuf.Timestamp lastPull	= 1;		// last time a git pull was done
	google.protobuf.Timestamp lastUpdate	= 2;		// when was ReloadGit() last done
	google.protobuf.Timestamp lastDirty	= 3;		// last time CheckDirty() was run
	google.protobuf.Timestamp mtimeDir	= 4;		// mtime for ./git // maybe useful to track
	google.protobuf.Timestamp mtimeHead	= 5;		// mtime for ./git/HEAD // these two mtimes allow really fast checks to see if git has changed
	google.protobuf.Timestamp mtimeIndex    = 6;		// mtime for ./git/HEAD // probably always in sync with HEAD
	google.protobuf.Timestamp mtimeFetch    = 7;		// mtime for ./git/FETCH_HEAD // last time 'git fetch' or 'git pull' was run on current branch?
	google.protobuf.Timestamp lastGoDep     = 8;		// mtime for last go.sum scan
	google.protobuf.Timestamp newestCommit  = 9;		// when the newest commit was
}

// this is probably better. think about moving to this instead
message GoInfo {
	string	goPath				= 1;		// the logical path as used by golang: 'go.wit.com/apps/helloworld'
	string	desc				= 2; 		// what is this repo?
	bool	goLibrary 			= 3;		// is this a golang library?
	bool	goBinary  			= 4;		// is this a golang binary?
	bool	goPrimitive		 	= 5;		// if this is a golang primitive (only has go.mod)
	bool	goPlugin			= 6;		// is this a golang plugin?
	bool	goProtobuf			= 7;		// autogen go files from .proto
	GoDeps	goDeps 				= 8;		// what is in the go.sum file
	GoDeps	published			= 9;		// the last published go.mod/go.sum
	bytes	goMod				= 10; 		// the last go.mod file
	bytes	goSum				= 11; 		// the last go.sum file
	bool	gitIgnoresGoSum                 = 12;		// does .gitignore ignore go.mod & go.sum?
}