Mirror of @tangled.org/core. Running on a Raspberry Pi Zero 2 (Please be gentle).

appview/{db,lexicons}: setup for pulls

authored by anirudh.fi and committed by oppi.li 0506ef79 a4684f91

+500 -54
api/tangled/cbor_gen.go

This is a binary file and will not be displayed.

api/tangled/pullcomment.go

This is a binary file and will not be displayed.

api/tangled/pullpatch.go

This is a binary file and will not be displayed.

api/tangled/pullstate.go

This is a binary file and will not be displayed.

api/tangled/stateclosed.go

This is a binary file and will not be displayed.

api/tangled/statemerged.go

This is a binary file and will not be displayed.

api/tangled/stateopen.go

This is a binary file and will not be displayed.

+30
appview/db/db.go
··· 103 103 unique(issue_id, comment_id), 104 104 foreign key (repo_at, issue_id) references issues(repo_at, issue_id) on delete cascade 105 105 ); 106 + create table if not exists pulls ( 107 + id integer primary key autoincrement, 108 + owner_did text not null, 109 + repo_at text not null, 110 + pull_id integer not null, 111 + title text not null, 112 + patch text, 113 + patch_at text not null, 114 + open integer not null default 1, 115 + created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), 116 + unique(repo_at, pull_id), 117 + foreign key (repo_at) references repos(at_uri) on delete cascade 118 + ); 119 + create table if not exists pull_comments ( 120 + id integer primary key autoincrement, 121 + owner_did text not null, 122 + pull_id integer not null, 123 + repo_at text not null, 124 + comment_id integer not null, 125 + comment_at text not null, 126 + body text not null, 127 + created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')), 128 + unique(pull_id, comment_id), 129 + foreign key (repo_at, pull_id) references pulls(repo_at, pull_id) on delete cascade 130 + ); 106 131 create table if not exists _jetstream ( 107 132 id integer primary key autoincrement, 108 133 last_time_us integer not null ··· 136 111 create table if not exists repo_issue_seqs ( 137 112 repo_at text primary key, 138 113 next_issue_id integer not null default 1 114 + ); 115 + 116 + create table if not exists repo_pull_seqs ( 117 + repo_at text primary key, 118 + next_pull_id integer not null default 1 139 119 ); 140 120 141 121 create table if not exists stars (
+254
appview/db/pulls.go
··· 1 + package db 2 + 3 + import ( 4 + "database/sql" 5 + "time" 6 + 7 + "github.com/bluesky-social/indigo/atproto/syntax" 8 + ) 9 + 10 + type Pulls struct { 11 + ID int `json:"id"` 12 + OwnerDid string `json:"owner_did"` 13 + RepoAt string `json:"repo_at"` 14 + PullId int `json:"pull_id"` 15 + Title string `json:"title"` 16 + Patch string `json:"patch,omitempty"` 17 + PatchAt string `json:"patch_at"` 18 + Open int `json:"open"` 19 + Created time.Time `json:"created"` 20 + } 21 + 22 + type PullComments struct { 23 + ID int `json:"id"` 24 + OwnerDid string `json:"owner_did"` 25 + PullId int `json:"pull_id"` 26 + RepoAt string `json:"repo_at"` 27 + CommentId int `json:"comment_id"` 28 + CommentAt string `json:"comment_at"` 29 + Body string `json:"body"` 30 + Created time.Time `json:"created"` 31 + } 32 + 33 + func NewPull(tx *sql.Tx, pull *Pulls) error { 34 + defer tx.Rollback() 35 + 36 + _, err := tx.Exec(` 37 + insert or ignore into repo_pull_seqs (repo_at, next_pull_id) 38 + values (?, 1) 39 + `, pull.RepoAt) 40 + if err != nil { 41 + return err 42 + } 43 + 44 + var nextId int 45 + err = tx.QueryRow(` 46 + update repo_pull_seqs 47 + set next_pull_id = next_pull_id + 1 48 + where repo_at = ? 49 + returning next_pull_id - 1 50 + `, pull.RepoAt).Scan(&nextId) 51 + if err != nil { 52 + return err 53 + } 54 + 55 + pull.PullId = nextId 56 + 57 + _, err = tx.Exec(` 58 + insert into pulls (repo_at, owner_did, pull_id, title, patch) 59 + values (?, ?, ?, ?, ?) 60 + `, pull.RepoAt, pull.OwnerDid, pull.PullId, pull.Title, pull.Patch) 61 + if err != nil { 62 + return err 63 + } 64 + 65 + if err := tx.Commit(); err != nil { 66 + return err 67 + } 68 + 69 + return nil 70 + } 71 + 72 + func SetPullAt(e Execer, repoAt syntax.ATURI, pullId int, pullAt string) error { 73 + _, err := e.Exec(`update pulls set patch_at = ? where repo_at = ? and pull_id = ?`, pullAt, repoAt, pullId) 74 + return err 75 + } 76 + 77 + func GetPullAt(e Execer, repoAt syntax.ATURI, pullId int) (string, error) { 78 + var pullAt string 79 + err := e.QueryRow(`select patch_at from pulls where repo_at = ? and pull_id = ?`, repoAt, pullId).Scan(&pullAt) 80 + return pullAt, err 81 + } 82 + 83 + func GetPullId(e Execer, repoAt syntax.ATURI) (int, error) { 84 + var pullId int 85 + err := e.QueryRow(`select next_pull_id from repo_pull_seqs where repo_at = ?`, repoAt).Scan(&pullId) 86 + return pullId - 1, err 87 + } 88 + 89 + func GetPullOwnerDid(e Execer, repoAt syntax.ATURI, pullId int) (string, error) { 90 + var ownerDid string 91 + err := e.QueryRow(`select owner_did from pulls where repo_at = ? and pull_id = ?`, repoAt, pullId).Scan(&ownerDid) 92 + return ownerDid, err 93 + } 94 + 95 + func GetPulls(e Execer, repoAt syntax.ATURI) ([]Pulls, error) { 96 + var pulls []Pulls 97 + 98 + rows, err := e.Query(`select owner_did, pull_id, created, title, patch, open from pulls where repo_at = ? order by created desc`, repoAt) 99 + if err != nil { 100 + return nil, err 101 + } 102 + defer rows.Close() 103 + 104 + for rows.Next() { 105 + var pull Pulls 106 + var createdAt string 107 + err := rows.Scan(&pull.OwnerDid, &pull.PullId, &createdAt, &pull.Title, &pull.Patch, &pull.Open) 108 + if err != nil { 109 + return nil, err 110 + } 111 + 112 + createdTime, err := time.Parse(time.RFC3339, createdAt) 113 + if err != nil { 114 + return nil, err 115 + } 116 + pull.Created = createdTime 117 + 118 + pulls = append(pulls, pull) 119 + } 120 + 121 + if err := rows.Err(); err != nil { 122 + return nil, err 123 + } 124 + 125 + return pulls, nil 126 + } 127 + 128 + func GetPull(e Execer, repoAt syntax.ATURI, pullId int) (*Pulls, error) { 129 + query := `select owner_did, created, title, patch, open from pulls where repo_at = ? and pull_id = ?` 130 + row := e.QueryRow(query, repoAt, pullId) 131 + 132 + var pull Pulls 133 + var createdAt string 134 + err := row.Scan(&pull.OwnerDid, &createdAt, &pull.Title, &pull.Patch, &pull.Open) 135 + if err != nil { 136 + return nil, err 137 + } 138 + 139 + createdTime, err := time.Parse(time.RFC3339, createdAt) 140 + if err != nil { 141 + return nil, err 142 + } 143 + pull.Created = createdTime 144 + 145 + return &pull, nil 146 + } 147 + 148 + func GetPullWithComments(e Execer, repoAt syntax.ATURI, pullId int) (*Pulls, []PullComments, error) { 149 + query := `select owner_did, pull_id, created, title, patch, open from pulls where repo_at = ? and pull_id = ?` 150 + row := e.QueryRow(query, repoAt, pullId) 151 + 152 + var pull Pulls 153 + var createdAt string 154 + err := row.Scan(&pull.OwnerDid, &pull.PullId, &createdAt, &pull.Title, &pull.Patch, &pull.Open) 155 + if err != nil { 156 + return nil, nil, err 157 + } 158 + 159 + createdTime, err := time.Parse(time.RFC3339, createdAt) 160 + if err != nil { 161 + return nil, nil, err 162 + } 163 + pull.Created = createdTime 164 + 165 + comments, err := GetPullComments(e, repoAt, pullId) 166 + if err != nil { 167 + return nil, nil, err 168 + } 169 + 170 + return &pull, comments, nil 171 + } 172 + 173 + func NewPullComment(e Execer, comment *PullComments) error { 174 + query := `insert into pull_comments (owner_did, repo_at, comment_at, pull_id, comment_id, body) values (?, ?, ?, ?, ?, ?)` 175 + _, err := e.Exec( 176 + query, 177 + comment.OwnerDid, 178 + comment.RepoAt, 179 + comment.CommentAt, 180 + comment.PullId, 181 + comment.CommentId, 182 + comment.Body, 183 + ) 184 + return err 185 + } 186 + 187 + func GetPullComments(e Execer, repoAt syntax.ATURI, pullId int) ([]PullComments, error) { 188 + var comments []PullComments 189 + 190 + rows, err := e.Query(`select owner_did, pull_id, comment_id, comment_at, body, created from pull_comments where repo_at = ? and pull_id = ? order by created asc`, repoAt, pullId) 191 + if err == sql.ErrNoRows { 192 + return []PullComments{}, nil 193 + } 194 + if err != nil { 195 + return nil, err 196 + } 197 + defer rows.Close() 198 + 199 + for rows.Next() { 200 + var comment PullComments 201 + var createdAt string 202 + err := rows.Scan(&comment.OwnerDid, &comment.PullId, &comment.CommentId, &comment.CommentAt, &comment.Body, &createdAt) 203 + if err != nil { 204 + return nil, err 205 + } 206 + 207 + createdAtTime, err := time.Parse(time.RFC3339, createdAt) 208 + if err != nil { 209 + return nil, err 210 + } 211 + comment.Created = createdAtTime 212 + 213 + comments = append(comments, comment) 214 + } 215 + 216 + if err := rows.Err(); err != nil { 217 + return nil, err 218 + } 219 + 220 + return comments, nil 221 + } 222 + 223 + func ClosePull(e Execer, repoAt syntax.ATURI, pullId int) error { 224 + _, err := e.Exec(`update pulls set open = 0 where repo_at = ? and pull_id = ?`, repoAt, pullId) 225 + return err 226 + } 227 + 228 + func ReopenPull(e Execer, repoAt syntax.ATURI, pullId int) error { 229 + _, err := e.Exec(`update pulls set open = 1 where repo_at = ? and pull_id = ?`, repoAt, pullId) 230 + return err 231 + } 232 + 233 + type PullCount struct { 234 + Open int 235 + Closed int 236 + } 237 + 238 + func GetPullCount(e Execer, repoAt syntax.ATURI) (PullCount, error) { 239 + row := e.QueryRow(` 240 + select 241 + count(case when open = 1 then 1 end) as open_count, 242 + count(case when open = 0 then 1 end) as closed_count 243 + from pulls 244 + where repo_at = ?`, 245 + repoAt, 246 + ) 247 + 248 + var count PullCount 249 + if err := row.Scan(&count.Open, &count.Closed); err != nil { 250 + return PullCount{0, 0}, err 251 + } 252 + 253 + return count, nil 254 + }
+19
appview/state/signer.go
··· 155 155 156 156 return s.client.Do(req) 157 157 } 158 + 159 + func (s *SignedClient) Merge(patch []byte, ownerDid, targetRepo, branch string) (*http.Response, error) { 160 + const ( 161 + Method = "POST" 162 + ) 163 + endpoint := fmt.Sprintf("/%s/%s/merge", ownerDid, targetRepo) 164 + 165 + body, _ := json.Marshal(map[string]interface{}{ 166 + "patch": string(patch), 167 + "branch": branch, 168 + }) 169 + 170 + req, err := s.newRequest(Method, endpoint, body) 171 + if err != nil { 172 + return nil, err 173 + } 174 + 175 + return s.client.Do(req) 176 + }
+3
cmd/gen.go
··· 22 22 shtangled.RepoIssueState{}, 23 23 shtangled.RepoIssue{}, 24 24 shtangled.Repo{}, 25 + shtangled.RepoPullPatch{}, 26 + shtangled.RepoPullState{}, 27 + shtangled.RepoPullComment{}, 25 28 ); err != nil { 26 29 panic(err) 27 30 }
+14 -14
go.mod
··· 1 1 module github.com/sotangled/tangled 2 2 3 - go 1.23 3 + go 1.23.0 4 4 5 - toolchain go1.23.4 5 + toolchain go1.23.6 6 6 7 7 require ( 8 8 github.com/Blank-Xu/sql-adapter v1.1.1 9 9 github.com/alecthomas/chroma/v2 v2.15.0 10 - github.com/bluekeyes/go-gitdiff v0.8.0 10 + github.com/bluekeyes/go-gitdiff v0.8.1 11 11 github.com/bluesky-social/indigo v0.0.0-20250123072624-9e3b84fdbb20 12 12 github.com/bluesky-social/jetstream v0.0.0-20241210005130-ea96859b93d1 13 13 github.com/casbin/casbin/v2 v2.103.0 14 - github.com/cyphar/filepath-securejoin v0.3.3 14 + github.com/cyphar/filepath-securejoin v0.4.1 15 15 github.com/dgraph-io/ristretto v0.2.0 16 16 github.com/dustin/go-humanize v1.0.1 17 17 github.com/gliderlabs/ssh v0.3.5 18 18 github.com/go-chi/chi/v5 v5.2.0 19 - github.com/go-git/go-git/v5 v5.12.0 19 + github.com/go-git/go-git/v5 v5.14.0 20 20 github.com/gorilla/sessions v1.4.0 21 21 github.com/ipfs/go-cid v0.4.1 22 22 github.com/mattn/go-sqlite3 v1.14.24 ··· 24 24 github.com/sethvargo/go-envconfig v1.1.0 25 25 github.com/whyrusleeping/cbor-gen v0.2.1-0.20241030202151-b7a6831be65e 26 26 github.com/yuin/goldmark v1.4.13 27 + golang.org/x/crypto v0.36.0 27 28 golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 28 29 ) 29 30 30 31 require ( 31 32 github.com/Microsoft/go-winio v0.6.2 // indirect 32 - github.com/ProtonMail/go-crypto v1.0.0 // indirect 33 + github.com/ProtonMail/go-crypto v1.1.6 // indirect 33 34 github.com/acomagu/bufpipe v1.0.4 // indirect 34 35 github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect 35 36 github.com/aymerick/douceur v0.2.0 // indirect ··· 39 38 github.com/carlmjohnson/versioninfo v0.22.5 // indirect 40 39 github.com/casbin/govaluate v1.3.0 // indirect 41 40 github.com/cespare/xxhash/v2 v2.3.0 // indirect 42 - github.com/cloudflare/circl v1.4.0 // indirect 41 + github.com/cloudflare/circl v1.6.0 // indirect 43 42 github.com/davecgh/go-spew v1.1.1 // indirect 44 43 github.com/dlclark/regexp2 v1.11.5 // indirect 45 44 github.com/emirpasic/gods v1.18.1 // indirect 46 45 github.com/felixge/httpsnoop v1.0.4 // indirect 47 46 github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect 48 - github.com/go-git/go-billy/v5 v5.5.0 // indirect 47 + github.com/go-git/go-billy/v5 v5.6.2 // indirect 49 48 github.com/go-logr/logr v1.4.1 // indirect 50 49 github.com/go-logr/stdr v1.2.2 // indirect 51 50 github.com/goccy/go-json v0.10.2 // indirect ··· 84 83 github.com/multiformats/go-multihash v0.2.3 // indirect 85 84 github.com/multiformats/go-varint v0.0.7 // indirect 86 85 github.com/opentracing/opentracing-go v1.2.0 // indirect 87 - github.com/pjbgf/sha1cd v0.3.0 // indirect 86 + github.com/pjbgf/sha1cd v0.3.2 // indirect 88 87 github.com/pkg/errors v0.9.1 // indirect 89 88 github.com/pmezard/go-difflib v1.0.0 // indirect 90 89 github.com/polydawn/refmt v0.89.1-0.20221221234430-40501e09de1f // indirect ··· 93 92 github.com/prometheus/common v0.54.0 // indirect 94 93 github.com/prometheus/procfs v0.15.1 // indirect 95 94 github.com/sergi/go-diff v1.3.1 // indirect 96 - github.com/skeema/knownhosts v1.3.0 // indirect 95 + github.com/skeema/knownhosts v1.3.1 // indirect 97 96 github.com/spaolacci/murmur3 v1.1.0 // indirect 98 - github.com/stretchr/testify v1.9.0 // indirect 97 + github.com/stretchr/testify v1.10.0 // indirect 99 98 github.com/xanzy/ssh-agent v0.3.3 // indirect 100 99 gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b // indirect 101 100 gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect ··· 106 105 go.uber.org/atomic v1.11.0 // indirect 107 106 go.uber.org/multierr v1.11.0 // indirect 108 107 go.uber.org/zap v1.26.0 // indirect 109 - golang.org/x/crypto v0.32.0 // indirect 110 - golang.org/x/net v0.33.0 // indirect 111 - golang.org/x/sys v0.29.0 // indirect 108 + golang.org/x/net v0.37.0 // indirect 109 + golang.org/x/sys v0.31.0 // indirect 112 110 golang.org/x/time v0.5.0 // indirect 113 111 google.golang.org/protobuf v1.34.2 // indirect 114 112 gopkg.in/warnings.v0 v0.1.2 // indirect
+30 -40
go.sum
··· 5 5 github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= 6 6 github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= 7 7 github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= 8 - github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= 9 - github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= 8 + github.com/ProtonMail/go-crypto v1.1.6 h1:ZcV+Ropw6Qn0AX9brlQLAUXfqLBc7Bl+f/DmNxpLfdw= 9 + github.com/ProtonMail/go-crypto v1.1.6/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= 10 10 github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= 11 11 github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= 12 12 github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= ··· 24 24 github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= 25 25 github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= 26 26 github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= 27 - github.com/bluekeyes/go-gitdiff v0.8.0 h1:Nn1wfw3/XeKoc3lWk+2bEXGUHIx36kj80FM1gVcBk+o= 28 - github.com/bluekeyes/go-gitdiff v0.8.0/go.mod h1:WWAk1Mc6EgWarCrPFO+xeYlujPu98VuLW3Tu+B/85AE= 27 + github.com/bluekeyes/go-gitdiff v0.8.1 h1:lL1GofKMywO17c0lgQmJYcKek5+s8X6tXVNOLxy4smI= 28 + github.com/bluekeyes/go-gitdiff v0.8.1/go.mod h1:WWAk1Mc6EgWarCrPFO+xeYlujPu98VuLW3Tu+B/85AE= 29 29 github.com/bluesky-social/indigo v0.0.0-20250123072624-9e3b84fdbb20 h1:yHusfYYi8odoCcsI6AurU+dRWb7itHAQNwt3/Rl9Vfs= 30 30 github.com/bluesky-social/indigo v0.0.0-20250123072624-9e3b84fdbb20/go.mod h1:Qp4YqWf+AQ3TwQCxV5Ls8O2tXE55zVTGVs3zTmn7BOg= 31 31 github.com/bluesky-social/jetstream v0.0.0-20241210005130-ea96859b93d1 h1:CFvRtYNSnWRAi/98M3O466t9dYuwtesNbu6FVPymRrA= ··· 34 34 github.com/bmatcuk/doublestar/v4 v4.7.1 h1:fdDeAqgT47acgwd9bd9HxJRDmc9UAmPpc+2m0CXv75Q= 35 35 github.com/bmatcuk/doublestar/v4 v4.7.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= 36 36 github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= 37 - github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= 38 37 github.com/carlmjohnson/versioninfo v0.22.5 h1:O00sjOLUAFxYQjlN/bzYTuZiS0y6fWDQjMRvwtKgwwc= 39 38 github.com/carlmjohnson/versioninfo v0.22.5/go.mod h1:QT9mph3wcVfISUKd0i9sZfVrPviHuSF+cUtLjm2WSf8= 40 39 github.com/casbin/casbin/v2 v2.100.0/go.mod h1:LO7YPez4dX3LgoTCqSQAleQDo0S0BeZBDxYnPUl95Ng= ··· 45 46 github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= 46 47 github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= 47 48 github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= 48 - github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= 49 - github.com/cloudflare/circl v1.4.0 h1:BV7h5MgrktNzytKmWjpOtdYrf0lkkbF8YMlBGPhJQrY= 50 - github.com/cloudflare/circl v1.4.0/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU= 49 + github.com/cloudflare/circl v1.6.0 h1:cr5JKic4HI+LkINy2lg3W2jF8sHCVTBncJr5gIIq7qk= 50 + github.com/cloudflare/circl v1.6.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= 51 51 github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= 52 52 github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= 53 - github.com/cyphar/filepath-securejoin v0.3.3 h1:lofZkCEVFIBe0KcdQOzFs8Soy9oaHOWl4gGtPI+gCFc= 54 - github.com/cyphar/filepath-securejoin v0.3.3/go.mod h1:8s/MCNJREmFK0H02MF6Ihv1nakJe4L/w3WZLHNkvlYM= 53 + github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= 54 + github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= 55 55 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 56 56 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= 57 57 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= ··· 75 77 github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= 76 78 github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= 77 79 github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg= 78 - github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= 79 - github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= 80 + github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UNbRM= 81 + github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU= 80 82 github.com/go-git/go-git-fixtures/v4 v4.3.1 h1:y5z6dd3qi8Hl+stezc8p3JxDkoTRqMAlKnXHuzrfjTQ= 81 83 github.com/go-git/go-git-fixtures/v4 v4.3.1/go.mod h1:8LHG1a3SRW71ettAD/jW13h8c6AqjVSeL11RAdgaqpo= 82 84 github.com/go-git/go-git/v5 v5.6.1 h1:q4ZRqQl4pR/ZJHc1L5CFjGA1a10u76aV1iC+nh+bHsk= ··· 202 204 github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= 203 205 github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= 204 206 github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= 205 - github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= 206 - github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= 207 + github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= 208 + github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= 207 209 github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= 208 210 github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= 209 - github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= 210 211 github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= 212 + github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4= 213 + github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A= 211 214 github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 212 215 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= 213 216 github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= ··· 235 236 github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= 236 237 github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= 237 238 github.com/skeema/knownhosts v1.1.0/go.mod h1:sKFq3RD6/TKZkSWn8boUbDC7Qkgcv+8XXijpFO6roag= 238 - github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY= 239 - github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M= 239 + github.com/skeema/knownhosts v1.3.1 h1:X2osQ+RAjK76shCbvhHHHVl3ZlgDm8apHEHFqRjnBY8= 240 + github.com/skeema/knownhosts v1.3.1/go.mod h1:r7KTdC8l4uxWRyK2TpQZ/1o5HaSzh06ePQNxPwTcfiY= 240 241 github.com/smartystreets/assertions v1.2.0 h1:42S6lae5dvLc7BrLu/0ugRtcFVjoJNMC/N3yZFZkDFs= 241 242 github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= 242 243 github.com/smartystreets/goconvey v1.7.2 h1:9RBaZCeXEQ3UselpuwUQHltGVXvdwm6cv1hgR6gDIPg= ··· 248 249 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= 249 250 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= 250 251 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 251 - github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= 252 - github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= 252 + github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= 253 + github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= 253 254 github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= 254 255 github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0 h1:GDDkbFiaK8jsSDJfjId/PEGEShv6ugrt4kYsC5UIDaQ= 255 256 github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= ··· 300 301 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= 301 302 golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= 302 303 golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= 303 - golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= 304 304 golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= 305 - golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= 306 - golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= 307 - golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= 305 + golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= 306 + golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= 307 + golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= 308 + golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= 308 309 golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= 309 310 golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= 310 311 golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= ··· 312 313 golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 313 314 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= 314 315 golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= 315 - golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= 316 316 golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 317 317 golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 318 318 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= ··· 323 325 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= 324 326 golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= 325 327 golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= 326 - golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= 327 328 golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= 328 329 golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= 329 - golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= 330 - golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= 331 - golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= 330 + golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= 331 + golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= 332 332 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 333 333 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 334 334 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 335 335 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 336 336 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 337 - golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 338 337 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 339 338 golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 340 339 golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= ··· 352 357 golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 353 358 golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 354 359 golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 355 - golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 356 360 golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 357 361 golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 358 362 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 359 - golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= 360 - golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 363 + golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= 364 + golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= 361 365 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 362 366 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= 363 367 golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= 364 368 golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= 365 - golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= 366 369 golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= 367 - golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= 368 - golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= 369 - golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= 370 + golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y= 371 + golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g= 370 372 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 371 373 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 372 374 golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 373 375 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= 374 376 golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= 375 377 golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= 376 - golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 377 - golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= 378 - golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= 378 + golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= 379 + golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= 379 380 golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= 380 381 golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= 381 382 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= ··· 387 396 golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= 388 397 golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= 389 398 golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= 390 - golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= 391 399 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 392 400 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 393 401 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+12
lexicons/pulls/closed.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "sh.tangled.repo.pull.state.closed", 4 + "needsCbor": true, 5 + "needsType": true, 6 + "defs": { 7 + "main": { 8 + "type": "token", 9 + "description": "closed pull request" 10 + } 11 + } 12 + }
+40
lexicons/pulls/comment.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "sh.tangled.repo.pull.comment", 4 + "needsCbor": true, 5 + "needsType": true, 6 + "defs": { 7 + "main": { 8 + "type": "record", 9 + "key": "tid", 10 + "record": { 11 + "type": "object", 12 + "required": ["pull"], 13 + "properties": { 14 + "pull": { 15 + "type": "string", 16 + "format": "at-uri" 17 + }, 18 + "repo": { 19 + "type": "string", 20 + "format": "at-uri" 21 + }, 22 + "commentId": { 23 + "type": "integer" 24 + }, 25 + "owner": { 26 + "type": "string", 27 + "format": "did" 28 + }, 29 + "body": { 30 + "type": "string" 31 + }, 32 + "createdAt": { 33 + "type": "string", 34 + "format": "datetime" 35 + } 36 + } 37 + } 38 + } 39 + } 40 + }
+12
lexicons/pulls/merged.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "sh.tangled.repo.pull.state.merged", 4 + "needsCbor": true, 5 + "needsType": true, 6 + "defs": { 7 + "main": { 8 + "type": "token", 9 + "description": "merged pull request" 10 + } 11 + } 12 + }
+12
lexicons/pulls/open.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "sh.tangled.repo.pull.state.open", 4 + "needsCbor": true, 5 + "needsType": true, 6 + "defs": { 7 + "main": { 8 + "type": "token", 9 + "description": "open pull request" 10 + } 11 + } 12 + }
+42
lexicons/pulls/patch.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "sh.tangled.repo.pull.patch", 4 + "needsCbor": true, 5 + "needsType": true, 6 + "defs": { 7 + "main": { 8 + "type": "record", 9 + "key": "tid", 10 + "record": { 11 + "type": "object", 12 + "required": ["targetRepo", "pullId", "title", "patch"], 13 + "properties": { 14 + "targetRepo": { 15 + "type": "string", 16 + "format": "at-uri" 17 + }, 18 + "sourceRepo": { 19 + "type": "string", 20 + "format": "at-uri" 21 + }, 22 + "pullId": { 23 + "type": "integer" 24 + }, 25 + "title": { 26 + "type": "string" 27 + }, 28 + "body": { 29 + "type": "string" 30 + }, 31 + "createdAt": { 32 + "type": "string", 33 + "format": "datetime" 34 + }, 35 + "patch": { 36 + "type": "string" 37 + } 38 + } 39 + } 40 + } 41 + } 42 + }
+32
lexicons/pulls/state.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "sh.tangled.repo.pull.state", 4 + "needsCbor": true, 5 + "needsType": true, 6 + "defs": { 7 + "main": { 8 + "type": "record", 9 + "key": "tid", 10 + "record": { 11 + "type": "object", 12 + "required": ["pull"], 13 + "properties": { 14 + "pull": { 15 + "type": "string", 16 + "format": "at-uri" 17 + }, 18 + "state": { 19 + "type": "string", 20 + "description": "state of the pull request", 21 + "knownValues": [ 22 + "sh.tangled.repo.pull.state.open", 23 + "sh.tangled.repo.pull.state.closed", 24 + "sh.tangled.repo.pull.state.merged" 25 + ], 26 + "default": "sh.tangled.repo.pull.state.open" 27 + } 28 + } 29 + } 30 + } 31 + } 32 + }