mirror of https://github.com/harness/drone.git
initial work on create repository (#27)
* initial work on create repository * create repository as single method call using client stream * resources handler and files * minor fix for wire dep graphjobatzil/rename
parent
5786ad2409
commit
1cf07b6417
|
@ -1,3 +1,4 @@
|
|||
.DS_Store
|
||||
NOTES*
|
||||
_research
|
||||
.env
|
||||
|
|
21
Makefile
21
Makefile
|
@ -8,7 +8,7 @@ ifndef DOCKER_BUILD_OPTS
|
|||
DOCKER_BUILD_OPTS :=
|
||||
endif
|
||||
|
||||
tools = $(addprefix $(GOBIN)/, golangci-lint goimports govulncheck)
|
||||
tools = $(addprefix $(GOBIN)/, golangci-lint goimports govulncheck protoc-gen-go protoc-gen-go-grpc)
|
||||
deps = $(addprefix $(GOBIN)/, wire dbmate mockgen)
|
||||
|
||||
ifneq (,$(wildcard ./.local.env))
|
||||
|
@ -35,9 +35,9 @@ tools: $(tools) ## Install tools required for the build
|
|||
mocks: $(mocks)
|
||||
@echo "Generating Test Mocks"
|
||||
|
||||
wire: cli/server/harness.wire_gen.go cli/server/standalone.wire_gen.go
|
||||
wire: cli/server/harness.wire.go cli/server/standalone.wire.go
|
||||
|
||||
generate: $(mocks) wire mocks/mock_client.go
|
||||
generate: $(mocks) wire mocks/mock_client.go proto
|
||||
@echo "Generating Code"
|
||||
|
||||
build: generate ## Build the gitness service binary
|
||||
|
@ -137,6 +137,15 @@ cli/server/standalone.wire_gen.go: cli/server/standalone.wire.go ## Update the w
|
|||
mocks/mock_client.go: internal/store/store.go client/client.go
|
||||
go generate mocks/mock.go
|
||||
|
||||
proto:
|
||||
@protoc --proto_path=./internal/gitrpc/proto \
|
||||
--go_out=./internal/gitrpc/rpc \
|
||||
--go_opt=paths=source_relative \
|
||||
--go-grpc_out=./internal/gitrpc/rpc \
|
||||
--go-grpc_opt=paths=source_relative \
|
||||
./internal/gitrpc/proto/*.proto
|
||||
|
||||
|
||||
###########################################
|
||||
# Install Tools and deps
|
||||
#
|
||||
|
@ -169,6 +178,12 @@ $(GOBIN)/mockgen:
|
|||
$(GOBIN)/govulncheck:
|
||||
go install golang.org/x/vuln/cmd/govulncheck@latest
|
||||
|
||||
$(GOBIN)/protoc-gen-go:
|
||||
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28
|
||||
|
||||
$(GOBIN)/protoc-gen-go-grpc:
|
||||
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2
|
||||
|
||||
help: ## show help message
|
||||
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[$$()% 0-9a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
|
||||
|
||||
|
|
|
@ -12,6 +12,8 @@ import (
|
|||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/harness/gitness/internal/gitrpc"
|
||||
|
||||
"github.com/harness/gitness/types"
|
||||
"github.com/harness/gitness/version"
|
||||
"golang.org/x/sync/errgroup"
|
||||
|
@ -41,7 +43,7 @@ func (c *command) run(*kingpin.ParseContext) error {
|
|||
// load environment variables from file.
|
||||
err := godotenv.Load(c.envfile)
|
||||
if err != nil {
|
||||
return err
|
||||
return fmt.Errorf("error loading environment file %s: %w", c.envfile, err)
|
||||
}
|
||||
|
||||
// create the system configuration store by loading
|
||||
|
@ -90,6 +92,15 @@ func (c *command) run(*kingpin.ParseContext) error {
|
|||
})
|
||||
log.Info().Msg("nightly subroutine started")
|
||||
|
||||
// start grpc server
|
||||
rpcServer, err := gitrpc.NewServer(5001)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
g.Go(func() error {
|
||||
return rpcServer.Start()
|
||||
})
|
||||
|
||||
// wait until the error group context is done
|
||||
<-gCtx.Done()
|
||||
|
||||
|
@ -105,6 +116,10 @@ func (c *command) run(*kingpin.ParseContext) error {
|
|||
log.Err(sErr).Msg("failed to shutdown http server gracefully")
|
||||
}
|
||||
|
||||
if rpcErr := rpcServer.Stop(); rpcErr != nil {
|
||||
log.Err(rpcErr).Msg("failed to shutdown grpc server gracefully")
|
||||
}
|
||||
|
||||
log.Info().Msg("wait for subroutines to complete")
|
||||
err = g.Wait()
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ import (
|
|||
"github.com/harness/gitness/internal/auth/authz"
|
||||
"github.com/harness/gitness/internal/bootstrap"
|
||||
"github.com/harness/gitness/internal/cron"
|
||||
"github.com/harness/gitness/internal/gitrpc"
|
||||
"github.com/harness/gitness/internal/router"
|
||||
"github.com/harness/gitness/internal/server"
|
||||
"github.com/harness/gitness/internal/store/database"
|
||||
|
@ -42,6 +43,7 @@ func initSystem(ctx context.Context, config *types.Config) (*system, error) {
|
|||
user.WireSet,
|
||||
authn.WireSet,
|
||||
authz.WireSet,
|
||||
gitrpc.WireSet,
|
||||
)
|
||||
return &system{}, nil
|
||||
}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
// Code generated by Wire. DO NOT EDIT.
|
||||
|
||||
//go:build !wireinject && !harness
|
||||
// +build !wireinject,!harness
|
||||
//go:generate go run github.com/google/wire/cmd/wire
|
||||
//go:build !wireinject
|
||||
// +build !wireinject
|
||||
|
||||
package server
|
||||
|
||||
|
@ -16,6 +17,7 @@ import (
|
|||
"github.com/harness/gitness/internal/auth/authz"
|
||||
"github.com/harness/gitness/internal/bootstrap"
|
||||
"github.com/harness/gitness/internal/cron"
|
||||
"github.com/harness/gitness/internal/gitrpc"
|
||||
"github.com/harness/gitness/internal/router"
|
||||
"github.com/harness/gitness/internal/server"
|
||||
"github.com/harness/gitness/internal/store/database"
|
||||
|
@ -40,7 +42,11 @@ func initSystem(ctx context.Context, config *types.Config) (*system, error) {
|
|||
authenticator := authn.ProvideAuthenticator(userStore, serviceAccountStore, tokenStore)
|
||||
spaceStore := database.ProvideSpaceStore(db)
|
||||
repoStore := database.ProvideRepoStore(db)
|
||||
repoController := repo.NewController(authorizer, spaceStore, repoStore, serviceAccountStore)
|
||||
gitrpcInterface, err := gitrpc.ProvideClient()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
repoController := repo.NewController(authorizer, spaceStore, repoStore, serviceAccountStore, gitrpcInterface)
|
||||
spaceController := space.NewController(authorizer, spaceStore, repoStore, serviceAccountStore)
|
||||
serviceaccountController := serviceaccount.NewController(authorizer, serviceAccountStore, spaceStore, repoStore, tokenStore)
|
||||
apiHandler := router.ProvideAPIHandler(systemStore, authenticator, repoController, spaceController, serviceaccountController, controller)
|
||||
|
|
71
go.mod
71
go.mod
|
@ -1,8 +1,9 @@
|
|||
module github.com/harness/gitness
|
||||
|
||||
go 1.17
|
||||
go 1.19
|
||||
|
||||
require (
|
||||
code.gitea.io/gitea v1.17.2
|
||||
github.com/Masterminds/squirrel v1.5.1
|
||||
github.com/adrg/xdg v0.3.2
|
||||
github.com/coreos/go-semver v0.3.0
|
||||
|
@ -10,46 +11,80 @@ require (
|
|||
github.com/dgrijalva/jwt-go v3.2.0+incompatible
|
||||
github.com/drone/funcmap v0.0.0-20190918184546-d4ef6e88376d
|
||||
github.com/go-chi/chi v1.5.4
|
||||
github.com/go-chi/cors v1.2.0
|
||||
github.com/golang/mock v1.5.0
|
||||
github.com/google/go-cmp v0.5.5
|
||||
github.com/go-chi/cors v1.2.1
|
||||
github.com/golang-jwt/jwt v3.2.2+incompatible
|
||||
github.com/golang/mock v1.6.0
|
||||
github.com/google/go-cmp v0.5.8
|
||||
github.com/google/wire v0.5.0
|
||||
github.com/gotidy/ptr v1.3.0
|
||||
github.com/jmoiron/sqlx v1.3.1
|
||||
github.com/jmoiron/sqlx v1.3.3
|
||||
github.com/joho/godotenv v1.3.0
|
||||
github.com/kelseyhightower/envconfig v1.4.0
|
||||
github.com/lib/pq v1.10.0
|
||||
github.com/lib/pq v1.10.5
|
||||
github.com/maragudk/migrate v0.4.1
|
||||
github.com/mattn/go-isatty v0.0.12
|
||||
github.com/mattn/go-sqlite3 v1.14.10-0.20211026011849-85436841b33e
|
||||
github.com/mattn/go-isatty v0.0.14
|
||||
github.com/mattn/go-sqlite3 v1.14.12
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/rs/zerolog v1.26.0
|
||||
github.com/swaggest/openapi-go v0.2.13
|
||||
github.com/swaggest/swgui v1.4.2
|
||||
github.com/unrolled/secure v1.0.8
|
||||
golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871
|
||||
golang.org/x/crypto v0.0.0-20220507011949-2cf3adece122
|
||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211
|
||||
google.golang.org/grpc v1.43.0
|
||||
google.golang.org/protobuf v1.28.0
|
||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/Microsoft/go-winio v0.5.2 // indirect
|
||||
github.com/ProtonMail/go-crypto v0.0.0-20220407094043-a94812496cf5 // indirect
|
||||
github.com/acomagu/bufpipe v1.0.3 // indirect
|
||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect
|
||||
github.com/alecthomas/units v0.0.0-20210208195552-ff826a37aa15 // indirect
|
||||
github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
|
||||
github.com/djherbis/buffer v1.2.0 // indirect
|
||||
github.com/djherbis/nio/v3 v3.0.1 // indirect
|
||||
github.com/emirpasic/gods v1.18.1 // indirect
|
||||
github.com/go-enry/go-enry/v2 v2.8.2 // indirect
|
||||
github.com/go-enry/go-oniguruma v1.2.1 // indirect
|
||||
github.com/go-git/gcfg v1.5.0 // indirect
|
||||
github.com/go-git/go-billy/v5 v5.3.1 // indirect
|
||||
github.com/go-git/go-git/v5 v5.4.3-0.20210630082519-b4368b2a2ca4 // indirect
|
||||
github.com/gobwas/glob v0.2.3 // indirect
|
||||
github.com/golang-jwt/jwt/v4 v4.4.1 // indirect
|
||||
github.com/golang/protobuf v1.5.2 // indirect
|
||||
github.com/google/pprof v0.0.0-20220509035851-59ca7ad80af3 // indirect
|
||||
github.com/google/subcommands v1.0.1 // indirect
|
||||
github.com/hashicorp/go-version v1.4.0 // indirect
|
||||
github.com/imdario/mergo v0.3.12 // indirect
|
||||
github.com/jackc/pgx/v4 v4.12.0 // indirect
|
||||
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
|
||||
github.com/kevinburke/ssh_config v1.2.0 // indirect
|
||||
github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect
|
||||
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect
|
||||
github.com/mitchellh/go-homedir v1.1.0 // indirect
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||
github.com/rs/xid v1.3.0 // indirect
|
||||
github.com/rs/xid v1.4.0 // indirect
|
||||
github.com/sergi/go-diff v1.2.0 // indirect
|
||||
github.com/swaggest/jsonschema-go v0.3.24 // indirect
|
||||
github.com/swaggest/refl v1.0.1 // indirect
|
||||
github.com/vearutop/statigz v1.1.5 // indirect
|
||||
golang.org/x/mod v0.4.2 // indirect
|
||||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 // indirect
|
||||
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e // indirect
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 // indirect
|
||||
golang.org/x/text v0.3.6 // indirect
|
||||
golang.org/x/tools v0.1.7 // indirect
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
|
||||
github.com/xanzy/ssh-agent v0.3.1 // indirect
|
||||
github.com/yuin/goldmark v1.4.13 // indirect
|
||||
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect
|
||||
golang.org/x/net v0.0.0-20220630215102-69896b714898 // indirect
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect
|
||||
golang.org/x/text v0.3.7 // indirect
|
||||
golang.org/x/tools v0.1.10 // indirect
|
||||
golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f // indirect
|
||||
google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa // indirect
|
||||
gopkg.in/ini.v1 v1.66.4 // indirect
|
||||
gopkg.in/warnings.v0 v0.1.2 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
strk.kbt.io/projects/go/libravatar v0.0.0-20191008002943-06d1c002b251 // indirect
|
||||
)
|
||||
|
|
238
go.sum
238
go.sum
|
@ -1,13 +1,26 @@
|
|||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
code.gitea.io/gitea v1.17.2 h1:NRcVr07jF+za4d0NZZlJXeCuQK5FfHMtjPDjq4u3UiY=
|
||||
code.gitea.io/gitea v1.17.2/go.mod h1:sovminOoSsc8IC2T29rX9+MmaboHTu8QDEvJjaSqIXg=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
|
||||
github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
|
||||
github.com/Masterminds/squirrel v1.5.1 h1:kWAKlLLJFxZG7N2E0mBMNWVp5AuUX+JUrnhFN74Eg+w=
|
||||
github.com/Masterminds/squirrel v1.5.1/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA400rg+riTZj10=
|
||||
github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA=
|
||||
github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0=
|
||||
github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84=
|
||||
github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA=
|
||||
github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
|
||||
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
||||
github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo=
|
||||
github.com/ProtonMail/go-crypto v0.0.0-20220407094043-a94812496cf5 h1:cSHEbLj0GZeHM1mWG84qEnGFojNEQ83W7cwaPRjcwXU=
|
||||
github.com/ProtonMail/go-crypto v0.0.0-20220407094043-a94812496cf5/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo=
|
||||
github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
|
||||
github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
|
||||
github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=
|
||||
github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk=
|
||||
github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
|
||||
github.com/adrg/xdg v0.3.2 h1:GUSGQ5pHdev83AYhDSS1A/CX+0JIsxbiWtow2DSA+RU=
|
||||
github.com/adrg/xdg v0.3.2/go.mod h1:7I2hH/IT30IsupOpKZ5ue7/qNi3CoKzD6tL3HwpaRMQ=
|
||||
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
|
||||
|
@ -18,13 +31,18 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF
|
|||
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||
github.com/alecthomas/units v0.0.0-20210208195552-ff826a37aa15 h1:AUNCr9CiJuwrRYS3XieqF+Z9B9gNxo/eANAJCF2eiN4=
|
||||
github.com/alecthomas/units v0.0.0-20210208195552-ff826a37aa15/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
|
||||
github.com/andybalholm/brotli v1.0.3 h1:fpcw+r1N1h0Poc1F/pHbW40cUm/lMEQslZtCkBQ0UnM=
|
||||
github.com/andybalholm/brotli v1.0.3/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
|
||||
github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY=
|
||||
github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
|
||||
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
|
||||
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
|
||||
github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
|
||||
github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
|
||||
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
|
||||
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
|
||||
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
|
||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
|
||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
|
||||
github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A=
|
||||
github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU=
|
||||
github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
|
||||
|
@ -43,9 +61,17 @@ github.com/bool64/shared v0.1.3/go.mod h1:RF1p1Oi29ofgOvinBpetbF5mceOUP3kpMkvLbW
|
|||
github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
|
||||
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
|
||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
|
||||
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE=
|
||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
||||
github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
|
||||
github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||
github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||
github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
|
||||
github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
|
||||
github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=
|
||||
|
@ -59,6 +85,7 @@ github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV
|
|||
github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
|
||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
|
@ -66,6 +93,11 @@ github.com/dchest/uniuri v0.0.0-20200228104902-7aecb25e1fe5 h1:RAV05c0xOkJ3dZGS0
|
|||
github.com/dchest/uniuri v0.0.0-20200228104902-7aecb25e1fe5/go.mod h1:GgB8SF9nRG+GqaDtLcwJZsQFhcogVCJ79j4EdT0c2V4=
|
||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
|
||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
|
||||
github.com/djherbis/buffer v1.1.0/go.mod h1:VwN8VdFkMY0DCALdY8o00d3IZ6Amz/UNVMWcSaJT44o=
|
||||
github.com/djherbis/buffer v1.2.0 h1:PH5Dd2ss0C7CRRhQCZ2u7MssF+No9ide8Ye71nPHcrQ=
|
||||
github.com/djherbis/buffer v1.2.0/go.mod h1:fjnebbZjCUpPinBRD+TDwXSOeNQ7fPQWLfGQqiAiUyE=
|
||||
github.com/djherbis/nio/v3 v3.0.1 h1:6wxhnuppteMa6RHA4L81Dq7ThkZH8SwnDzXDYy95vB4=
|
||||
github.com/djherbis/nio/v3 v3.0.1/go.mod h1:Ng4h80pbZFMla1yKzm61cF0tqqilXZYrogmWgZxOcmg=
|
||||
github.com/drone/funcmap v0.0.0-20190918184546-d4ef6e88376d h1:/IO7UVVu191Jc0DajV4cDVoO+91cuppvgxg2MZl+AXI=
|
||||
github.com/drone/funcmap v0.0.0-20190918184546-d4ef6e88376d/go.mod h1:Hph0/pT6ZxbujnE1Z6/08p5I0XXuOsppqF6NQlGOK0E=
|
||||
github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
|
||||
|
@ -73,19 +105,43 @@ github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5m
|
|||
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
|
||||
github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
|
||||
github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
|
||||
github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o=
|
||||
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
|
||||
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
|
||||
github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=
|
||||
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||
github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
|
||||
github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ=
|
||||
github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
|
||||
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
|
||||
github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4=
|
||||
github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||
github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
|
||||
github.com/gliderlabs/ssh v0.3.4 h1:+AXBtim7MTKaLVPgvE+3mhewYRawNLTd+jEEz/wExZw=
|
||||
github.com/go-chi/chi v1.5.4 h1:QHdzF2szwjqVV4wmByUnTcsbIg7UGaQ0tPF2t5GcAIs=
|
||||
github.com/go-chi/chi v1.5.4/go.mod h1:uaf8YgoFazUOkPBG7fxPftUylNumIev9awIWOENIuEg=
|
||||
github.com/go-chi/cors v1.2.0 h1:tV1g1XENQ8ku4Bq3K9ub2AtgG+p16SmzeMSGTwrOKdE=
|
||||
github.com/go-chi/cors v1.2.0/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58=
|
||||
github.com/go-chi/cors v1.2.1 h1:xEC8UT3Rlp2QuWNEr4Fs/c2EAGVKBwy/1vHx3bppil4=
|
||||
github.com/go-chi/cors v1.2.1/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58=
|
||||
github.com/go-enry/go-enry/v2 v2.8.2 h1:uiGmC+3K8sVd/6DOe2AOJEOihJdqda83nPyJNtMR8RI=
|
||||
github.com/go-enry/go-enry/v2 v2.8.2/go.mod h1:GVzIiAytiS5uT/QiuakK7TF1u4xDab87Y8V5EJRpsIQ=
|
||||
github.com/go-enry/go-oniguruma v1.2.1 h1:k8aAMuJfMrqm/56SG2lV9Cfti6tC4x8673aHCcBk+eo=
|
||||
github.com/go-enry/go-oniguruma v1.2.1/go.mod h1:bWDhYP+S6xZQgiRL7wlTScFYBe023B6ilRZbCAD5Hf4=
|
||||
github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4=
|
||||
github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E=
|
||||
github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0=
|
||||
github.com/go-git/go-billy/v5 v5.3.1 h1:CPiOUAzKtMRvolEKw+bG1PLRpT7D3LIs3/3ey4Aiu34=
|
||||
github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0=
|
||||
github.com/go-git/go-git-fixtures/v4 v4.2.1 h1:n9gGL1Ct/yIw+nfsfr8s4+sbhT+Ncu2SubfXjIWgci8=
|
||||
github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0=
|
||||
github.com/go-git/go-git/v5 v5.4.3-0.20210630082519-b4368b2a2ca4 h1:1RSUwVK7VjTeA82kcLIqz1EU70QRwFdZUlJW58gP4GY=
|
||||
github.com/go-git/go-git/v5 v5.4.3-0.20210630082519-b4368b2a2ca4/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc=
|
||||
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
||||
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
||||
github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o=
|
||||
|
@ -97,30 +153,40 @@ github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LB
|
|||
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
|
||||
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||
github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
|
||||
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
|
||||
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||
github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
|
||||
github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
|
||||
github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
|
||||
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||
github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
|
||||
github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
|
||||
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
|
||||
github.com/golang-jwt/jwt/v4 v4.4.1 h1:pC5DB52sCeK48Wlb9oPcdhnjkz1TKt1D/P7WKJ0kUcQ=
|
||||
github.com/golang-jwt/jwt/v4 v4.4.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/mock v1.5.0 h1:jlYHihg//f7RRwuPfptm04yp4s7O6Kw8EZiVYIGcH0g=
|
||||
github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=
|
||||
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
|
||||
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
||||
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
||||
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
||||
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
||||
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
|
||||
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
|
||||
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||
|
@ -128,13 +194,18 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a
|
|||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
||||
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
|
||||
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/pprof v0.0.0-20220509035851-59ca7ad80af3 h1:vFrXU7L2gqtlP/ZGijSpaDIc16ZQrZI4FAuYtpQTyQc=
|
||||
github.com/google/pprof v0.0.0-20220509035851-59ca7ad80af3/go.mod h1:Pt31oes+eGImORns3McJn8zHefuQl2rG8l6xQjGYB4U=
|
||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||
github.com/google/subcommands v1.0.1 h1:/eqq+otEXm5vhfBrbREPCSVQbvofip6kIz+mX5TUH7k=
|
||||
github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
|
||||
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/wire v0.5.0 h1:I7ELFeVBr3yfPIcc8+MWvrjk+3VjbcSzoXm3JVa+jD8=
|
||||
github.com/google/wire v0.5.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||
|
@ -147,6 +218,7 @@ github.com/gotidy/ptr v1.3.0/go.mod h1:vpltyHhOZE+NGXUiwpVl3wV9AGEBlxhdnaimPDxRL
|
|||
github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
|
||||
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
||||
github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
|
||||
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
|
||||
github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE=
|
||||
github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
|
||||
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||
|
@ -160,6 +232,8 @@ github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdv
|
|||
github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
|
||||
github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
|
||||
github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
||||
github.com/hashicorp/go-version v1.4.0 h1:aAQzgqIrRKRa7w75CKpbBxYsmUoPjzVm1W59ca1L0J4=
|
||||
github.com/hashicorp/go-version v1.4.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
||||
github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
|
||||
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
|
@ -171,6 +245,8 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO
|
|||
github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
|
||||
github.com/iancoleman/orderedmap v0.2.0 h1:sq1N/TFpYH++aViPcaKjys3bDClUEU7s5B+z6jq8pNA=
|
||||
github.com/iancoleman/orderedmap v0.2.0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA=
|
||||
github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU=
|
||||
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
|
||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
|
||||
github.com/jackc/chunkreader v1.0.0 h1:4s39bBR8ByfqH+DKm8rQA3E1LHZWB9XWcrz8fqaZbe0=
|
||||
|
@ -184,11 +260,14 @@ github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsU
|
|||
github.com/jackc/pgconn v1.4.0/go.mod h1:Y2O3ZDF0q4mMacyWV3AstPJpeHXWGEetiFttmq5lahk=
|
||||
github.com/jackc/pgconn v1.5.0/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI=
|
||||
github.com/jackc/pgconn v1.5.1-0.20200601181101-fa742c524853/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI=
|
||||
github.com/jackc/pgconn v1.8.1 h1:ySBX7Q87vOMqKU2bbmKbUvtYhauDFclYbNDYIE1/h6s=
|
||||
github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o=
|
||||
github.com/jackc/pgconn v1.8.1/go.mod h1:JV6m6b6jhjdmzchES0drzCcYcAHS1OPD5xu3OZ/lE2g=
|
||||
github.com/jackc/pgconn v1.9.0 h1:gqibKSTJup/ahCsNKyMZAniPuZEfIqfXFc8FOWVYR+Q=
|
||||
github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY=
|
||||
github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE=
|
||||
github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8=
|
||||
github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE=
|
||||
github.com/jackc/pgmock v0.0.0-20201204152224-4fe30f7445fd/go.mod h1:hrBW0Enj2AZTNpt/7Y5rr2xe/9Mn757Wtb2xeBzPv2c=
|
||||
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
|
||||
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
|
||||
github.com/jackc/pgproto3 v1.1.0 h1:FYYE4yRw+AgI8wXIinMlNjBbp/UitDJwfj5LqqewP1A=
|
||||
|
@ -199,8 +278,9 @@ github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvW
|
|||
github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM=
|
||||
github.com/jackc/pgproto3/v2 v2.0.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
|
||||
github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
|
||||
github.com/jackc/pgproto3/v2 v2.1.0 h1:h2yg3kjIyAGSZKDijYn1/gXHlYLCwl9ZjEh2PU0yVxE=
|
||||
github.com/jackc/pgproto3/v2 v2.1.0/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
|
||||
github.com/jackc/pgproto3/v2 v2.1.1 h1:7PQ/4gLoqnl87ZxL7xjO0DR5gYuviDCZxQJsUlFW1eI=
|
||||
github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
|
||||
github.com/jackc/pgservicefile v0.0.0-20200307190119-3430c5407db8/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E=
|
||||
github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg=
|
||||
github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E=
|
||||
|
@ -210,46 +290,60 @@ github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrU
|
|||
github.com/jackc/pgtype v1.2.0/go.mod h1:5m2OfMh1wTK7x+Fk952IDmI4nw3nPrvtQdM0ZT4WpC0=
|
||||
github.com/jackc/pgtype v1.3.1-0.20200510190516-8cd94a14c75a/go.mod h1:vaogEUkALtxZMCH411K+tKzNpwzCKU+AnPzBKZ+I+Po=
|
||||
github.com/jackc/pgtype v1.3.1-0.20200606141011-f6355165a91c/go.mod h1:cvk9Bgu/VzJ9/lxTO5R5sf80p0DiucVtN7ZxvaC4GmQ=
|
||||
github.com/jackc/pgtype v1.7.0 h1:6f4kVsW01QftE38ufBYxKciO6gyioXSC0ABIRLcZrGs=
|
||||
github.com/jackc/pgtype v1.7.0/go.mod h1:ZnHF+rMePVqDKaOfJVI4Q8IVvAQMryDlDkZnKOI75BE=
|
||||
github.com/jackc/pgtype v1.8.0 h1:iFVCcVhYlw0PulYCVoguRGm0SE9guIcPcccnLzHj8bA=
|
||||
github.com/jackc/pgtype v1.8.0/go.mod h1:PqDKcEBtllAtk/2p6z6SHdXW5UB+MhE75tUol2OKexE=
|
||||
github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y=
|
||||
github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM=
|
||||
github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc=
|
||||
github.com/jackc/pgx/v4 v4.5.0/go.mod h1:EpAKPLdnTorwmPUUsqrPxy5fphV18j9q3wrfRXgo+kA=
|
||||
github.com/jackc/pgx/v4 v4.6.1-0.20200510190926-94ba730bb1e9/go.mod h1:t3/cdRQl6fOLDxqtlyhe9UWgfIi9R8+8v8GKV5TRA/o=
|
||||
github.com/jackc/pgx/v4 v4.6.1-0.20200606145419-4e5062306904/go.mod h1:ZDaNWkt9sW1JMiNn0kdYBaLelIhw7Pg4qd+Vk6tw7Hg=
|
||||
github.com/jackc/pgx/v4 v4.11.0 h1:J86tSWd3Y7nKjwT/43xZBvpi04keQWx8gNC2YkdJhZI=
|
||||
github.com/jackc/pgx/v4 v4.11.0/go.mod h1:i62xJgdrtVDsnL3U8ekyrQXEwGNTRoG7/8r+CIdYfcc=
|
||||
github.com/jackc/pgx/v4 v4.12.0 h1:xiP3TdnkwyslWNp77yE5XAPfxAsU9RMFDe0c1SwN8h4=
|
||||
github.com/jackc/pgx/v4 v4.12.0/go.mod h1:fE547h6VulLPA3kySjfnSG/e2D861g/50JlVUa/ub60=
|
||||
github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
|
||||
github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
|
||||
github.com/jackc/puddle v1.1.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
|
||||
github.com/jackc/puddle v1.1.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
|
||||
github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
|
||||
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
|
||||
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
|
||||
github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
|
||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
||||
github.com/jmoiron/sqlx v1.3.1 h1:aLN7YINNZ7cYOPK3QC83dbM6KT0NMqVMw961TqrejlE=
|
||||
github.com/jmoiron/sqlx v1.3.1/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXLBMCQ=
|
||||
github.com/jmoiron/sqlx v1.3.3 h1:j82X0bf7oQ27XeqxicSZsTU5suPwKElg3oyxNn43iTk=
|
||||
github.com/jmoiron/sqlx v1.3.3/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXLBMCQ=
|
||||
github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=
|
||||
github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
|
||||
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
|
||||
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
||||
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
||||
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
|
||||
github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k=
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
|
||||
github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8=
|
||||
github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg=
|
||||
github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
|
||||
github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
|
||||
github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
|
||||
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
|
||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
||||
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
|
||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
|
||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq6+3iTQz8KNCLtVX6idSoTLdUw=
|
||||
github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o=
|
||||
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk=
|
||||
|
@ -258,13 +352,15 @@ github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
|||
github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
||||
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
||||
github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
||||
github.com/lib/pq v1.10.0 h1:Zx5DJFEYQXio93kgXnQ09fXNiUKsqv4OUEu2UtGcB1E=
|
||||
github.com/lib/pq v1.10.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
|
||||
github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
|
||||
github.com/lib/pq v1.10.5 h1:J+gdV2cUmX7ZqL2B0lFcW0m+egaHC2V3lpO8nWxyYiQ=
|
||||
github.com/lib/pq v1.10.5/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
|
||||
github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=
|
||||
github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=
|
||||
github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
|
||||
github.com/maragudk/migrate v0.4.1 h1:oAY8bCyaHIreLj3ar9b6cf7PSqOZsCkKXHU8Yn1bkb4=
|
||||
github.com/maragudk/migrate v0.4.1/go.mod h1:vhmL4s+Xz75KU6DPZWRfqb45YyqjYQfcXliA1DsYzvY=
|
||||
github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA=
|
||||
github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE=
|
||||
github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU=
|
||||
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
|
||||
|
@ -278,26 +374,32 @@ github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd
|
|||
github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
|
||||
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
|
||||
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
||||
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
|
||||
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
|
||||
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
||||
github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
|
||||
github.com/mattn/go-sqlite3 v1.14.7/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
|
||||
github.com/mattn/go-sqlite3 v1.14.10-0.20211026011849-85436841b33e h1:aF8T4W7RUsJjsbSVHyxjqt7aWrGpkCN8m6m8D38SU8Q=
|
||||
github.com/mattn/go-sqlite3 v1.14.10-0.20211026011849-85436841b33e/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
|
||||
github.com/mattn/go-sqlite3 v1.14.12 h1:TJ1bhYJPV44phC+IMu1u2K/i5RriLTPe+yc68XDJ1Z0=
|
||||
github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
|
||||
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
|
||||
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
|
||||
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
|
||||
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
|
||||
github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
|
||||
github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
|
||||
github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
||||
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
|
||||
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||
github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg=
|
||||
github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU=
|
||||
|
@ -306,6 +408,7 @@ github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzE
|
|||
github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
|
||||
github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
|
||||
github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
|
||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
||||
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
|
||||
github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs=
|
||||
|
@ -360,10 +463,13 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT
|
|||
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
|
||||
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
|
||||
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
|
||||
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
|
||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg=
|
||||
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
|
||||
github.com/rs/xid v1.3.0 h1:6NjYksEUlhurdVehpc7S7dk6DAmcKv8V9gG0FsVN2U4=
|
||||
github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
||||
github.com/rs/xid v1.4.0 h1:qd7wPTDkN6KQx2VmMBLrpHkiyQwgFXRnkOLacUiaSNY=
|
||||
github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
||||
github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU=
|
||||
github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc=
|
||||
github.com/rs/zerolog v1.26.0 h1:ORM4ibhEZeTeQlCojCK2kPz1ogAY4bGs4tD+SaAdGaE=
|
||||
|
@ -378,6 +484,7 @@ github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
|
|||
github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
|
||||
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
|
||||
github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
|
||||
github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
|
||||
github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
|
||||
github.com/shurcooL/httpgzip v0.0.0-20190720172056-320755c1c1b0/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q=
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
||||
|
@ -385,10 +492,12 @@ github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd/go.mod h1:TrYk7fJV
|
|||
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
|
||||
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
|
||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
||||
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
||||
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
|
||||
github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
|
||||
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
|
||||
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
|
||||
github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
||||
github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
|
||||
|
@ -402,8 +511,8 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV
|
|||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
|
||||
github.com/swaggest/assertjson v1.6.8 h1:1O/9UI5M+2OJI7BeEWKGj0wTvpRXZt5FkOJ4nRkY4rA=
|
||||
github.com/swaggest/assertjson v1.6.8/go.mod h1:Euf0upn9Vlaf1/llYHTs+Kx5K3vVbpMbsZhth7zlN7M=
|
||||
github.com/swaggest/jsonschema-go v0.3.24 h1:vVtFhWQWT9sgsvgMdh0n3O1F0+TnhOWz4+lbz5p5ChY=
|
||||
|
@ -424,6 +533,9 @@ github.com/urfave/negroni v1.0.0 h1:kIimOitoypq34K7TG7DUaJ9kq/N4Ofuwi1sjz0KipXc=
|
|||
github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4=
|
||||
github.com/vearutop/statigz v1.1.5 h1:qWvRgXFsseWVTFCkIvwHQPpaLNf9WI0+dDJE7I9432o=
|
||||
github.com/vearutop/statigz v1.1.5/go.mod h1:czAv7iXgPv/s+xsgXpVEhhD0NSOQ4wZPgmM/n7LANDI=
|
||||
github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0=
|
||||
github.com/xanzy/ssh-agent v0.3.1 h1:AmzO1SSWxw73zxFZPRwaMN1MohDw8UyHnmuxyceTEGo=
|
||||
github.com/xanzy/ssh-agent v0.3.1/go.mod h1:QIE4lCeL7nkC25x+yA3LBIYfwCc1TFziCtG7cBAac6w=
|
||||
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
|
||||
github.com/yosuke-furukawa/json5 v0.1.2-0.20201207051438-cf7bb3f354ff/go.mod h1:sw49aWDqNdRJ6DYUtIQiaA3xyj2IL9tjeNYmX2ixwcU=
|
||||
github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA=
|
||||
|
@ -432,13 +544,17 @@ github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 h1:BHyfKlQyqbsFN5p3Ifn
|
|||
github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM=
|
||||
github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE=
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q=
|
||||
go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
|
||||
go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg=
|
||||
go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
|
||||
go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
|
||||
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
|
||||
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||
go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
|
||||
|
@ -452,6 +568,7 @@ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
|
|||
go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
|
||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
|
||||
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
|
@ -461,10 +578,14 @@ golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8U
|
|||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
||||
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
||||
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
||||
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
|
||||
golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871 h1:/pEO3GD/ABYAjuakUS6xSEmmlyVS4kxBNkeA9tLJiTI=
|
||||
golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.0.0-20220507011949-2cf3adece122 h1:NvGWuYG8dkDHFSKksI1P9faiVJ9rayE6l0+ouWVIDs8=
|
||||
golang.org/x/crypto v0.0.0-20220507011949-2cf3adece122/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||
|
@ -474,8 +595,9 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl
|
|||
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
|
||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo=
|
||||
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
|
@ -493,15 +615,19 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL
|
|||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||
golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k=
|
||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20211105192438-b53810dc28af/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE=
|
||||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20220630215102-69896b714898 h1:K7wO6V1IrczY9QOQ2WkVpw4JQSwCd52UsxVEirZUfiw=
|
||||
golang.org/x/net v0.0.0-20220630215102-69896b714898/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
|
@ -525,30 +651,47 @@ golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e h1:WUoyKPm6nCo1BnNUvPGnFG3T5DUVem42yDJZZ4CNxMA=
|
||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E=
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k=
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
|
||||
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
|
@ -569,15 +712,18 @@ golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtn
|
|||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.1.7 h1:6j8CgantCy3yc8JGBqkDLMKWqZ0RDU2g1HVgacojGWQ=
|
||||
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||
golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
|
||||
golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20=
|
||||
golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
|
||||
golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f h1:GGU+dLjvlC3qDwqYgL6UgRmHXhOOgns0bZu2Ty5mm6U=
|
||||
golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
|
||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||
google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
|
@ -587,6 +733,10 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn
|
|||
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||
google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s=
|
||||
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||
google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
||||
google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa h1:I0YcKz0I7OAhddo7ya8kMnvprhcWM045PmkBdMO9zN0=
|
||||
google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||
google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM=
|
||||
|
@ -595,31 +745,53 @@ google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ij
|
|||
google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||
google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
||||
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
|
||||
google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
|
||||
google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
|
||||
google.golang.org/grpc v1.43.0 h1:Eeu7bZtDZ2DpRCsLhUlcrLnvYaMK1Gz86a+hMVvELmM=
|
||||
google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
|
||||
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
|
||||
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
|
||||
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=
|
||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
|
||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||
gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
|
||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||
gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
|
||||
gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s=
|
||||
gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4=
|
||||
gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||
gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
|
||||
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
|
||||
gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
|
||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
|
@ -632,3 +804,5 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
|
|||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
|
||||
sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=
|
||||
strk.kbt.io/projects/go/libravatar v0.0.0-20191008002943-06d1c002b251 h1:mUcz5b3FJbP5Cvdq7Khzn6J9OCUQJaBwgBkCR+MOwSs=
|
||||
strk.kbt.io/projects/go/libravatar v0.0.0-20191008002943-06d1c002b251/go.mod h1:FJGmPh3vz9jSos1L/F91iAgnC/aejc0wIIrF2ZwJxdY=
|
||||
|
|
|
@ -6,6 +6,7 @@ package repo
|
|||
|
||||
import (
|
||||
"github.com/harness/gitness/internal/auth/authz"
|
||||
"github.com/harness/gitness/internal/gitrpc"
|
||||
"github.com/harness/gitness/internal/store"
|
||||
)
|
||||
|
||||
|
@ -14,14 +15,21 @@ type Controller struct {
|
|||
spaceStore store.SpaceStore
|
||||
repoStore store.RepoStore
|
||||
saStore store.ServiceAccountStore
|
||||
rpcClient gitrpc.Interface
|
||||
}
|
||||
|
||||
func NewController(authorizer authz.Authorizer, spaceStore store.SpaceStore,
|
||||
repoStore store.RepoStore, saStore store.ServiceAccountStore) *Controller {
|
||||
func NewController(
|
||||
authorizer authz.Authorizer,
|
||||
spaceStore store.SpaceStore,
|
||||
repoStore store.RepoStore,
|
||||
saStore store.ServiceAccountStore,
|
||||
rpcClient gitrpc.Interface,
|
||||
) *Controller {
|
||||
return &Controller{
|
||||
authorizer: authorizer,
|
||||
spaceStore: spaceStore,
|
||||
repoStore: repoStore,
|
||||
saStore: saStore,
|
||||
rpcClient: rpcClient,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,34 +5,41 @@
|
|||
package repo
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/harness/gitness/resources"
|
||||
|
||||
"github.com/harness/gitness/internal/gitrpc"
|
||||
|
||||
apiauth "github.com/harness/gitness/internal/api/auth"
|
||||
"github.com/harness/gitness/internal/api/usererror"
|
||||
"github.com/harness/gitness/internal/auth"
|
||||
"github.com/harness/gitness/types"
|
||||
"github.com/harness/gitness/types/check"
|
||||
"github.com/harness/gitness/types/enum"
|
||||
"github.com/rs/zerolog/log"
|
||||
zerolog "github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
type CreateInput struct {
|
||||
PathName string `json:"pathName"`
|
||||
SpaceID int64 `json:"spaceId"`
|
||||
Name string `json:"name"`
|
||||
Branch string `json:"branch"`
|
||||
Description string `json:"description"`
|
||||
IsPublic bool `json:"isPublic"`
|
||||
ForkID int64 `json:"forkId"`
|
||||
Readme bool `json:"readme"`
|
||||
Licence string `json:"licence"`
|
||||
GitIgnore string `json:"gitIgnore"`
|
||||
}
|
||||
|
||||
/*
|
||||
* Create creates a new repository.
|
||||
*/
|
||||
// Create creates a new repository.
|
||||
func (c *Controller) Create(ctx context.Context, session *auth.Session, in *CreateInput) (*types.Repository, error) {
|
||||
log := log.Ctx(ctx)
|
||||
log := zerolog.Ctx(ctx)
|
||||
// ensure we reference a space
|
||||
if in.SpaceID <= 0 {
|
||||
return nil, usererror.BadRequest("A repository can't exist by itself.")
|
||||
|
@ -41,10 +48,8 @@ func (c *Controller) Create(ctx context.Context, session *auth.Session, in *Crea
|
|||
parentSpace, err := c.spaceStore.Find(ctx, in.SpaceID)
|
||||
if err != nil {
|
||||
log.Err(err).Msgf("Failed to get space with id '%d'.", in.SpaceID)
|
||||
|
||||
return nil, usererror.BadRequest("Parent not found'")
|
||||
}
|
||||
|
||||
/*
|
||||
* AUTHORIZATION
|
||||
* Create is a special case - check permission without specific resource
|
||||
|
@ -77,6 +82,52 @@ func (c *Controller) Create(ctx context.Context, session *auth.Session, in *Crea
|
|||
if err = check.Repo(repo); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var content []byte
|
||||
files := make([]gitrpc.File, 0, 3) // readme, gitignore, licence
|
||||
if in.Readme {
|
||||
content = createReadme(in.Name, in.Description)
|
||||
files = append(files, gitrpc.File{
|
||||
Name: "README.md",
|
||||
Base64: false,
|
||||
Content: content,
|
||||
})
|
||||
}
|
||||
|
||||
if in.Licence != "" && in.Licence != "none" {
|
||||
content, err = resources.Licence.ReadFile(fmt.Sprintf("licence/%s.txt", in.Licence))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
files = append(files, gitrpc.File{
|
||||
Name: "LICENCE",
|
||||
Base64: false,
|
||||
Content: content,
|
||||
})
|
||||
}
|
||||
|
||||
if in.GitIgnore != "" {
|
||||
content, err = resources.Gitignore.ReadFile(fmt.Sprintf("gitignore/%s.gitignore", in.GitIgnore))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
files = append(files, gitrpc.File{
|
||||
Name: ".gitignore",
|
||||
Base64: false,
|
||||
Content: content,
|
||||
})
|
||||
}
|
||||
|
||||
err = c.rpcClient.CreateRepository(ctx, &gitrpc.CreateRepositoryParams{
|
||||
RepositoryParams: gitrpc.RepositoryParams{
|
||||
Username: session.Principal.Name,
|
||||
Name: repo.Name,
|
||||
Branch: in.Branch,
|
||||
},
|
||||
Files: files,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error creating repository: %w", err)
|
||||
}
|
||||
|
||||
// create in store
|
||||
err = c.repoStore.Create(ctx, repo)
|
||||
|
@ -89,3 +140,12 @@ func (c *Controller) Create(ctx context.Context, session *auth.Session, in *Crea
|
|||
|
||||
return repo, nil
|
||||
}
|
||||
|
||||
func createReadme(name, description string) []byte {
|
||||
content := bytes.Buffer{}
|
||||
content.WriteString("#" + name + "\n")
|
||||
if description != "" {
|
||||
content.WriteString(description)
|
||||
}
|
||||
return content.Bytes()
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ package repo
|
|||
import (
|
||||
"github.com/google/wire"
|
||||
"github.com/harness/gitness/internal/auth/authz"
|
||||
"github.com/harness/gitness/internal/gitrpc"
|
||||
"github.com/harness/gitness/internal/store"
|
||||
)
|
||||
|
||||
|
@ -16,6 +17,6 @@ var WireSet = wire.NewSet(
|
|||
)
|
||||
|
||||
func ProvideController(authorizer authz.Authorizer, spaceStore store.SpaceStore,
|
||||
repoStore store.RepoStore, saStore store.ServiceAccountStore) *Controller {
|
||||
return NewController(authorizer, spaceStore, repoStore, saStore)
|
||||
repoStore store.RepoStore, saStore store.ServiceAccountStore, rpcClient gitrpc.Interface) *Controller {
|
||||
return NewController(authorizer, spaceStore, repoStore, saStore, rpcClient)
|
||||
}
|
||||
|
|
|
@ -13,9 +13,7 @@ import (
|
|||
"github.com/harness/gitness/internal/api/request"
|
||||
)
|
||||
|
||||
/*
|
||||
* HandleCreate returns an http.HandlerFunc that creates a new repository.
|
||||
*/
|
||||
// HandleCreate returns a http.HandlerFunc that creates a new repository.
|
||||
func HandleCreate(repoCtrl *repo.Controller) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
package repo
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/harness/gitness/internal/api/render"
|
||||
"github.com/harness/gitness/resources"
|
||||
)
|
||||
|
||||
func HandleGitIgnore() http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
entries, err := resources.Gitignore.ReadDir("gitignore")
|
||||
files := make([]string, len(entries))
|
||||
if err != nil {
|
||||
render.ErrorMessagef(w, http.StatusInternalServerError, "error loading gitignore files: %v", err)
|
||||
return
|
||||
}
|
||||
for i, filename := range entries {
|
||||
files[i] = strings.ReplaceAll(filename.Name(), ".gitignore", "")
|
||||
}
|
||||
render.JSON(w, http.StatusOK, files)
|
||||
}
|
||||
}
|
||||
|
||||
func HandleLicence() http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
response, err := resources.Licence.ReadFile("licence/index.json")
|
||||
if err != nil {
|
||||
render.ErrorMessagef(w, http.StatusInternalServerError, "error loading licence file: %v", err)
|
||||
return
|
||||
}
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
w.WriteHeader(http.StatusOK)
|
||||
_, _ = w.Write(response)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,259 @@
|
|||
package gitrpc
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/base64"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"path/filepath"
|
||||
"time"
|
||||
|
||||
"google.golang.org/grpc/codes"
|
||||
|
||||
"github.com/harness/gitness/internal/gitrpc/rpc"
|
||||
"github.com/rs/zerolog/log"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/credentials/insecure"
|
||||
"google.golang.org/grpc/status"
|
||||
)
|
||||
|
||||
var ErrNoParamsProvided = errors.New("no params provided")
|
||||
|
||||
type File struct {
|
||||
Name string
|
||||
Base64 bool
|
||||
Content []byte // probably base64 encoded data
|
||||
}
|
||||
|
||||
type RepositoryParams struct {
|
||||
Username string
|
||||
Name string
|
||||
Branch string
|
||||
}
|
||||
|
||||
type CreateRepositoryParams struct {
|
||||
RepositoryParams
|
||||
Files []File
|
||||
}
|
||||
|
||||
type UploadParams struct {
|
||||
RepositoryParams
|
||||
RepoPath string
|
||||
Path string
|
||||
}
|
||||
|
||||
type AddFilesAndCommitParams struct {
|
||||
RepoPath string
|
||||
Message string
|
||||
Files []string
|
||||
}
|
||||
|
||||
type Client struct {
|
||||
conn *grpc.ClientConn
|
||||
repoService rpc.RepositoryServiceClient
|
||||
uploadService rpc.UploadServiceClient
|
||||
}
|
||||
|
||||
func InitClient(remoteAddr string) (*Client, error) {
|
||||
conn, err := grpc.Dial(remoteAddr, grpc.WithTransportCredentials(insecure.NewCredentials()))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &Client{
|
||||
conn: conn,
|
||||
repoService: rpc.NewRepositoryServiceClient(conn),
|
||||
uploadService: rpc.NewUploadServiceClient(conn),
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Client) CreateRepository(ctx context.Context, params *CreateRepositoryParams) error {
|
||||
if params == nil {
|
||||
return ErrNoParamsProvided
|
||||
}
|
||||
ctx, cancel := context.WithTimeout(ctx, 60*time.Second)
|
||||
defer cancel()
|
||||
stream, err := c.repoService.CreateRepository(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err = c.sendCreateRepositoryRequest(stream, params); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(params.Files) > 0 {
|
||||
for _, file := range params.Files {
|
||||
// send filename message
|
||||
if err = c.sendCreateRepoFilePath(file.Name, stream); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// send file content
|
||||
buffer := make([]byte, 1024) // todo: chunk size need to be configurable
|
||||
reader := bytes.NewReader(file.Content)
|
||||
|
||||
for {
|
||||
err = c.process(file.Name, reader, buffer, stream)
|
||||
if errors.Is(err, io.EOF) {
|
||||
break
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
_, err = stream.CloseAndRecv()
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *Client) sendCreateRepositoryRequest(
|
||||
stream rpc.RepositoryService_CreateRepositoryClient,
|
||||
params *CreateRepositoryParams,
|
||||
) error {
|
||||
req := &rpc.CreateRepositoryRequest{
|
||||
Data: &rpc.CreateRepositoryRequest_Repository{
|
||||
Repository: &rpc.Repository{
|
||||
Owner: params.Username,
|
||||
Name: params.Name,
|
||||
DefaultBranch: params.Branch,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
return stream.Send(req)
|
||||
}
|
||||
|
||||
func (c *Client) sendCreateRepoFilePath(
|
||||
filename string,
|
||||
stream rpc.RepositoryService_CreateRepositoryClient,
|
||||
) error {
|
||||
req := &rpc.CreateRepositoryRequest{
|
||||
Data: &rpc.CreateRepositoryRequest_Filepath{
|
||||
Filepath: filename,
|
||||
},
|
||||
}
|
||||
log.Info().Msgf("start sending %v", filename)
|
||||
return stream.Send(req)
|
||||
}
|
||||
|
||||
func (c *Client) process(
|
||||
filename string,
|
||||
reader io.Reader,
|
||||
buffer []byte,
|
||||
stream rpc.RepositoryService_CreateRepositoryClient) error {
|
||||
n, err := reader.Read(buffer)
|
||||
if errors.Is(err, io.EOF) {
|
||||
log.Info().Msgf("EOF detected at %v", filename)
|
||||
buffer = []byte{'E', 'O', 'F'}
|
||||
_ = c.send(buffer, stream)
|
||||
return io.EOF
|
||||
}
|
||||
if err != nil {
|
||||
return fmt.Errorf("cannot read buffer: %w", err)
|
||||
}
|
||||
|
||||
return c.send(buffer[:n], stream)
|
||||
}
|
||||
|
||||
func (c *Client) send(buffer []byte, stream rpc.RepositoryService_CreateRepositoryClient) error {
|
||||
req := &rpc.CreateRepositoryRequest{
|
||||
Data: &rpc.CreateRepositoryRequest_ChunkData{
|
||||
ChunkData: buffer,
|
||||
},
|
||||
}
|
||||
|
||||
err := stream.Send(req)
|
||||
if err != nil {
|
||||
err = stream.RecvMsg(nil)
|
||||
return status.Errorf(codes.Internal, "cannot send chunk to server: %v", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Client) UploadFile(ctx context.Context, file *File, params *UploadParams) (string, error) {
|
||||
data := file.Content
|
||||
if file.Base64 {
|
||||
if _, err := base64.StdEncoding.Decode(data, file.Content); err != nil {
|
||||
return "", err
|
||||
}
|
||||
}
|
||||
_, err := c.Upload(ctx, params, bytes.NewBuffer(data))
|
||||
return file.Name, err
|
||||
}
|
||||
|
||||
func (c *Client) Upload(ctx context.Context, params *UploadParams, reader io.Reader) (string, error) {
|
||||
stream, err := c.uploadService.Upload(ctx)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("cannot upload file: %w", err)
|
||||
}
|
||||
|
||||
req := &rpc.UploadFileRequest{
|
||||
Data: &rpc.UploadFileRequest_Info{
|
||||
Info: &rpc.FileInfo{
|
||||
Username: params.Username,
|
||||
Repo: params.Name,
|
||||
Branch: params.Branch,
|
||||
Path: params.Path,
|
||||
RepoPath: params.RepoPath,
|
||||
FileType: filepath.Ext(params.Path),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
err = stream.Send(req)
|
||||
if err != nil {
|
||||
err = stream.RecvMsg(nil)
|
||||
return "", status.Errorf(codes.Internal, "cannot send file info to server: %v", err)
|
||||
}
|
||||
|
||||
buffer := make([]byte, 1024) // todo: chunk size need to be configurable
|
||||
|
||||
for {
|
||||
var n int
|
||||
n, err = reader.Read(buffer)
|
||||
if errors.Is(err, io.EOF) {
|
||||
break
|
||||
}
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("cannot read chunk to buffer: %w", err)
|
||||
}
|
||||
|
||||
req = &rpc.UploadFileRequest{
|
||||
Data: &rpc.UploadFileRequest_ChunkData{
|
||||
ChunkData: buffer[:n],
|
||||
},
|
||||
}
|
||||
|
||||
err = stream.Send(req)
|
||||
if err != nil {
|
||||
err = stream.RecvMsg(nil)
|
||||
return "", status.Errorf(codes.Internal, "cannot send chunk to server: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
res, err := stream.CloseAndRecv()
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("cannot receive response: %w", err)
|
||||
}
|
||||
fullPath := res.GetId()
|
||||
log.Debug().Msgf("image uploaded with id: %s, size: %d", fullPath, res.GetSize())
|
||||
return fullPath, nil
|
||||
}
|
||||
|
||||
func (c *Client) AddFilesAndPush(ctx context.Context, params *AddFilesAndCommitParams) error {
|
||||
if params == nil {
|
||||
return ErrNoParamsProvided
|
||||
}
|
||||
ctx, cancel := context.WithTimeout(ctx, 30*time.Second)
|
||||
defer cancel()
|
||||
_, err := c.repoService.AddFilesAndPush(ctx, &rpc.AddFilesAndPushRequest{
|
||||
RepoPath: params.RepoPath,
|
||||
Message: params.Message,
|
||||
Files: params.Files,
|
||||
})
|
||||
return err
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
package gitrpc
|
||||
|
||||
type Config struct {
|
||||
RepoRoot string
|
||||
RPCAddress string
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
package gitrpc
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
func getRepoRoot() string {
|
||||
repoRoot := os.Getenv("GITNESS_REPO_ROOT")
|
||||
if repoRoot == "" {
|
||||
homedir, err := os.UserHomeDir()
|
||||
if err == nil {
|
||||
repoRoot = homedir
|
||||
}
|
||||
}
|
||||
targetPath := filepath.Join(repoRoot, "repos")
|
||||
if _, err := os.Stat(targetPath); errors.Is(err, os.ErrNotExist) {
|
||||
if err = os.MkdirAll(targetPath, 0o700); err != nil {
|
||||
return repoRoot
|
||||
}
|
||||
}
|
||||
return targetPath
|
||||
}
|
|
@ -0,0 +1,75 @@
|
|||
package gitrpc
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"code.gitea.io/gitea/modules/git"
|
||||
)
|
||||
|
||||
type gitea struct {
|
||||
}
|
||||
|
||||
func newGitea() (gitea, error) {
|
||||
err := git.InitSimple(context.Background())
|
||||
if err != nil {
|
||||
return gitea{}, err
|
||||
}
|
||||
|
||||
return gitea{}, nil
|
||||
}
|
||||
|
||||
// InitRepository initializes a new Git repository.
|
||||
func (g gitea) InitRepository(ctx context.Context, path string, bare bool) error {
|
||||
return git.InitRepository(ctx, path, bare)
|
||||
}
|
||||
|
||||
// IsRepoURLAccessible checks if given repository URL is accessible.
|
||||
func (g gitea) IsRepoURLAccessible(ctx context.Context, url string) bool {
|
||||
return git.IsRepoURLAccessible(ctx, url)
|
||||
}
|
||||
|
||||
func (g gitea) Clone(ctx context.Context, from, to string, opts cloneRepoOption) error {
|
||||
return git.Clone(ctx, from, to, git.CloneRepoOptions{
|
||||
Timeout: opts.timeout,
|
||||
Mirror: opts.mirror,
|
||||
Bare: opts.bare,
|
||||
Quiet: opts.quiet,
|
||||
Branch: opts.branch,
|
||||
Shared: opts.shared,
|
||||
NoCheckout: opts.noCheckout,
|
||||
Depth: opts.depth,
|
||||
Filter: opts.filter,
|
||||
SkipTLSVerify: opts.skipTLSVerify,
|
||||
})
|
||||
}
|
||||
|
||||
func (g gitea) AddFiles(repoPath string, all bool, files ...string) error {
|
||||
return git.AddChanges(repoPath, all, files...)
|
||||
}
|
||||
|
||||
func (g gitea) Commit(repoPath string, opts commitChangesOptions) error {
|
||||
return git.CommitChanges(repoPath, git.CommitChangesOptions{
|
||||
Committer: &git.Signature{
|
||||
Name: opts.committer.name,
|
||||
Email: opts.committer.email,
|
||||
When: opts.committer.when,
|
||||
},
|
||||
Author: &git.Signature{
|
||||
Name: opts.author.name,
|
||||
Email: opts.author.email,
|
||||
When: opts.author.when,
|
||||
},
|
||||
Message: opts.message,
|
||||
})
|
||||
}
|
||||
|
||||
func (g gitea) Push(ctx context.Context, repoPath string, opts pushOptions) error {
|
||||
return git.Push(ctx, repoPath, git.PushOptions{
|
||||
Remote: opts.remote,
|
||||
Branch: opts.branch,
|
||||
Force: opts.force,
|
||||
Mirror: opts.mirror,
|
||||
Env: opts.env,
|
||||
Timeout: opts.timeout,
|
||||
})
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package gitrpc
|
||||
|
||||
import "context"
|
||||
|
||||
// gitAdapter for accessing git commands from gitea.
|
||||
type gitAdapter interface {
|
||||
InitRepository(ctx context.Context, path string, bare bool) error
|
||||
Clone(ctx context.Context, from, to string, opts cloneRepoOption) error
|
||||
AddFiles(repoPath string, all bool, files ...string) error
|
||||
Commit(repoPath string, opts commitChangesOptions) error
|
||||
Push(ctx context.Context, repoPath string, opts pushOptions) error
|
||||
}
|
||||
|
||||
type Interface interface {
|
||||
CreateRepository(ctx context.Context, params *CreateRepositoryParams) error
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
package gitrpc
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"sync"
|
||||
)
|
||||
|
||||
type localStore struct {
|
||||
mutex sync.RWMutex
|
||||
images map[string]bool
|
||||
}
|
||||
|
||||
func newLocalStore() *localStore {
|
||||
return &localStore{
|
||||
images: make(map[string]bool),
|
||||
}
|
||||
}
|
||||
|
||||
func (store *localStore) Save(filePath string, data bytes.Buffer) (string, error) {
|
||||
err := os.MkdirAll(filepath.Dir(filePath), 0o777)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
file, err := os.Create(filePath)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("cannot create file: %w", err)
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
_, err = data.WriteTo(file)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("cannot write to file: %w", err)
|
||||
}
|
||||
|
||||
store.mutex.Lock()
|
||||
defer store.mutex.Unlock()
|
||||
|
||||
store.images[filePath] = true
|
||||
|
||||
return filePath, nil
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/harness/gitness/internal/gitrpc/lock"
|
||||
)
|
||||
|
||||
func main() {
|
||||
c := &lock.Mutex{}
|
||||
wg := sync.WaitGroup{}
|
||||
wg.Add(2)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
log.Printf("1. Try to lock key: simple")
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||
defer cancel()
|
||||
lock, err := c.AcquireLock(ctx, "simple")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
log.Printf("1. Lock key: simple")
|
||||
time.Sleep(time.Second * 10)
|
||||
lock.Release()
|
||||
log.Printf("1. Release key: simple")
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
log.Printf("2. Try to lock key: simple")
|
||||
lock, err := c.AcquireLock(context.Background(), "simple")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
log.Printf("2. Lock key: simple")
|
||||
time.Sleep(time.Second * 20)
|
||||
lock.Release()
|
||||
log.Printf("2. Release key: simple")
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
log.Printf("3. Try to lock key: simple")
|
||||
lock, err := c.AcquireLock(context.Background(), "simple")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
|
||||
log.Printf("4. Try to lock key: simple")
|
||||
lck, err := c.AcquireLock(context.Background(), "simple")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
log.Printf("4. Lock key: simple")
|
||||
time.Sleep(time.Second * 10)
|
||||
lck.Release()
|
||||
log.Printf("4. Release key: simple")
|
||||
|
||||
log.Printf("3. Lock key: simple")
|
||||
time.Sleep(time.Second * 20)
|
||||
lock.Release()
|
||||
log.Printf("3. Release key: simple")
|
||||
}()
|
||||
|
||||
wg.Wait()
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
package lock
|
||||
|
||||
import "context"
|
||||
|
||||
// Locker acquires new lock based on key.
|
||||
type Locker interface {
|
||||
AcquireLock(ctx context.Context, key string) (*Lock, error)
|
||||
}
|
|
@ -0,0 +1,75 @@
|
|||
package lock
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"sync"
|
||||
)
|
||||
|
||||
// Mutex is basic locker implementation
|
||||
// do not use it in prod and distributed environment.
|
||||
type Mutex struct {
|
||||
mux sync.RWMutex
|
||||
locks map[string]*Lock
|
||||
}
|
||||
|
||||
func (c *Mutex) AcquireLock(ctx context.Context, key string) (*Lock, error) {
|
||||
if c == nil {
|
||||
return nil, errors.New("mutex not initialized")
|
||||
}
|
||||
|
||||
if c.locks == nil {
|
||||
c.locks = make(map[string]*Lock)
|
||||
}
|
||||
|
||||
c.mux.RLock()
|
||||
defer c.mux.RUnlock()
|
||||
|
||||
lock, ok := c.locks[key]
|
||||
if !ok {
|
||||
lock = &Lock{
|
||||
state: false,
|
||||
key: key,
|
||||
lockChan: make(chan struct{}, 1),
|
||||
}
|
||||
}
|
||||
select {
|
||||
case lock.lockChan <- struct{}{}:
|
||||
lock.state = true
|
||||
c.locks[key] = lock
|
||||
return lock, nil
|
||||
case <-ctx.Done():
|
||||
return nil, errors.New("deadline exceeded, lock not created")
|
||||
}
|
||||
}
|
||||
|
||||
// Lock represents an obtained, app wide lock.
|
||||
type Lock struct {
|
||||
state bool
|
||||
key string
|
||||
lockChan chan struct{}
|
||||
}
|
||||
|
||||
// Key returns the redis key used by the lock.
|
||||
func (l *Lock) Key() string {
|
||||
if l == nil {
|
||||
return ""
|
||||
}
|
||||
return l.key
|
||||
}
|
||||
|
||||
// Locked returns if this key is locked.
|
||||
func (l *Lock) Locked() bool {
|
||||
if l == nil {
|
||||
return false
|
||||
}
|
||||
return l.state
|
||||
}
|
||||
|
||||
// Release manually releases the lock.
|
||||
func (l *Lock) Release() {
|
||||
if l == nil {
|
||||
return
|
||||
}
|
||||
<-l.lockChan
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package lock
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestClient_AcquireLock(t *testing.T) {
|
||||
c := Mutex{}
|
||||
lock, err := c.AcquireLock(context.Background(), "simple")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
lock1, err := c.AcquireLock(context.Background(), "simple")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
lock.Release()
|
||||
lock1.Release()
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
syntax = "proto3";
|
||||
package rpc;
|
||||
|
||||
option go_package = "github.com/harness/gitness/gitrpc/rpc";
|
||||
|
||||
import "shared.proto";
|
||||
|
||||
// RepositoryService is a service providing RPCs accessing repositories as a whole.
|
||||
service RepositoryService {
|
||||
rpc CreateRepository(stream CreateRepositoryRequest) returns (CreateRepositoryResponse);
|
||||
rpc AddFilesAndPush(AddFilesAndPushRequest) returns (AddFilesAndPushResponse);
|
||||
}
|
||||
|
||||
service UploadService {
|
||||
rpc Upload(stream UploadFileRequest) returns (UploadFileResponse) {};
|
||||
}
|
||||
|
||||
message CreateRepositoryRequest {
|
||||
oneof data {
|
||||
Repository repository = 1;
|
||||
string filepath = 2;
|
||||
bytes chunk_data = 3;
|
||||
}
|
||||
}
|
||||
|
||||
message CreateRepositoryResponse {
|
||||
string temp_path = 1;
|
||||
}
|
||||
|
||||
message UploadFileRequest {
|
||||
oneof data {
|
||||
FileInfo info = 1;
|
||||
bytes chunk_data = 2;
|
||||
};
|
||||
}
|
||||
|
||||
message UploadFileResponse {
|
||||
string id = 1;
|
||||
uint32 size = 2;
|
||||
}
|
||||
|
||||
message FileInfo {
|
||||
string id = 1;
|
||||
string username = 2;
|
||||
string repo = 3;
|
||||
string branch = 4;
|
||||
string repo_path = 5;
|
||||
string path = 6;
|
||||
string file_type = 7;
|
||||
}
|
||||
|
||||
message AddFilesAndPushRequest {
|
||||
string repo_path = 1;
|
||||
string message = 2;
|
||||
repeated string files = 3;
|
||||
}
|
||||
|
||||
message AddFilesAndPushResponse {}
|
||||
|
||||
message Repository {
|
||||
string owner = 1;
|
||||
string name = 2;
|
||||
string default_branch = 3;
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
syntax = "proto3";
|
||||
package rpc;
|
||||
|
||||
option go_package = "github.com/harness/gitness/gitrpc/rpc";
|
|
@ -0,0 +1,182 @@
|
|||
package gitrpc
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"time"
|
||||
|
||||
"github.com/rs/zerolog/log"
|
||||
"google.golang.org/grpc/codes"
|
||||
"google.golang.org/grpc/status"
|
||||
|
||||
"github.com/harness/gitness/internal/gitrpc/rpc"
|
||||
)
|
||||
|
||||
type repositoryService struct {
|
||||
rpc.UnimplementedRepositoryServiceServer
|
||||
adapter gitAdapter
|
||||
store UploadStore
|
||||
}
|
||||
|
||||
//nolint:funlen,gocognit // needs to refactor this code
|
||||
func (s repositoryService) CreateRepository(stream rpc.RepositoryService_CreateRepositoryServer) error {
|
||||
repoRoot := getRepoRoot()
|
||||
// first get repo params from stream
|
||||
req, err := stream.Recv()
|
||||
if err != nil {
|
||||
return status.Errorf(codes.Unknown, "cannot receive create repository data")
|
||||
}
|
||||
|
||||
repo := req.GetRepository()
|
||||
log.Info().Msgf("receive an create repository request %v", repo)
|
||||
targetPath := filepath.Join(repoRoot, repo.Name)
|
||||
if _, err = os.Stat(targetPath); !os.IsNotExist(err) {
|
||||
return fmt.Errorf("repository exists already: %v", targetPath)
|
||||
}
|
||||
|
||||
// create repository in repos folder
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
err = s.adapter.InitRepository(ctx, targetPath, true)
|
||||
if err != nil {
|
||||
// on error cleanup repo dir
|
||||
defer func(path string) {
|
||||
_ = os.RemoveAll(path)
|
||||
}(targetPath)
|
||||
return fmt.Errorf("CreateRepository error: %w", err)
|
||||
}
|
||||
|
||||
// we need temp dir for cloning
|
||||
tempDir, err := os.MkdirTemp("", "*-"+repo.Name)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error creating temp dir for repo %s: %w", repo.Name, err)
|
||||
}
|
||||
defer func(path string) {
|
||||
// when repo is successfully created remove temp dir
|
||||
_ = os.RemoveAll(path)
|
||||
}(tempDir)
|
||||
|
||||
// Clone repository to temp dir
|
||||
if err = s.adapter.Clone(ctx, targetPath, tempDir, cloneRepoOption{}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// logic for receiving the files
|
||||
files := make([]string, 0, 16)
|
||||
for {
|
||||
log.Info().Msg("waiting to receive filepath data")
|
||||
req, err = stream.Recv()
|
||||
if errors.Is(err, io.EOF) {
|
||||
log.Info().Msg("EOF found")
|
||||
break
|
||||
}
|
||||
// get file path message
|
||||
filePath := req.GetFilepath()
|
||||
log.Info().Msgf("receiving file %s", filePath)
|
||||
// work with file content chunks
|
||||
fileData := bytes.Buffer{}
|
||||
fileSize := 0
|
||||
for {
|
||||
log.Info().Msg("waiting to receive more data")
|
||||
|
||||
req, err = stream.Recv()
|
||||
if errors.Is(err, io.EOF) {
|
||||
log.Print("no more data")
|
||||
break
|
||||
}
|
||||
|
||||
chunk := req.GetChunkData()
|
||||
size := len(chunk)
|
||||
|
||||
if len("EOF") == size && chunk[0] == 'E' && chunk[1] == 'O' && chunk[2] == 'F' {
|
||||
break
|
||||
}
|
||||
|
||||
log.Printf("received a chunk with size: %d", size)
|
||||
fileSize += size
|
||||
if fileSize > maxImageSize {
|
||||
return status.Errorf(codes.InvalidArgument, "file is too large: %d > %d", fileSize, maxImageSize)
|
||||
}
|
||||
_, err = fileData.Write(chunk)
|
||||
if err != nil {
|
||||
return status.Errorf(codes.Internal, "cannot write chunk data: %v", err)
|
||||
}
|
||||
}
|
||||
log.Info().Msgf("saving file %s in repo path %s", filePath, tempDir)
|
||||
fullPath := filepath.Join(tempDir, filePath)
|
||||
_, err = s.store.Save(fullPath, fileData)
|
||||
if err != nil {
|
||||
return status.Errorf(codes.Internal, "cannot save file to the store: %v", err)
|
||||
}
|
||||
files = append(files, filePath)
|
||||
}
|
||||
res := &rpc.CreateRepositoryResponse{
|
||||
TempPath: tempDir,
|
||||
}
|
||||
|
||||
if len(files) > 0 {
|
||||
if _, err = s.AddFilesAndPush(ctx, &rpc.AddFilesAndPushRequest{
|
||||
RepoPath: res.GetTempPath(),
|
||||
Message: "initial commit",
|
||||
Files: files,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
err = stream.SendAndClose(res)
|
||||
if err != nil {
|
||||
return status.Errorf(codes.Unknown, "cannot send response: %v", err)
|
||||
}
|
||||
|
||||
log.Info().Msgf("repository created: %s, path: %s", repo.Name, res.GetTempPath())
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s repositoryService) AddFilesAndPush(
|
||||
ctx context.Context,
|
||||
params *rpc.AddFilesAndPushRequest,
|
||||
) (*rpc.AddFilesAndPushResponse, error) {
|
||||
err := s.adapter.AddFiles(params.GetRepoPath(), false, params.GetFiles()...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
now := time.Now()
|
||||
err = s.adapter.Commit(params.GetRepoPath(), commitChangesOptions{
|
||||
committer: &signature{
|
||||
name: "enver",
|
||||
email: "enver.bisevac@harness.io",
|
||||
when: now,
|
||||
},
|
||||
author: &signature{
|
||||
name: "enver",
|
||||
email: "enver.bisevac@harness.io",
|
||||
when: now,
|
||||
},
|
||||
message: params.GetMessage(),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = s.adapter.Push(ctx, params.GetRepoPath(), pushOptions{
|
||||
remote: "origin",
|
||||
branch: "",
|
||||
force: false,
|
||||
mirror: false,
|
||||
env: nil,
|
||||
timeout: 0,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = os.RemoveAll(params.GetRepoPath())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &rpc.AddFilesAndPushResponse{}, nil
|
||||
}
|
|
@ -0,0 +1,803 @@
|
|||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.28.1
|
||||
// protoc v3.21.7
|
||||
// source: repo.proto
|
||||
|
||||
package rpc
|
||||
|
||||
import (
|
||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||
reflect "reflect"
|
||||
sync "sync"
|
||||
)
|
||||
|
||||
const (
|
||||
// Verify that this generated code is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||
)
|
||||
|
||||
type CreateRepositoryRequest struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
// Types that are assignable to Data:
|
||||
// *CreateRepositoryRequest_Repository
|
||||
// *CreateRepositoryRequest_Filepath
|
||||
// *CreateRepositoryRequest_ChunkData
|
||||
Data isCreateRepositoryRequest_Data `protobuf_oneof:"data"`
|
||||
}
|
||||
|
||||
func (x *CreateRepositoryRequest) Reset() {
|
||||
*x = CreateRepositoryRequest{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_repo_proto_msgTypes[0]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *CreateRepositoryRequest) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*CreateRepositoryRequest) ProtoMessage() {}
|
||||
|
||||
func (x *CreateRepositoryRequest) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_repo_proto_msgTypes[0]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use CreateRepositoryRequest.ProtoReflect.Descriptor instead.
|
||||
func (*CreateRepositoryRequest) Descriptor() ([]byte, []int) {
|
||||
return file_repo_proto_rawDescGZIP(), []int{0}
|
||||
}
|
||||
|
||||
func (m *CreateRepositoryRequest) GetData() isCreateRepositoryRequest_Data {
|
||||
if m != nil {
|
||||
return m.Data
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *CreateRepositoryRequest) GetRepository() *Repository {
|
||||
if x, ok := x.GetData().(*CreateRepositoryRequest_Repository); ok {
|
||||
return x.Repository
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *CreateRepositoryRequest) GetFilepath() string {
|
||||
if x, ok := x.GetData().(*CreateRepositoryRequest_Filepath); ok {
|
||||
return x.Filepath
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *CreateRepositoryRequest) GetChunkData() []byte {
|
||||
if x, ok := x.GetData().(*CreateRepositoryRequest_ChunkData); ok {
|
||||
return x.ChunkData
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type isCreateRepositoryRequest_Data interface {
|
||||
isCreateRepositoryRequest_Data()
|
||||
}
|
||||
|
||||
type CreateRepositoryRequest_Repository struct {
|
||||
Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3,oneof"`
|
||||
}
|
||||
|
||||
type CreateRepositoryRequest_Filepath struct {
|
||||
Filepath string `protobuf:"bytes,2,opt,name=filepath,proto3,oneof"`
|
||||
}
|
||||
|
||||
type CreateRepositoryRequest_ChunkData struct {
|
||||
ChunkData []byte `protobuf:"bytes,3,opt,name=chunk_data,json=chunkData,proto3,oneof"`
|
||||
}
|
||||
|
||||
func (*CreateRepositoryRequest_Repository) isCreateRepositoryRequest_Data() {}
|
||||
|
||||
func (*CreateRepositoryRequest_Filepath) isCreateRepositoryRequest_Data() {}
|
||||
|
||||
func (*CreateRepositoryRequest_ChunkData) isCreateRepositoryRequest_Data() {}
|
||||
|
||||
type CreateRepositoryResponse struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
TempPath string `protobuf:"bytes,1,opt,name=temp_path,json=tempPath,proto3" json:"temp_path,omitempty"`
|
||||
}
|
||||
|
||||
func (x *CreateRepositoryResponse) Reset() {
|
||||
*x = CreateRepositoryResponse{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_repo_proto_msgTypes[1]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *CreateRepositoryResponse) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*CreateRepositoryResponse) ProtoMessage() {}
|
||||
|
||||
func (x *CreateRepositoryResponse) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_repo_proto_msgTypes[1]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use CreateRepositoryResponse.ProtoReflect.Descriptor instead.
|
||||
func (*CreateRepositoryResponse) Descriptor() ([]byte, []int) {
|
||||
return file_repo_proto_rawDescGZIP(), []int{1}
|
||||
}
|
||||
|
||||
func (x *CreateRepositoryResponse) GetTempPath() string {
|
||||
if x != nil {
|
||||
return x.TempPath
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type UploadFileRequest struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
// Types that are assignable to Data:
|
||||
// *UploadFileRequest_Info
|
||||
// *UploadFileRequest_ChunkData
|
||||
Data isUploadFileRequest_Data `protobuf_oneof:"data"`
|
||||
}
|
||||
|
||||
func (x *UploadFileRequest) Reset() {
|
||||
*x = UploadFileRequest{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_repo_proto_msgTypes[2]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *UploadFileRequest) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*UploadFileRequest) ProtoMessage() {}
|
||||
|
||||
func (x *UploadFileRequest) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_repo_proto_msgTypes[2]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use UploadFileRequest.ProtoReflect.Descriptor instead.
|
||||
func (*UploadFileRequest) Descriptor() ([]byte, []int) {
|
||||
return file_repo_proto_rawDescGZIP(), []int{2}
|
||||
}
|
||||
|
||||
func (m *UploadFileRequest) GetData() isUploadFileRequest_Data {
|
||||
if m != nil {
|
||||
return m.Data
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *UploadFileRequest) GetInfo() *FileInfo {
|
||||
if x, ok := x.GetData().(*UploadFileRequest_Info); ok {
|
||||
return x.Info
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *UploadFileRequest) GetChunkData() []byte {
|
||||
if x, ok := x.GetData().(*UploadFileRequest_ChunkData); ok {
|
||||
return x.ChunkData
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type isUploadFileRequest_Data interface {
|
||||
isUploadFileRequest_Data()
|
||||
}
|
||||
|
||||
type UploadFileRequest_Info struct {
|
||||
Info *FileInfo `protobuf:"bytes,1,opt,name=info,proto3,oneof"`
|
||||
}
|
||||
|
||||
type UploadFileRequest_ChunkData struct {
|
||||
ChunkData []byte `protobuf:"bytes,2,opt,name=chunk_data,json=chunkData,proto3,oneof"`
|
||||
}
|
||||
|
||||
func (*UploadFileRequest_Info) isUploadFileRequest_Data() {}
|
||||
|
||||
func (*UploadFileRequest_ChunkData) isUploadFileRequest_Data() {}
|
||||
|
||||
type UploadFileResponse struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
|
||||
Size uint32 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"`
|
||||
}
|
||||
|
||||
func (x *UploadFileResponse) Reset() {
|
||||
*x = UploadFileResponse{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_repo_proto_msgTypes[3]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *UploadFileResponse) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*UploadFileResponse) ProtoMessage() {}
|
||||
|
||||
func (x *UploadFileResponse) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_repo_proto_msgTypes[3]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use UploadFileResponse.ProtoReflect.Descriptor instead.
|
||||
func (*UploadFileResponse) Descriptor() ([]byte, []int) {
|
||||
return file_repo_proto_rawDescGZIP(), []int{3}
|
||||
}
|
||||
|
||||
func (x *UploadFileResponse) GetId() string {
|
||||
if x != nil {
|
||||
return x.Id
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *UploadFileResponse) GetSize() uint32 {
|
||||
if x != nil {
|
||||
return x.Size
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type FileInfo struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
|
||||
Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
|
||||
Repo string `protobuf:"bytes,3,opt,name=repo,proto3" json:"repo,omitempty"`
|
||||
Branch string `protobuf:"bytes,4,opt,name=branch,proto3" json:"branch,omitempty"`
|
||||
RepoPath string `protobuf:"bytes,5,opt,name=repo_path,json=repoPath,proto3" json:"repo_path,omitempty"`
|
||||
Path string `protobuf:"bytes,6,opt,name=path,proto3" json:"path,omitempty"`
|
||||
FileType string `protobuf:"bytes,7,opt,name=file_type,json=fileType,proto3" json:"file_type,omitempty"`
|
||||
}
|
||||
|
||||
func (x *FileInfo) Reset() {
|
||||
*x = FileInfo{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_repo_proto_msgTypes[4]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *FileInfo) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*FileInfo) ProtoMessage() {}
|
||||
|
||||
func (x *FileInfo) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_repo_proto_msgTypes[4]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use FileInfo.ProtoReflect.Descriptor instead.
|
||||
func (*FileInfo) Descriptor() ([]byte, []int) {
|
||||
return file_repo_proto_rawDescGZIP(), []int{4}
|
||||
}
|
||||
|
||||
func (x *FileInfo) GetId() string {
|
||||
if x != nil {
|
||||
return x.Id
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *FileInfo) GetUsername() string {
|
||||
if x != nil {
|
||||
return x.Username
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *FileInfo) GetRepo() string {
|
||||
if x != nil {
|
||||
return x.Repo
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *FileInfo) GetBranch() string {
|
||||
if x != nil {
|
||||
return x.Branch
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *FileInfo) GetRepoPath() string {
|
||||
if x != nil {
|
||||
return x.RepoPath
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *FileInfo) GetPath() string {
|
||||
if x != nil {
|
||||
return x.Path
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *FileInfo) GetFileType() string {
|
||||
if x != nil {
|
||||
return x.FileType
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type AddFilesAndPushRequest struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
RepoPath string `protobuf:"bytes,1,opt,name=repo_path,json=repoPath,proto3" json:"repo_path,omitempty"`
|
||||
Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
|
||||
Files []string `protobuf:"bytes,3,rep,name=files,proto3" json:"files,omitempty"`
|
||||
}
|
||||
|
||||
func (x *AddFilesAndPushRequest) Reset() {
|
||||
*x = AddFilesAndPushRequest{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_repo_proto_msgTypes[5]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *AddFilesAndPushRequest) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*AddFilesAndPushRequest) ProtoMessage() {}
|
||||
|
||||
func (x *AddFilesAndPushRequest) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_repo_proto_msgTypes[5]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use AddFilesAndPushRequest.ProtoReflect.Descriptor instead.
|
||||
func (*AddFilesAndPushRequest) Descriptor() ([]byte, []int) {
|
||||
return file_repo_proto_rawDescGZIP(), []int{5}
|
||||
}
|
||||
|
||||
func (x *AddFilesAndPushRequest) GetRepoPath() string {
|
||||
if x != nil {
|
||||
return x.RepoPath
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *AddFilesAndPushRequest) GetMessage() string {
|
||||
if x != nil {
|
||||
return x.Message
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *AddFilesAndPushRequest) GetFiles() []string {
|
||||
if x != nil {
|
||||
return x.Files
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type AddFilesAndPushResponse struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
}
|
||||
|
||||
func (x *AddFilesAndPushResponse) Reset() {
|
||||
*x = AddFilesAndPushResponse{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_repo_proto_msgTypes[6]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *AddFilesAndPushResponse) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*AddFilesAndPushResponse) ProtoMessage() {}
|
||||
|
||||
func (x *AddFilesAndPushResponse) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_repo_proto_msgTypes[6]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use AddFilesAndPushResponse.ProtoReflect.Descriptor instead.
|
||||
func (*AddFilesAndPushResponse) Descriptor() ([]byte, []int) {
|
||||
return file_repo_proto_rawDescGZIP(), []int{6}
|
||||
}
|
||||
|
||||
type Repository struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"`
|
||||
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
|
||||
DefaultBranch string `protobuf:"bytes,3,opt,name=default_branch,json=defaultBranch,proto3" json:"default_branch,omitempty"`
|
||||
}
|
||||
|
||||
func (x *Repository) Reset() {
|
||||
*x = Repository{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_repo_proto_msgTypes[7]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *Repository) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*Repository) ProtoMessage() {}
|
||||
|
||||
func (x *Repository) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_repo_proto_msgTypes[7]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use Repository.ProtoReflect.Descriptor instead.
|
||||
func (*Repository) Descriptor() ([]byte, []int) {
|
||||
return file_repo_proto_rawDescGZIP(), []int{7}
|
||||
}
|
||||
|
||||
func (x *Repository) GetOwner() string {
|
||||
if x != nil {
|
||||
return x.Owner
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *Repository) GetName() string {
|
||||
if x != nil {
|
||||
return x.Name
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *Repository) GetDefaultBranch() string {
|
||||
if x != nil {
|
||||
return x.DefaultBranch
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
var File_repo_proto protoreflect.FileDescriptor
|
||||
|
||||
var file_repo_proto_rawDesc = []byte{
|
||||
0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x72, 0x70,
|
||||
0x63, 0x1a, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
|
||||
0x93, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69,
|
||||
0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x0a, 0x72,
|
||||
0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
|
||||
0x0f, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79,
|
||||
0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1c,
|
||||
0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
|
||||
0x48, 0x00, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0a,
|
||||
0x63, 0x68, 0x75, 0x6e, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c,
|
||||
0x48, 0x00, 0x52, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a,
|
||||
0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x37, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52,
|
||||
0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
|
||||
0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01,
|
||||
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x50, 0x61, 0x74, 0x68, 0x22, 0x61,
|
||||
0x0a, 0x11, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75,
|
||||
0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28,
|
||||
0x0b, 0x32, 0x0d, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f,
|
||||
0x48, 0x00, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x1f, 0x0a, 0x0a, 0x63, 0x68, 0x75, 0x6e,
|
||||
0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x09,
|
||||
0x63, 0x68, 0x75, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74,
|
||||
0x61, 0x22, 0x38, 0x0a, 0x12, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x52,
|
||||
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
|
||||
0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18,
|
||||
0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0xb0, 0x01, 0x0a, 0x08,
|
||||
0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
|
||||
0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72,
|
||||
0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72,
|
||||
0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x03, 0x20, 0x01,
|
||||
0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e,
|
||||
0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68,
|
||||
0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20,
|
||||
0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x50, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a,
|
||||
0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74,
|
||||
0x68, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07,
|
||||
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x65,
|
||||
0x0a, 0x16, 0x41, 0x64, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x50, 0x75, 0x73,
|
||||
0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f,
|
||||
0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70,
|
||||
0x6f, 0x50, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
|
||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
|
||||
0x14, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05,
|
||||
0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x41, 0x64, 0x64, 0x46, 0x69, 0x6c, 0x65,
|
||||
0x73, 0x41, 0x6e, 0x64, 0x50, 0x75, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
|
||||
0x22, 0x5d, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x14,
|
||||
0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f,
|
||||
0x77, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
|
||||
0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61,
|
||||
0x75, 0x6c, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
|
||||
0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x32,
|
||||
0xb4, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65,
|
||||
0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x51, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52,
|
||||
0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x2e, 0x72, 0x70, 0x63, 0x2e,
|
||||
0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79,
|
||||
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x72,
|
||||
0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65,
|
||||
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x12, 0x4c, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x46,
|
||||
0x69, 0x6c, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x50, 0x75, 0x73, 0x68, 0x12, 0x1b, 0x2e, 0x72, 0x70,
|
||||
0x63, 0x2e, 0x41, 0x64, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x50, 0x75, 0x73,
|
||||
0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x41,
|
||||
0x64, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x50, 0x75, 0x73, 0x68, 0x52, 0x65,
|
||||
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x4e, 0x0a, 0x0d, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64,
|
||||
0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x55, 0x70, 0x6c, 0x6f, 0x61,
|
||||
0x64, 0x12, 0x16, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69,
|
||||
0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x72, 0x70, 0x63, 0x2e,
|
||||
0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
|
||||
0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x42, 0x27, 0x5a, 0x25, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
|
||||
0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x72, 0x6e, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x69, 0x74,
|
||||
0x6e, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x69, 0x74, 0x72, 0x70, 0x63, 0x2f, 0x72, 0x70, 0x63, 0x62,
|
||||
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
file_repo_proto_rawDescOnce sync.Once
|
||||
file_repo_proto_rawDescData = file_repo_proto_rawDesc
|
||||
)
|
||||
|
||||
func file_repo_proto_rawDescGZIP() []byte {
|
||||
file_repo_proto_rawDescOnce.Do(func() {
|
||||
file_repo_proto_rawDescData = protoimpl.X.CompressGZIP(file_repo_proto_rawDescData)
|
||||
})
|
||||
return file_repo_proto_rawDescData
|
||||
}
|
||||
|
||||
var file_repo_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
|
||||
var file_repo_proto_goTypes = []interface{}{
|
||||
(*CreateRepositoryRequest)(nil), // 0: rpc.CreateRepositoryRequest
|
||||
(*CreateRepositoryResponse)(nil), // 1: rpc.CreateRepositoryResponse
|
||||
(*UploadFileRequest)(nil), // 2: rpc.UploadFileRequest
|
||||
(*UploadFileResponse)(nil), // 3: rpc.UploadFileResponse
|
||||
(*FileInfo)(nil), // 4: rpc.FileInfo
|
||||
(*AddFilesAndPushRequest)(nil), // 5: rpc.AddFilesAndPushRequest
|
||||
(*AddFilesAndPushResponse)(nil), // 6: rpc.AddFilesAndPushResponse
|
||||
(*Repository)(nil), // 7: rpc.Repository
|
||||
}
|
||||
var file_repo_proto_depIdxs = []int32{
|
||||
7, // 0: rpc.CreateRepositoryRequest.repository:type_name -> rpc.Repository
|
||||
4, // 1: rpc.UploadFileRequest.info:type_name -> rpc.FileInfo
|
||||
0, // 2: rpc.RepositoryService.CreateRepository:input_type -> rpc.CreateRepositoryRequest
|
||||
5, // 3: rpc.RepositoryService.AddFilesAndPush:input_type -> rpc.AddFilesAndPushRequest
|
||||
2, // 4: rpc.UploadService.Upload:input_type -> rpc.UploadFileRequest
|
||||
1, // 5: rpc.RepositoryService.CreateRepository:output_type -> rpc.CreateRepositoryResponse
|
||||
6, // 6: rpc.RepositoryService.AddFilesAndPush:output_type -> rpc.AddFilesAndPushResponse
|
||||
3, // 7: rpc.UploadService.Upload:output_type -> rpc.UploadFileResponse
|
||||
5, // [5:8] is the sub-list for method output_type
|
||||
2, // [2:5] is the sub-list for method input_type
|
||||
2, // [2:2] is the sub-list for extension type_name
|
||||
2, // [2:2] is the sub-list for extension extendee
|
||||
0, // [0:2] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_repo_proto_init() }
|
||||
func file_repo_proto_init() {
|
||||
if File_repo_proto != nil {
|
||||
return
|
||||
}
|
||||
file_shared_proto_init()
|
||||
if !protoimpl.UnsafeEnabled {
|
||||
file_repo_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*CreateRepositoryRequest); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_repo_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*CreateRepositoryResponse); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_repo_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*UploadFileRequest); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_repo_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*UploadFileResponse); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_repo_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*FileInfo); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_repo_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*AddFilesAndPushRequest); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_repo_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*AddFilesAndPushResponse); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_repo_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*Repository); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
file_repo_proto_msgTypes[0].OneofWrappers = []interface{}{
|
||||
(*CreateRepositoryRequest_Repository)(nil),
|
||||
(*CreateRepositoryRequest_Filepath)(nil),
|
||||
(*CreateRepositoryRequest_ChunkData)(nil),
|
||||
}
|
||||
file_repo_proto_msgTypes[2].OneofWrappers = []interface{}{
|
||||
(*UploadFileRequest_Info)(nil),
|
||||
(*UploadFileRequest_ChunkData)(nil),
|
||||
}
|
||||
type x struct{}
|
||||
out := protoimpl.TypeBuilder{
|
||||
File: protoimpl.DescBuilder{
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_repo_proto_rawDesc,
|
||||
NumEnums: 0,
|
||||
NumMessages: 8,
|
||||
NumExtensions: 0,
|
||||
NumServices: 2,
|
||||
},
|
||||
GoTypes: file_repo_proto_goTypes,
|
||||
DependencyIndexes: file_repo_proto_depIdxs,
|
||||
MessageInfos: file_repo_proto_msgTypes,
|
||||
}.Build()
|
||||
File_repo_proto = out.File
|
||||
file_repo_proto_rawDesc = nil
|
||||
file_repo_proto_goTypes = nil
|
||||
file_repo_proto_depIdxs = nil
|
||||
}
|
|
@ -0,0 +1,296 @@
|
|||
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
|
||||
// versions:
|
||||
// - protoc-gen-go-grpc v1.2.0
|
||||
// - protoc v3.21.7
|
||||
// source: repo.proto
|
||||
|
||||
package rpc
|
||||
|
||||
import (
|
||||
context "context"
|
||||
grpc "google.golang.org/grpc"
|
||||
codes "google.golang.org/grpc/codes"
|
||||
status "google.golang.org/grpc/status"
|
||||
)
|
||||
|
||||
// This is a compile-time assertion to ensure that this generated file
|
||||
// is compatible with the grpc package it is being compiled against.
|
||||
// Requires gRPC-Go v1.32.0 or later.
|
||||
const _ = grpc.SupportPackageIsVersion7
|
||||
|
||||
// RepositoryServiceClient is the client API for RepositoryService service.
|
||||
//
|
||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
|
||||
type RepositoryServiceClient interface {
|
||||
CreateRepository(ctx context.Context, opts ...grpc.CallOption) (RepositoryService_CreateRepositoryClient, error)
|
||||
AddFilesAndPush(ctx context.Context, in *AddFilesAndPushRequest, opts ...grpc.CallOption) (*AddFilesAndPushResponse, error)
|
||||
}
|
||||
|
||||
type repositoryServiceClient struct {
|
||||
cc grpc.ClientConnInterface
|
||||
}
|
||||
|
||||
func NewRepositoryServiceClient(cc grpc.ClientConnInterface) RepositoryServiceClient {
|
||||
return &repositoryServiceClient{cc}
|
||||
}
|
||||
|
||||
func (c *repositoryServiceClient) CreateRepository(ctx context.Context, opts ...grpc.CallOption) (RepositoryService_CreateRepositoryClient, error) {
|
||||
stream, err := c.cc.NewStream(ctx, &RepositoryService_ServiceDesc.Streams[0], "/rpc.RepositoryService/CreateRepository", opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
x := &repositoryServiceCreateRepositoryClient{stream}
|
||||
return x, nil
|
||||
}
|
||||
|
||||
type RepositoryService_CreateRepositoryClient interface {
|
||||
Send(*CreateRepositoryRequest) error
|
||||
CloseAndRecv() (*CreateRepositoryResponse, error)
|
||||
grpc.ClientStream
|
||||
}
|
||||
|
||||
type repositoryServiceCreateRepositoryClient struct {
|
||||
grpc.ClientStream
|
||||
}
|
||||
|
||||
func (x *repositoryServiceCreateRepositoryClient) Send(m *CreateRepositoryRequest) error {
|
||||
return x.ClientStream.SendMsg(m)
|
||||
}
|
||||
|
||||
func (x *repositoryServiceCreateRepositoryClient) CloseAndRecv() (*CreateRepositoryResponse, error) {
|
||||
if err := x.ClientStream.CloseSend(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
m := new(CreateRepositoryResponse)
|
||||
if err := x.ClientStream.RecvMsg(m); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
func (c *repositoryServiceClient) AddFilesAndPush(ctx context.Context, in *AddFilesAndPushRequest, opts ...grpc.CallOption) (*AddFilesAndPushResponse, error) {
|
||||
out := new(AddFilesAndPushResponse)
|
||||
err := c.cc.Invoke(ctx, "/rpc.RepositoryService/AddFilesAndPush", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// RepositoryServiceServer is the server API for RepositoryService service.
|
||||
// All implementations must embed UnimplementedRepositoryServiceServer
|
||||
// for forward compatibility
|
||||
type RepositoryServiceServer interface {
|
||||
CreateRepository(RepositoryService_CreateRepositoryServer) error
|
||||
AddFilesAndPush(context.Context, *AddFilesAndPushRequest) (*AddFilesAndPushResponse, error)
|
||||
mustEmbedUnimplementedRepositoryServiceServer()
|
||||
}
|
||||
|
||||
// UnimplementedRepositoryServiceServer must be embedded to have forward compatible implementations.
|
||||
type UnimplementedRepositoryServiceServer struct {
|
||||
}
|
||||
|
||||
func (UnimplementedRepositoryServiceServer) CreateRepository(RepositoryService_CreateRepositoryServer) error {
|
||||
return status.Errorf(codes.Unimplemented, "method CreateRepository not implemented")
|
||||
}
|
||||
func (UnimplementedRepositoryServiceServer) AddFilesAndPush(context.Context, *AddFilesAndPushRequest) (*AddFilesAndPushResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method AddFilesAndPush not implemented")
|
||||
}
|
||||
func (UnimplementedRepositoryServiceServer) mustEmbedUnimplementedRepositoryServiceServer() {}
|
||||
|
||||
// UnsafeRepositoryServiceServer may be embedded to opt out of forward compatibility for this service.
|
||||
// Use of this interface is not recommended, as added methods to RepositoryServiceServer will
|
||||
// result in compilation errors.
|
||||
type UnsafeRepositoryServiceServer interface {
|
||||
mustEmbedUnimplementedRepositoryServiceServer()
|
||||
}
|
||||
|
||||
func RegisterRepositoryServiceServer(s grpc.ServiceRegistrar, srv RepositoryServiceServer) {
|
||||
s.RegisterService(&RepositoryService_ServiceDesc, srv)
|
||||
}
|
||||
|
||||
func _RepositoryService_CreateRepository_Handler(srv interface{}, stream grpc.ServerStream) error {
|
||||
return srv.(RepositoryServiceServer).CreateRepository(&repositoryServiceCreateRepositoryServer{stream})
|
||||
}
|
||||
|
||||
type RepositoryService_CreateRepositoryServer interface {
|
||||
SendAndClose(*CreateRepositoryResponse) error
|
||||
Recv() (*CreateRepositoryRequest, error)
|
||||
grpc.ServerStream
|
||||
}
|
||||
|
||||
type repositoryServiceCreateRepositoryServer struct {
|
||||
grpc.ServerStream
|
||||
}
|
||||
|
||||
func (x *repositoryServiceCreateRepositoryServer) SendAndClose(m *CreateRepositoryResponse) error {
|
||||
return x.ServerStream.SendMsg(m)
|
||||
}
|
||||
|
||||
func (x *repositoryServiceCreateRepositoryServer) Recv() (*CreateRepositoryRequest, error) {
|
||||
m := new(CreateRepositoryRequest)
|
||||
if err := x.ServerStream.RecvMsg(m); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
func _RepositoryService_AddFilesAndPush_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(AddFilesAndPushRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(RepositoryServiceServer).AddFilesAndPush(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/rpc.RepositoryService/AddFilesAndPush",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(RepositoryServiceServer).AddFilesAndPush(ctx, req.(*AddFilesAndPushRequest))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
// RepositoryService_ServiceDesc is the grpc.ServiceDesc for RepositoryService service.
|
||||
// It's only intended for direct use with grpc.RegisterService,
|
||||
// and not to be introspected or modified (even as a copy)
|
||||
var RepositoryService_ServiceDesc = grpc.ServiceDesc{
|
||||
ServiceName: "rpc.RepositoryService",
|
||||
HandlerType: (*RepositoryServiceServer)(nil),
|
||||
Methods: []grpc.MethodDesc{
|
||||
{
|
||||
MethodName: "AddFilesAndPush",
|
||||
Handler: _RepositoryService_AddFilesAndPush_Handler,
|
||||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{
|
||||
{
|
||||
StreamName: "CreateRepository",
|
||||
Handler: _RepositoryService_CreateRepository_Handler,
|
||||
ClientStreams: true,
|
||||
},
|
||||
},
|
||||
Metadata: "repo.proto",
|
||||
}
|
||||
|
||||
// UploadServiceClient is the client API for UploadService service.
|
||||
//
|
||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
|
||||
type UploadServiceClient interface {
|
||||
Upload(ctx context.Context, opts ...grpc.CallOption) (UploadService_UploadClient, error)
|
||||
}
|
||||
|
||||
type uploadServiceClient struct {
|
||||
cc grpc.ClientConnInterface
|
||||
}
|
||||
|
||||
func NewUploadServiceClient(cc grpc.ClientConnInterface) UploadServiceClient {
|
||||
return &uploadServiceClient{cc}
|
||||
}
|
||||
|
||||
func (c *uploadServiceClient) Upload(ctx context.Context, opts ...grpc.CallOption) (UploadService_UploadClient, error) {
|
||||
stream, err := c.cc.NewStream(ctx, &UploadService_ServiceDesc.Streams[0], "/rpc.UploadService/Upload", opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
x := &uploadServiceUploadClient{stream}
|
||||
return x, nil
|
||||
}
|
||||
|
||||
type UploadService_UploadClient interface {
|
||||
Send(*UploadFileRequest) error
|
||||
CloseAndRecv() (*UploadFileResponse, error)
|
||||
grpc.ClientStream
|
||||
}
|
||||
|
||||
type uploadServiceUploadClient struct {
|
||||
grpc.ClientStream
|
||||
}
|
||||
|
||||
func (x *uploadServiceUploadClient) Send(m *UploadFileRequest) error {
|
||||
return x.ClientStream.SendMsg(m)
|
||||
}
|
||||
|
||||
func (x *uploadServiceUploadClient) CloseAndRecv() (*UploadFileResponse, error) {
|
||||
if err := x.ClientStream.CloseSend(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
m := new(UploadFileResponse)
|
||||
if err := x.ClientStream.RecvMsg(m); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
// UploadServiceServer is the server API for UploadService service.
|
||||
// All implementations must embed UnimplementedUploadServiceServer
|
||||
// for forward compatibility
|
||||
type UploadServiceServer interface {
|
||||
Upload(UploadService_UploadServer) error
|
||||
mustEmbedUnimplementedUploadServiceServer()
|
||||
}
|
||||
|
||||
// UnimplementedUploadServiceServer must be embedded to have forward compatible implementations.
|
||||
type UnimplementedUploadServiceServer struct {
|
||||
}
|
||||
|
||||
func (UnimplementedUploadServiceServer) Upload(UploadService_UploadServer) error {
|
||||
return status.Errorf(codes.Unimplemented, "method Upload not implemented")
|
||||
}
|
||||
func (UnimplementedUploadServiceServer) mustEmbedUnimplementedUploadServiceServer() {}
|
||||
|
||||
// UnsafeUploadServiceServer may be embedded to opt out of forward compatibility for this service.
|
||||
// Use of this interface is not recommended, as added methods to UploadServiceServer will
|
||||
// result in compilation errors.
|
||||
type UnsafeUploadServiceServer interface {
|
||||
mustEmbedUnimplementedUploadServiceServer()
|
||||
}
|
||||
|
||||
func RegisterUploadServiceServer(s grpc.ServiceRegistrar, srv UploadServiceServer) {
|
||||
s.RegisterService(&UploadService_ServiceDesc, srv)
|
||||
}
|
||||
|
||||
func _UploadService_Upload_Handler(srv interface{}, stream grpc.ServerStream) error {
|
||||
return srv.(UploadServiceServer).Upload(&uploadServiceUploadServer{stream})
|
||||
}
|
||||
|
||||
type UploadService_UploadServer interface {
|
||||
SendAndClose(*UploadFileResponse) error
|
||||
Recv() (*UploadFileRequest, error)
|
||||
grpc.ServerStream
|
||||
}
|
||||
|
||||
type uploadServiceUploadServer struct {
|
||||
grpc.ServerStream
|
||||
}
|
||||
|
||||
func (x *uploadServiceUploadServer) SendAndClose(m *UploadFileResponse) error {
|
||||
return x.ServerStream.SendMsg(m)
|
||||
}
|
||||
|
||||
func (x *uploadServiceUploadServer) Recv() (*UploadFileRequest, error) {
|
||||
m := new(UploadFileRequest)
|
||||
if err := x.ServerStream.RecvMsg(m); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
// UploadService_ServiceDesc is the grpc.ServiceDesc for UploadService service.
|
||||
// It's only intended for direct use with grpc.RegisterService,
|
||||
// and not to be introspected or modified (even as a copy)
|
||||
var UploadService_ServiceDesc = grpc.ServiceDesc{
|
||||
ServiceName: "rpc.UploadService",
|
||||
HandlerType: (*UploadServiceServer)(nil),
|
||||
Methods: []grpc.MethodDesc{},
|
||||
Streams: []grpc.StreamDesc{
|
||||
{
|
||||
StreamName: "Upload",
|
||||
Handler: _UploadService_Upload_Handler,
|
||||
ClientStreams: true,
|
||||
},
|
||||
},
|
||||
Metadata: "repo.proto",
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.28.1
|
||||
// protoc v3.21.7
|
||||
// source: shared.proto
|
||||
|
||||
package rpc
|
||||
|
||||
import (
|
||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||
reflect "reflect"
|
||||
)
|
||||
|
||||
const (
|
||||
// Verify that this generated code is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||
)
|
||||
|
||||
var File_shared_proto protoreflect.FileDescriptor
|
||||
|
||||
var file_shared_proto_rawDesc = []byte{
|
||||
0x0a, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03,
|
||||
0x72, 0x70, 0x63, 0x42, 0x27, 0x5a, 0x25, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
|
||||
0x6d, 0x2f, 0x68, 0x61, 0x72, 0x6e, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x69, 0x74, 0x6e, 0x65, 0x73,
|
||||
0x73, 0x2f, 0x67, 0x69, 0x74, 0x72, 0x70, 0x63, 0x2f, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var file_shared_proto_goTypes = []interface{}{}
|
||||
var file_shared_proto_depIdxs = []int32{
|
||||
0, // [0:0] is the sub-list for method output_type
|
||||
0, // [0:0] is the sub-list for method input_type
|
||||
0, // [0:0] is the sub-list for extension type_name
|
||||
0, // [0:0] is the sub-list for extension extendee
|
||||
0, // [0:0] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_shared_proto_init() }
|
||||
func file_shared_proto_init() {
|
||||
if File_shared_proto != nil {
|
||||
return
|
||||
}
|
||||
type x struct{}
|
||||
out := protoimpl.TypeBuilder{
|
||||
File: protoimpl.DescBuilder{
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_shared_proto_rawDesc,
|
||||
NumEnums: 0,
|
||||
NumMessages: 0,
|
||||
NumExtensions: 0,
|
||||
NumServices: 0,
|
||||
},
|
||||
GoTypes: file_shared_proto_goTypes,
|
||||
DependencyIndexes: file_shared_proto_depIdxs,
|
||||
}.Build()
|
||||
File_shared_proto = out.File
|
||||
file_shared_proto_rawDesc = nil
|
||||
file_shared_proto_goTypes = nil
|
||||
file_shared_proto_depIdxs = nil
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
package gitrpc
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"github.com/harness/gitness/internal/gitrpc/rpc"
|
||||
"google.golang.org/grpc"
|
||||
)
|
||||
|
||||
type Server struct {
|
||||
*grpc.Server
|
||||
Port int
|
||||
}
|
||||
|
||||
func NewServer(port int) (*Server, error) {
|
||||
setting.Git.HomePath = "home"
|
||||
adapter, err := newGitea()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
s := grpc.NewServer()
|
||||
store := newLocalStore()
|
||||
rpc.RegisterRepositoryServiceServer(s, &repositoryService{adapter: adapter, store: store})
|
||||
rpc.RegisterUploadServiceServer(s, newUploadService(adapter, store))
|
||||
return &Server{
|
||||
Server: s,
|
||||
Port: port,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *Server) Start() error {
|
||||
lis, err := net.Listen("tcp", fmt.Sprintf(":%d", s.Port))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return s.Server.Serve(lis)
|
||||
}
|
||||
|
||||
func (s *Server) Stop() error {
|
||||
s.Server.GracefulStop()
|
||||
return nil
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
package gitrpc
|
||||
|
||||
import "time"
|
||||
|
||||
type cloneRepoOption struct {
|
||||
timeout time.Duration
|
||||
mirror bool
|
||||
bare bool
|
||||
quiet bool
|
||||
branch string
|
||||
shared bool
|
||||
noCheckout bool
|
||||
depth int
|
||||
filter string
|
||||
skipTLSVerify bool
|
||||
}
|
||||
|
||||
// signature represents the Author or Committer information.
|
||||
type signature struct {
|
||||
// name represents a person name. It is an arbitrary string.
|
||||
name string
|
||||
// email is an email, but it cannot be assumed to be well-formed.
|
||||
email string
|
||||
// When is the timestamp of the signature.
|
||||
when time.Time
|
||||
}
|
||||
|
||||
type commitChangesOptions struct {
|
||||
committer *signature
|
||||
author *signature
|
||||
message string
|
||||
}
|
||||
|
||||
type pushOptions struct {
|
||||
remote string
|
||||
branch string
|
||||
force bool
|
||||
mirror bool
|
||||
env []string
|
||||
timeout time.Duration
|
||||
}
|
|
@ -0,0 +1,91 @@
|
|||
package gitrpc
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"io"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/harness/gitness/internal/gitrpc/rpc"
|
||||
"github.com/rs/zerolog/log"
|
||||
"google.golang.org/grpc/codes"
|
||||
"google.golang.org/grpc/status"
|
||||
)
|
||||
|
||||
const maxImageSize = 1 << 20
|
||||
|
||||
type UploadStore interface {
|
||||
Save(filePath string, data bytes.Buffer) (string, error)
|
||||
}
|
||||
|
||||
type uploadService struct {
|
||||
rpc.UnimplementedUploadServiceServer
|
||||
store UploadStore
|
||||
adapter gitAdapter
|
||||
}
|
||||
|
||||
func newUploadService(adapter gitAdapter, store UploadStore) *uploadService {
|
||||
return &uploadService{
|
||||
adapter: adapter,
|
||||
store: store,
|
||||
}
|
||||
}
|
||||
|
||||
func (s uploadService) Upload(stream rpc.UploadService_UploadServer) error {
|
||||
req, err := stream.Recv()
|
||||
if err != nil {
|
||||
return status.Errorf(codes.Unknown, "cannot receive file info")
|
||||
}
|
||||
|
||||
fi := req.GetInfo()
|
||||
log.Info().Msgf("receive an file request with name %s with file type %s", fi.GetPath(), fi.GetFileType())
|
||||
|
||||
fileData := bytes.Buffer{}
|
||||
fileSize := 0
|
||||
|
||||
for {
|
||||
log.Info().Msg("waiting to receive more data")
|
||||
|
||||
req, err = stream.Recv()
|
||||
if errors.Is(err, io.EOF) {
|
||||
log.Print("no more data")
|
||||
break
|
||||
}
|
||||
if err != nil {
|
||||
return status.Errorf(codes.Unknown, "cannot receive chunk data: %v", err)
|
||||
}
|
||||
|
||||
chunk := req.GetChunkData()
|
||||
size := len(chunk)
|
||||
|
||||
log.Printf("received a chunk with size: %d", size)
|
||||
|
||||
fileSize += size
|
||||
if fileSize > maxImageSize {
|
||||
return status.Errorf(codes.InvalidArgument, "file is too large: %d > %d", fileSize, maxImageSize)
|
||||
}
|
||||
_, err = fileData.Write(chunk)
|
||||
if err != nil {
|
||||
return status.Errorf(codes.Internal, "cannot write chunk data: %v", err)
|
||||
}
|
||||
}
|
||||
log.Info().Msgf("saving file %s in repo path %s", fi.GetPath(), fi.GetRepoPath())
|
||||
fullPath := filepath.Join(fi.GetRepoPath(), fi.GetPath())
|
||||
imageID, err := s.store.Save(fullPath, fileData)
|
||||
if err != nil {
|
||||
return status.Errorf(codes.Internal, "cannot save file to the store: %v", err)
|
||||
}
|
||||
|
||||
res := &rpc.UploadFileResponse{
|
||||
Id: imageID,
|
||||
Size: uint32(fileSize),
|
||||
}
|
||||
|
||||
err = stream.SendAndClose(res)
|
||||
if err != nil {
|
||||
return status.Errorf(codes.Unknown, "cannot send response: %v", err)
|
||||
}
|
||||
|
||||
log.Info().Msgf("saved file with id: %s, size: %d", imageID, fileSize)
|
||||
return nil
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package gitrpc
|
||||
|
||||
import "github.com/google/wire"
|
||||
|
||||
// WireSet provides a wire set for this package.
|
||||
var WireSet = wire.NewSet(
|
||||
ProvideClient,
|
||||
)
|
||||
|
||||
func ProvideClient() (Interface, error) {
|
||||
return InitClient("localhost:5001")
|
||||
}
|
|
@ -42,9 +42,7 @@ var (
|
|||
terminatedPathPrefixesAPI = []string{"/v1/spaces/", "/v1/repos/"}
|
||||
)
|
||||
|
||||
/*
|
||||
* NewAPIHandler returns a new APIHandler.
|
||||
*/
|
||||
// NewAPIHandler returns a new APIHandler.
|
||||
func NewAPIHandler(
|
||||
systemStore store.SystemStore,
|
||||
authenticator authn.Authenticator,
|
||||
|
@ -139,6 +137,8 @@ func setupRepos(r chi.Router, repoCtrl *repo.Controller) {
|
|||
r.Route("/repos", func(r chi.Router) {
|
||||
// Create takes path and parentId via body, not uri
|
||||
r.Post("/", handlerrepo.HandleCreate(repoCtrl))
|
||||
r.Get("/gitignore", handlerrepo.HandleGitIgnore())
|
||||
r.Get("/licence", handlerrepo.HandleLicence())
|
||||
|
||||
r.Route(fmt.Sprintf("/{%s}", request.PathParamRepoRef), func(r chi.Router) {
|
||||
// repo level operations
|
||||
|
|
|
@ -17,9 +17,7 @@ type WebHandler interface {
|
|||
http.Handler
|
||||
}
|
||||
|
||||
/*
|
||||
* NewWebHandler returns a new WebHandler.
|
||||
*/
|
||||
// NewWebHandler returns a new WebHandler.
|
||||
func NewWebHandler(systemStore store.SystemStore) WebHandler {
|
||||
config := systemStore.Config(context.Background())
|
||||
|
||||
|
|
|
@ -55,7 +55,8 @@ func seed(db *sqlx.DB) error {
|
|||
}
|
||||
|
||||
// unmarshal a testdata file.
|
||||
//nolint:unparam, goimports // expected to be called for other paths in the future.
|
||||
//
|
||||
//nolint:unparam // expected to be called for other paths in the future.
|
||||
func unmarshal(path string, v interface{}) error {
|
||||
out, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
|
|
|
@ -118,7 +118,8 @@ func testUserCount(store store.UserStore) func(t *testing.T) {
|
|||
// this test fetches users from the database by id and key
|
||||
// and compares to the expected results (sourced from a json file)
|
||||
// to ensure all columns are correctly mapped.
|
||||
//nolint:gocognit,goimports // test method, keep for now
|
||||
//
|
||||
//nolint:gocognit // test method, keep for now
|
||||
func testUserFind(store store.UserStore) func(t *testing.T) {
|
||||
return func(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
package resources
|
||||
|
||||
import "embed"
|
||||
|
||||
var (
|
||||
//go:embed gitignore
|
||||
Gitignore embed.FS
|
||||
|
||||
//go:embed licence
|
||||
Licence embed.FS
|
||||
)
|
|
@ -0,0 +1,22 @@
|
|||
### AL ###
|
||||
#Template for AL projects for Dynamics 365 Business Central
|
||||
#launch.json folder
|
||||
.vscode/
|
||||
#Cache folder
|
||||
.alcache/
|
||||
#Symbols folder
|
||||
.alpackages/
|
||||
#Snapshots folder
|
||||
.snapshots/
|
||||
#Testing Output folder
|
||||
.output/
|
||||
#Extension App-file
|
||||
*.app
|
||||
#Rapid Application Development File
|
||||
rad.json
|
||||
#Translation Base-file
|
||||
*.g.xlf
|
||||
#License-file
|
||||
*.flf
|
||||
#Test results file
|
||||
TestResults.xml
|
|
@ -0,0 +1,18 @@
|
|||
# Build and Release Folders
|
||||
bin-debug/
|
||||
bin-release/
|
||||
[Oo]bj/
|
||||
[Bb]in/
|
||||
|
||||
# Other files and folders
|
||||
.settings/
|
||||
|
||||
# Executables
|
||||
*.swf
|
||||
*.air
|
||||
*.ipa
|
||||
*.apk
|
||||
|
||||
# Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties`
|
||||
# should NOT be excluded as they contain compiler settings and other important
|
||||
# information for Eclipse / Flash Builder.
|
|
@ -0,0 +1,5 @@
|
|||
# Object file
|
||||
*.o
|
||||
|
||||
# Ada Library Information
|
||||
*.ali
|
|
@ -0,0 +1,2 @@
|
|||
*.agdai
|
||||
MAlonzo/**
|
|
@ -0,0 +1,33 @@
|
|||
# Gradle files
|
||||
.gradle/
|
||||
build/
|
||||
|
||||
# Local configuration file (sdk path, etc)
|
||||
local.properties
|
||||
|
||||
# Log/OS Files
|
||||
*.log
|
||||
|
||||
# Android Studio generated files and folders
|
||||
captures/
|
||||
.externalNativeBuild/
|
||||
.cxx/
|
||||
*.apk
|
||||
output.json
|
||||
|
||||
# IntelliJ
|
||||
*.iml
|
||||
.idea/
|
||||
misc.xml
|
||||
deploymentTargetDropDown.xml
|
||||
render.experimental.xml
|
||||
|
||||
# Keystore files
|
||||
*.jks
|
||||
*.keystore
|
||||
|
||||
# Google Services (e.g. APIs or Firebase)
|
||||
google-services.json
|
||||
|
||||
# Android Profiling
|
||||
*.hprof
|
|
@ -0,0 +1,2 @@
|
|||
# Google App Engine generated folder
|
||||
appengine-generated/
|
|
@ -0,0 +1,3 @@
|
|||
# Build folder and log file
|
||||
build/
|
||||
build.log
|
|
@ -0,0 +1,13 @@
|
|||
*.tar
|
||||
*.tar.*
|
||||
*.jar
|
||||
*.exe
|
||||
*.msi
|
||||
*.zip
|
||||
*.tgz
|
||||
*.log
|
||||
*.log.*
|
||||
*.sig
|
||||
|
||||
pkg/
|
||||
src/
|
|
@ -0,0 +1,52 @@
|
|||
# http://www.gnu.org/software/automake
|
||||
|
||||
Makefile.in
|
||||
/ar-lib
|
||||
/mdate-sh
|
||||
/py-compile
|
||||
/test-driver
|
||||
/ylwrap
|
||||
.deps/
|
||||
.dirstamp
|
||||
|
||||
# http://www.gnu.org/software/autoconf
|
||||
|
||||
autom4te.cache
|
||||
/autoscan.log
|
||||
/autoscan-*.log
|
||||
/aclocal.m4
|
||||
/compile
|
||||
/config.cache
|
||||
/config.guess
|
||||
/config.h.in
|
||||
/config.log
|
||||
/config.status
|
||||
/config.sub
|
||||
/configure
|
||||
/configure.scan
|
||||
/depcomp
|
||||
/install-sh
|
||||
/missing
|
||||
/stamp-h1
|
||||
|
||||
# https://www.gnu.org/software/libtool/
|
||||
|
||||
/ltmain.sh
|
||||
|
||||
# http://www.gnu.org/software/texinfo
|
||||
|
||||
/texinfo.tex
|
||||
|
||||
# http://www.gnu.org/software/m4/
|
||||
|
||||
m4/libtool.m4
|
||||
m4/ltoptions.m4
|
||||
m4/ltsugar.m4
|
||||
m4/ltversion.m4
|
||||
m4/lt~obsolete.m4
|
||||
|
||||
# Generated Makefile
|
||||
# (meta build system like autotools,
|
||||
# can automatically generate from config.status script
|
||||
# (which is called by configure script))
|
||||
Makefile
|
|
@ -0,0 +1,32 @@
|
|||
# Prerequisites
|
||||
*.d
|
||||
|
||||
# Compiled Object files
|
||||
*.slo
|
||||
*.lo
|
||||
*.o
|
||||
*.obj
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
*.pch
|
||||
|
||||
# Compiled Dynamic libraries
|
||||
*.so
|
||||
*.dylib
|
||||
*.dll
|
||||
|
||||
# Fortran module files
|
||||
*.mod
|
||||
*.smod
|
||||
|
||||
# Compiled Static libraries
|
||||
*.lai
|
||||
*.la
|
||||
*.a
|
||||
*.lib
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
|
@ -0,0 +1,52 @@
|
|||
# Prerequisites
|
||||
*.d
|
||||
|
||||
# Object files
|
||||
*.o
|
||||
*.ko
|
||||
*.obj
|
||||
*.elf
|
||||
|
||||
# Linker output
|
||||
*.ilk
|
||||
*.map
|
||||
*.exp
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
*.pch
|
||||
|
||||
# Libraries
|
||||
*.lib
|
||||
*.a
|
||||
*.la
|
||||
*.lo
|
||||
|
||||
# Shared objects (inc. Windows DLLs)
|
||||
*.dll
|
||||
*.so
|
||||
*.so.*
|
||||
*.dylib
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
*.i*86
|
||||
*.x86_64
|
||||
*.hex
|
||||
|
||||
# Debug files
|
||||
*.dSYM/
|
||||
*.su
|
||||
*.idb
|
||||
*.pdb
|
||||
|
||||
# Kernel Module Compile Results
|
||||
*.mod*
|
||||
*.cmd
|
||||
.tmp_versions/
|
||||
modules.order
|
||||
Module.symvers
|
||||
Mkfile.old
|
||||
dkms.conf
|
|
@ -0,0 +1,12 @@
|
|||
# unpacked plugin folders
|
||||
plugins/**/*
|
||||
|
||||
# files directory where uploads go
|
||||
files
|
||||
|
||||
# DBMigrate plugin: generated SQL
|
||||
db/sql
|
||||
|
||||
# AssetBundler plugin: generated bundles
|
||||
javascripts/bundles
|
||||
stylesheets/bundles
|
|
@ -0,0 +1,11 @@
|
|||
CMakeLists.txt.user
|
||||
CMakeCache.txt
|
||||
CMakeFiles
|
||||
CMakeScripts
|
||||
Testing
|
||||
Makefile
|
||||
cmake_install.cmake
|
||||
install_manifest.txt
|
||||
compile_commands.json
|
||||
CTestTestfile.cmake
|
||||
_deps
|
|
@ -0,0 +1,39 @@
|
|||
# Contributing guidelines
|
||||
|
||||
We’d love you to help us improve this project. To help us keep this collection
|
||||
high quality, we request that contributions adhere to the following guidelines.
|
||||
|
||||
- **Provide a link to the application or project’s homepage**. Unless it’s
|
||||
extremely popular, there’s a chance the maintainers don’t know about or use
|
||||
the language, framework, editor, app, or project your change applies to.
|
||||
|
||||
- **Provide links to documentation** supporting the change you’re making.
|
||||
Current, canonical documentation mentioning the files being ignored is best.
|
||||
If documentation isn’t available to support your change, do the best you can
|
||||
to explain what the files being ignored are for.
|
||||
|
||||
- **Explain why you’re making a change**. Even if it seems self-evident, please
|
||||
take a sentence or two to tell us why your change or addition should happen.
|
||||
It’s especially helpful to articulate why this change applies to *everyone*
|
||||
who works with the applicable technology, rather than just you or your team.
|
||||
|
||||
- **Please consider the scope of your change**. If your change specific to a
|
||||
certain language or framework, then make sure the change is made to the
|
||||
template for that language or framework, rather than to the template for an
|
||||
editor, tool, or operating system.
|
||||
|
||||
- **Please only modify *one template* per pull request**. This helps keep pull
|
||||
requests and feedback focused on a specific project or technology.
|
||||
|
||||
In general, the more you can do to help us understand the change you’re making,
|
||||
the more likely we’ll be to accept your contribution quickly.
|
||||
|
||||
If a template is mostly a list of files installed by a particular version of
|
||||
some software (e.g. a PHP framework) then it's brittle and probably no more
|
||||
helpful than a simple `ls`. If it's not possible to curate a small set of
|
||||
useful rules, then the template might not be a good fit for this collection.
|
||||
|
||||
Please also understand that we can’t list every tool that ever existed.
|
||||
Our aim is to curate a collection of the *most common and helpful* templates,
|
||||
not to make sure we cover every project possible. If we choose not to
|
||||
include your language, tool, or project, it’s not because it’s not awesome.
|
|
@ -0,0 +1,6 @@
|
|||
*.i
|
||||
*.ii
|
||||
*.gpu
|
||||
*.ptx
|
||||
*.cubin
|
||||
*.fatbin
|
|
@ -0,0 +1,25 @@
|
|||
# CakePHP 3
|
||||
|
||||
/vendor/*
|
||||
/config/app.php
|
||||
|
||||
/tmp/cache/models/*
|
||||
!/tmp/cache/models/empty
|
||||
/tmp/cache/persistent/*
|
||||
!/tmp/cache/persistent/empty
|
||||
/tmp/cache/views/*
|
||||
!/tmp/cache/views/empty
|
||||
/tmp/sessions/*
|
||||
!/tmp/sessions/empty
|
||||
/tmp/tests/*
|
||||
!/tmp/tests/empty
|
||||
|
||||
/logs/*
|
||||
!/logs/empty
|
||||
|
||||
# CakePHP 2
|
||||
|
||||
/app/tmp/*
|
||||
/app/Config/core.php
|
||||
/app/Config/database.php
|
||||
/vendors/*
|
|
@ -0,0 +1,9 @@
|
|||
.vagrant
|
||||
/cookbooks
|
||||
|
||||
# Bundler
|
||||
bin/*
|
||||
.bundle/*
|
||||
|
||||
.kitchen/
|
||||
.kitchen.local.yml
|
|
@ -0,0 +1,14 @@
|
|||
pom.xml
|
||||
pom.xml.asc
|
||||
*.jar
|
||||
*.class
|
||||
/lib/
|
||||
/classes/
|
||||
/target/
|
||||
/checkouts/
|
||||
.lein-deps-sum
|
||||
.lein-repl-history
|
||||
.lein-plugins/
|
||||
.lein-failures
|
||||
.nrepl-port
|
||||
.cpcache/
|
|
@ -0,0 +1,18 @@
|
|||
*/config/development
|
||||
*/logs/log-*.php
|
||||
!*/logs/index.html
|
||||
*/cache/*
|
||||
!system/cache/*
|
||||
!*/cache/index.html
|
||||
!*/cache/.htaccess
|
||||
|
||||
user_guide_src/build/*
|
||||
user_guide_src/cilexer/build/*
|
||||
user_guide_src/cilexer/dist/*
|
||||
user_guide_src/cilexer/pycilexer.egg-info/*
|
||||
|
||||
#codeigniter 3
|
||||
application/logs/*
|
||||
!application/logs/index.html
|
||||
!application/logs/.htaccess
|
||||
/vendor/
|
|
@ -0,0 +1,17 @@
|
|||
*.FASL
|
||||
*.fasl
|
||||
*.lisp-temp
|
||||
*.dfsl
|
||||
*.pfsl
|
||||
*.d64fsl
|
||||
*.p64fsl
|
||||
*.lx64fsl
|
||||
*.lx32fsl
|
||||
*.dx64fsl
|
||||
*.dx32fsl
|
||||
*.fx64fsl
|
||||
*.fx32fsl
|
||||
*.sx64fsl
|
||||
*.sx32fsl
|
||||
*.wx64fsl
|
||||
*.wx32fsl
|
|
@ -0,0 +1,6 @@
|
|||
composer.phar
|
||||
/vendor/
|
||||
|
||||
# Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control
|
||||
# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
|
||||
# composer.lock
|
|
@ -0,0 +1,21 @@
|
|||
# ignore the error log and .htaccess and others
|
||||
error_log
|
||||
.htaccess
|
||||
|
||||
# concrete5 5.6 specific
|
||||
|
||||
config/site.php
|
||||
files/cache/*
|
||||
files/tmp/*
|
||||
|
||||
# concrete5 5.7 specific
|
||||
|
||||
# ignore everything but the index.html
|
||||
/application/files/*
|
||||
!/application/files/index.html
|
||||
|
||||
# ignore updates folder
|
||||
/updates/*
|
||||
|
||||
# ignore sitemap.xml
|
||||
/sitemap.xml
|
|
@ -0,0 +1,45 @@
|
|||
.*.aux
|
||||
.*.d
|
||||
*.a
|
||||
*.cma
|
||||
*.cmi
|
||||
*.cmo
|
||||
*.cmx
|
||||
*.cmxa
|
||||
*.cmxs
|
||||
*.glob
|
||||
*.ml.d
|
||||
*.ml4.d
|
||||
*.mlg.d
|
||||
*.mli.d
|
||||
*.mllib.d
|
||||
*.mlpack.d
|
||||
*.native
|
||||
*.o
|
||||
*.v.d
|
||||
*.vio
|
||||
*.vo
|
||||
*.vok
|
||||
*.vos
|
||||
.coq-native
|
||||
.csdp.cache
|
||||
.lia.cache
|
||||
.nia.cache
|
||||
.nlia.cache
|
||||
.nra.cache
|
||||
csdp.cache
|
||||
lia.cache
|
||||
nia.cache
|
||||
nlia.cache
|
||||
nra.cache
|
||||
native_compute_profile_*.data
|
||||
|
||||
# generated timing files
|
||||
*.timing.diff
|
||||
*.v.after-timing
|
||||
*.v.before-timing
|
||||
*.v.timing
|
||||
time-of-build-after.log
|
||||
time-of-build-before.log
|
||||
time-of-build-both.log
|
||||
time-of-build-pretty.log
|
|
@ -0,0 +1,4 @@
|
|||
# Craft 2 Storage (https://craftcms.com/support/craft-storage-gitignore)
|
||||
# not necessary for Craft 3 (https://github.com/craftcms/craft/issues/26)
|
||||
/craft/storage/*
|
||||
!/craft/storage/rebrand
|
|
@ -0,0 +1,24 @@
|
|||
# Compiled Object files
|
||||
*.o
|
||||
*.obj
|
||||
|
||||
# Compiled Dynamic libraries
|
||||
*.so
|
||||
*.dylib
|
||||
*.dll
|
||||
|
||||
# Compiled Static libraries
|
||||
*.a
|
||||
*.lib
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
|
||||
# DUB
|
||||
.dub
|
||||
docs.json
|
||||
__dummy.html
|
||||
docs/
|
||||
|
||||
# Code coverage
|
||||
*.lst
|
|
@ -0,0 +1,5 @@
|
|||
*.dmb
|
||||
*.rsc
|
||||
*.int
|
||||
*.lk
|
||||
*.zip
|
|
@ -0,0 +1,27 @@
|
|||
# See https://www.dartlang.org/guides/libraries/private-files
|
||||
|
||||
# Files and directories created by pub
|
||||
.dart_tool/
|
||||
.packages
|
||||
build/
|
||||
# If you're building an application, you may want to check-in your pubspec.lock
|
||||
pubspec.lock
|
||||
|
||||
# Directory created by dartdoc
|
||||
# If you don't generate documentation locally you can remove this line.
|
||||
doc/api/
|
||||
|
||||
# dotenv environment variables file
|
||||
.env*
|
||||
|
||||
# Avoid committing generated Javascript files:
|
||||
*.dart.js
|
||||
*.info.json # Produced by the --dump-info flag.
|
||||
*.js # When generated by dart2js. Don't specify *.js if your
|
||||
# project includes source files written in JavaScript.
|
||||
*.js_
|
||||
*.js.deps
|
||||
*.js.map
|
||||
|
||||
.flutter-plugins
|
||||
.flutter-plugins-dependencies
|
|
@ -0,0 +1,69 @@
|
|||
# Uncomment these types if you want even more clean repository. But be careful.
|
||||
# It can make harm to an existing project source. Read explanations below.
|
||||
#
|
||||
# Resource files are binaries containing manifest, project icon and version info.
|
||||
# They can not be viewed as text or compared by diff-tools. Consider replacing them with .rc files.
|
||||
#*.res
|
||||
#
|
||||
# Type library file (binary). In old Delphi versions it should be stored.
|
||||
# Since Delphi 2009 it is produced from .ridl file and can safely be ignored.
|
||||
#*.tlb
|
||||
#
|
||||
# Diagram Portfolio file. Used by the diagram editor up to Delphi 7.
|
||||
# Uncomment this if you are not using diagrams or use newer Delphi version.
|
||||
#*.ddp
|
||||
#
|
||||
# Visual LiveBindings file. Added in Delphi XE2.
|
||||
# Uncomment this if you are not using LiveBindings Designer.
|
||||
#*.vlb
|
||||
#
|
||||
# Deployment Manager configuration file for your project. Added in Delphi XE2.
|
||||
# Uncomment this if it is not mobile development and you do not use remote debug feature.
|
||||
#*.deployproj
|
||||
#
|
||||
# C++ object files produced when C/C++ Output file generation is configured.
|
||||
# Uncomment this if you are not using external objects (zlib library for example).
|
||||
#*.obj
|
||||
#
|
||||
|
||||
# Delphi compiler-generated binaries (safe to delete)
|
||||
*.exe
|
||||
*.dll
|
||||
*.bpl
|
||||
*.bpi
|
||||
*.dcp
|
||||
*.so
|
||||
*.apk
|
||||
*.drc
|
||||
*.map
|
||||
*.dres
|
||||
*.rsm
|
||||
*.tds
|
||||
*.dcu
|
||||
*.lib
|
||||
*.a
|
||||
*.o
|
||||
*.ocx
|
||||
|
||||
# Delphi autogenerated files (duplicated info)
|
||||
*.cfg
|
||||
*.hpp
|
||||
*Resource.rc
|
||||
|
||||
# Delphi local files (user-specific info)
|
||||
*.local
|
||||
*.identcache
|
||||
*.projdata
|
||||
*.tvsconfig
|
||||
*.dsk
|
||||
|
||||
# Delphi history and backups
|
||||
__history/
|
||||
__recovery/
|
||||
*.~*
|
||||
|
||||
# Castalia statistics file (since XE7 Castalia is distributed with Delphi)
|
||||
*.stat
|
||||
|
||||
# Boss dependency manager vendor folder https://github.com/HashLoad/boss
|
||||
modules/
|
|
@ -0,0 +1,62 @@
|
|||
# gitignore template for Drupal 8 projects
|
||||
#
|
||||
# earlier versions of Drupal are tracked in `community/PHP/`
|
||||
#
|
||||
# follows official upstream conventions:
|
||||
# https://www.drupal.org/docs/develop/using-composer
|
||||
|
||||
# Ignore configuration files that may contain sensitive information
|
||||
/web/sites/*/*settings*.php
|
||||
/web/sites/*/*services*.yml
|
||||
|
||||
# Ignore paths that may contain user-generated content
|
||||
/web/sites/*/files
|
||||
/web/sites/*/public
|
||||
/web/sites/*/private
|
||||
/web/sites/*/files-public
|
||||
/web/sites/*/files-private
|
||||
|
||||
# Ignore paths that may contain temporary files
|
||||
/web/sites/*/translations
|
||||
/web/sites/*/tmp
|
||||
/web/sites/*/cache
|
||||
|
||||
# Ignore drupal core (if not versioning drupal sources)
|
||||
/web/vendor
|
||||
/web/core
|
||||
/web/modules/README.txt
|
||||
/web/profiles/README.txt
|
||||
/web/sites/development.services.yml
|
||||
/web/sites/example.settings.local.php
|
||||
/web/sites/example.sites.php
|
||||
/web/sites/README.txt
|
||||
/web/themes/README.txt
|
||||
/web/.csslintrc
|
||||
/web/.editorconfig
|
||||
/web/.eslintignore
|
||||
/web/.eslintrc.json
|
||||
/web/.gitattributes
|
||||
/web/.htaccess
|
||||
/web/.ht.router.php
|
||||
/web/autoload.php
|
||||
/web/composer.json
|
||||
/web/composer.lock
|
||||
/web/example.gitignore
|
||||
/web/index.php
|
||||
/web/INSTALL.txt
|
||||
/web/LICENSE.txt
|
||||
/web/README.txt
|
||||
/web/robots.txt
|
||||
/web/update.php
|
||||
/web/web.config
|
||||
|
||||
# Ignore vendor dependencies and scripts
|
||||
/vendor
|
||||
/composer.phar
|
||||
/composer
|
||||
/robo.phar
|
||||
/robo
|
||||
/drush.phar
|
||||
/drush
|
||||
/drupal.phar
|
||||
/drupal
|
|
@ -0,0 +1,4 @@
|
|||
######################
|
||||
## EPiServer Files
|
||||
######################
|
||||
*License.config
|
|
@ -0,0 +1,51 @@
|
|||
# Ignore list for Eagle, a PCB layout tool
|
||||
|
||||
# Backup files
|
||||
*.s#?
|
||||
*.b#?
|
||||
*.l#?
|
||||
*.b$?
|
||||
*.s$?
|
||||
*.l$?
|
||||
|
||||
# Eagle project file
|
||||
# It contains a serial number and references to the file structure
|
||||
# on your computer.
|
||||
# comment the following line if you want to have your project file included.
|
||||
eagle.epf
|
||||
|
||||
# Autorouter files
|
||||
*.pro
|
||||
*.job
|
||||
|
||||
# CAM files
|
||||
*.$$$
|
||||
*.cmp
|
||||
*.ly2
|
||||
*.l15
|
||||
*.sol
|
||||
*.plc
|
||||
*.stc
|
||||
*.sts
|
||||
*.crc
|
||||
*.crs
|
||||
|
||||
*.dri
|
||||
*.drl
|
||||
*.gpi
|
||||
*.pls
|
||||
*.ger
|
||||
*.xln
|
||||
|
||||
*.drd
|
||||
*.drd.*
|
||||
|
||||
*.s#*
|
||||
*.b#*
|
||||
|
||||
*.info
|
||||
|
||||
*.eps
|
||||
|
||||
# file locks introduced since 7.x
|
||||
*.lck
|
|
@ -0,0 +1,11 @@
|
|||
# Compiled
|
||||
*.elc
|
||||
|
||||
# Packaging
|
||||
.cask
|
||||
|
||||
# Backup files
|
||||
*~
|
||||
|
||||
# Undo-tree save-files
|
||||
*.~undo-tree
|
|
@ -0,0 +1,10 @@
|
|||
/_build
|
||||
/cover
|
||||
/deps
|
||||
/doc
|
||||
/.fetch
|
||||
erl_crash.dump
|
||||
*.ez
|
||||
*.beam
|
||||
/config/*.secret.exs
|
||||
.elixir_ls/
|
|
@ -0,0 +1,4 @@
|
|||
# elm-package generated files
|
||||
elm-stuff
|
||||
# elm-repl generated files
|
||||
repl-temp-*
|
|
@ -0,0 +1,17 @@
|
|||
.eunit
|
||||
*.o
|
||||
*.beam
|
||||
*.plt
|
||||
erl_crash.dump
|
||||
.concrete/DEV_MODE
|
||||
|
||||
# rebar 2.x
|
||||
.rebar
|
||||
rel/example_project
|
||||
ebin/*.beam
|
||||
deps
|
||||
|
||||
# rebar 3
|
||||
.rebar3
|
||||
_build/
|
||||
_checkouts/
|
|
@ -0,0 +1,19 @@
|
|||
.DS_Store
|
||||
|
||||
# Images
|
||||
images/avatars/
|
||||
images/captchas/
|
||||
images/smileys/
|
||||
images/member_photos/
|
||||
images/signature_attachments/
|
||||
images/pm_attachments/
|
||||
|
||||
# For security do not publish the following files
|
||||
system/expressionengine/config/database.php
|
||||
system/expressionengine/config/config.php
|
||||
|
||||
# Caches
|
||||
sized/
|
||||
thumbs/
|
||||
_thumbs/
|
||||
*/expressionengine/cache/*
|
|
@ -0,0 +1,14 @@
|
|||
.architect
|
||||
bootstrap.css
|
||||
bootstrap.js
|
||||
bootstrap.json
|
||||
bootstrap.jsonp
|
||||
build/
|
||||
classic.json
|
||||
classic.jsonp
|
||||
ext/
|
||||
modern.json
|
||||
modern.jsonp
|
||||
resources/sass/.sass-cache/
|
||||
resources/.arch-internal-preview.css
|
||||
.arch-internal-preview.css
|
|
@ -0,0 +1,2 @@
|
|||
*.rbc
|
||||
*.fyc
|
|
@ -0,0 +1,13 @@
|
|||
*.bak
|
||||
*.db
|
||||
*.avi
|
||||
*.pdf
|
||||
*.ps
|
||||
*.mid
|
||||
*.midi
|
||||
*.mp3
|
||||
*.aif
|
||||
*.wav
|
||||
# Some versions of Finale have a bug and randomly save extra copies of
|
||||
# the music source as "<Filename> copy.mus"
|
||||
*copy.mus
|
|
@ -0,0 +1,45 @@
|
|||
# Ignore Flax project files
|
||||
Binaries/
|
||||
Cache/
|
||||
Logs/
|
||||
Output/
|
||||
Screenshots/
|
||||
*.HotReload.*
|
||||
|
||||
# Ignore Visual Studio project files (generated locally)
|
||||
*.csproj
|
||||
*.sln
|
||||
|
||||
# Ignore thumbnails created by Windows
|
||||
Thumbs.db
|
||||
|
||||
# Ignore files built by Visual Studio
|
||||
*.obj
|
||||
*.exe
|
||||
*.pdb
|
||||
*.user
|
||||
*.aps
|
||||
*.pch
|
||||
*.vspscc
|
||||
*_i.c
|
||||
*_p.c
|
||||
*.ncb
|
||||
*.suo
|
||||
*.tlb
|
||||
*.tlh
|
||||
*.bak
|
||||
*.cache
|
||||
*.ilk
|
||||
*.log
|
||||
[Bb]in
|
||||
[Dd]ebug*/
|
||||
*.lib
|
||||
*.sbr
|
||||
obj/
|
||||
[Rr]elease*/
|
||||
_ReSharper*/
|
||||
[Tt]est[Rr]esult*
|
||||
.vs/
|
||||
|
||||
# Ignore Nuget packages folder
|
||||
packages/
|
|
@ -0,0 +1,4 @@
|
|||
.project
|
||||
.settings
|
||||
salesforce.schema
|
||||
Referenced Packages
|
|
@ -0,0 +1,32 @@
|
|||
# Prerequisites
|
||||
*.d
|
||||
|
||||
# Compiled Object files
|
||||
*.slo
|
||||
*.lo
|
||||
*.o
|
||||
*.obj
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
*.pch
|
||||
|
||||
# Compiled Dynamic libraries
|
||||
*.so
|
||||
*.dylib
|
||||
*.dll
|
||||
|
||||
# Fortran module files
|
||||
*.mod
|
||||
*.smod
|
||||
|
||||
# Compiled Static libraries
|
||||
*.lai
|
||||
*.la
|
||||
*.a
|
||||
*.lib
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
|
@ -0,0 +1,21 @@
|
|||
# the composer package lock file and install directory
|
||||
# Commit your application's lock file http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file
|
||||
# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
|
||||
# /composer.lock
|
||||
/fuel/vendor
|
||||
|
||||
# the fuelphp document
|
||||
/docs/
|
||||
|
||||
# you may install these packages with `oil package`.
|
||||
# http://fuelphp.com/docs/packages/oil/package.html
|
||||
# /fuel/packages/auth/
|
||||
# /fuel/packages/email/
|
||||
# /fuel/packages/oil/
|
||||
# /fuel/packages/orm/
|
||||
# /fuel/packages/parser/
|
||||
|
||||
# dynamically generated files
|
||||
/fuel/app/logs/*/*/*
|
||||
/fuel/app/cache/*/*
|
||||
/fuel/app/config/crypt.php
|
|
@ -0,0 +1,25 @@
|
|||
*.class
|
||||
|
||||
# Package Files #
|
||||
*.jar
|
||||
*.war
|
||||
|
||||
# gwt caches and compiled units #
|
||||
war/gwt_bree/
|
||||
gwt-unitCache/
|
||||
|
||||
# boilerplate generated classes #
|
||||
.apt_generated/
|
||||
|
||||
# more caches and things from deploy #
|
||||
war/WEB-INF/deploy/
|
||||
war/WEB-INF/classes/
|
||||
|
||||
#compilation logs
|
||||
.gwt/
|
||||
|
||||
#gwt junit compilation files
|
||||
www-test/
|
||||
|
||||
#old GWT (1.5) created this dir
|
||||
.gwt-tmp/
|
|
@ -0,0 +1,5 @@
|
|||
# gcc coverage testing tool files
|
||||
|
||||
*.gcno
|
||||
*.gcda
|
||||
*.gcov
|
|
@ -0,0 +1,16 @@
|
|||
# Node rules:
|
||||
## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
## Dependency directory
|
||||
## Commenting this out is preferred by some people, see
|
||||
## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git
|
||||
node_modules
|
||||
|
||||
# Book build output
|
||||
_book
|
||||
|
||||
# eBook build output
|
||||
*.epub
|
||||
*.mobi
|
||||
*.pdf
|
|
@ -0,0 +1,21 @@
|
|||
# If you prefer the allow list template instead of the deny list, see community template:
|
||||
# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore
|
||||
#
|
||||
# Binaries for programs and plugins
|
||||
*.exe
|
||||
*.exe~
|
||||
*.dll
|
||||
*.so
|
||||
*.dylib
|
||||
|
||||
# Test binary, built with `go test -c`
|
||||
*.test
|
||||
|
||||
# Output of the go coverage tool, specifically when used with LiteIDE
|
||||
*.out
|
||||
|
||||
# Dependency directories (remove the comment below to include it)
|
||||
# vendor/
|
||||
|
||||
# Go workspace file
|
||||
go.work
|
|
@ -0,0 +1,11 @@
|
|||
# Godot-specific ignores
|
||||
.import/
|
||||
export.cfg
|
||||
export_presets.cfg
|
||||
|
||||
# Imported translations (automatically generated from CSV files)
|
||||
*.translation
|
||||
|
||||
# Mono-specific ignores
|
||||
.mono/
|
||||
data_*/
|
|
@ -0,0 +1,21 @@
|
|||
.gradle
|
||||
**/build/
|
||||
!src/**/build/
|
||||
|
||||
# Ignore Gradle GUI config
|
||||
gradle-app.setting
|
||||
|
||||
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
|
||||
!gradle-wrapper.jar
|
||||
|
||||
# Avoid ignore Gradle wrappper properties
|
||||
!gradle-wrapper.properties
|
||||
|
||||
# Cache of project
|
||||
.gradletasknamecache
|
||||
|
||||
# Eclipse Gradle plugin generated files
|
||||
# Eclipse Core
|
||||
.project
|
||||
# JDT-specific (Eclipse Java Development Tools)
|
||||
.classpath
|
|
@ -0,0 +1,33 @@
|
|||
# .gitignore for Grails 1.2 and 1.3
|
||||
# Although this should work for most versions of grails, it is
|
||||
# suggested that you use the "grails integrate-with --git" command
|
||||
# to generate your .gitignore file.
|
||||
|
||||
# web application files
|
||||
/web-app/WEB-INF/classes
|
||||
|
||||
# default HSQL database files for production mode
|
||||
/prodDb.*
|
||||
|
||||
# general HSQL database files
|
||||
*Db.properties
|
||||
*Db.script
|
||||
|
||||
# logs
|
||||
/stacktrace.log
|
||||
/test/reports
|
||||
/logs
|
||||
|
||||
# project release file
|
||||
/*.war
|
||||
|
||||
# plugin release files
|
||||
/*.zip
|
||||
/plugin.xml
|
||||
|
||||
# older plugin install locations
|
||||
/plugins
|
||||
/web-app/plugins
|
||||
|
||||
# "temporary" build files
|
||||
/target
|
|
@ -0,0 +1,23 @@
|
|||
dist
|
||||
dist-*
|
||||
cabal-dev
|
||||
*.o
|
||||
*.hi
|
||||
*.hie
|
||||
*.chi
|
||||
*.chs.h
|
||||
*.dyn_o
|
||||
*.dyn_hi
|
||||
.hpc
|
||||
.hsenv
|
||||
.cabal-sandbox/
|
||||
cabal.sandbox.config
|
||||
*.prof
|
||||
*.aux
|
||||
*.hp
|
||||
*.eventlog
|
||||
.stack-work/
|
||||
cabal.project.local
|
||||
cabal.project.local~
|
||||
.HTF/
|
||||
.ghc.environment.*
|
|
@ -0,0 +1,5 @@
|
|||
# Avoid including Experiment files: they can be created and edited locally to test the ipf files
|
||||
*.pxp
|
||||
*.pxt
|
||||
*.uxp
|
||||
*.uxt
|
|
@ -0,0 +1,7 @@
|
|||
# Idris 2
|
||||
*.ttc
|
||||
*.ttm
|
||||
|
||||
# Idris 1
|
||||
*.ibc
|
||||
*.o
|
|
@ -0,0 +1,19 @@
|
|||
jboss/server/all/deploy/project.ext
|
||||
jboss/server/default/deploy/project.ext
|
||||
jboss/server/minimal/deploy/project.ext
|
||||
jboss/server/all/log/*.log
|
||||
jboss/server/all/tmp/**/*
|
||||
jboss/server/all/data/**/*
|
||||
jboss/server/all/work/**/*
|
||||
jboss/server/default/log/*.log
|
||||
jboss/server/default/tmp/**/*
|
||||
jboss/server/default/data/**/*
|
||||
jboss/server/default/work/**/*
|
||||
jboss/server/minimal/log/*.log
|
||||
jboss/server/minimal/tmp/**/*
|
||||
jboss/server/minimal/data/**/*
|
||||
jboss/server/minimal/work/**/*
|
||||
|
||||
# deployed package files #
|
||||
|
||||
*.DEPLOYED
|
|
@ -0,0 +1,50 @@
|
|||
# Learn more about Jenkins and JENKINS_HOME directory for which this file is
|
||||
# intended.
|
||||
#
|
||||
# http://jenkins-ci.org/
|
||||
# https://wiki.jenkins-ci.org/display/JENKINS/Administering+Jenkins
|
||||
#
|
||||
# Note: secret.key is purposefully not tracked by git. This should be backed up
|
||||
# separately because configs may contain secrets which were encrypted using the
|
||||
# secret.key. To back up secrets use 'tar -czf /tmp/secrets.tgz secret*' and
|
||||
# save the file separate from your repository. If you want secrets backed up
|
||||
# with configuration, then see the bottom of this file for an example.
|
||||
|
||||
# Ignore all JENKINS_HOME except jobs directory, root xml config, and
|
||||
# .gitignore file.
|
||||
/*
|
||||
!/jobs
|
||||
!/.gitignore
|
||||
!/*.xml
|
||||
|
||||
# Ignore all files in jobs subdirectories except for folders.
|
||||
# Note: git doesn't track folders, only file content.
|
||||
jobs/**
|
||||
!jobs/**/
|
||||
|
||||
# Uncomment the following line to save next build numbers with config.
|
||||
|
||||
#!jobs/**/nextBuildNumber
|
||||
|
||||
# For performance reasons, we want to ignore builds in Jenkins jobs because it
|
||||
# contains many tiny files on large installations. This can impact git
|
||||
# performance when running even basic commands like 'git status'.
|
||||
builds
|
||||
indexing
|
||||
|
||||
# Exclude only config.xml files in repository subdirectories.
|
||||
!config.xml
|
||||
|
||||
# Don't track workspaces (when users build on the master).
|
||||
jobs/**/*workspace
|
||||
|
||||
# Security warning: If secrets are included with your configuration, then an
|
||||
# adversary will be able to decrypt all encrypted secrets within Jenkins
|
||||
# config. Including secrets is a bad practice, but the example is included in
|
||||
# case someone still wants it for convenience. Uncomment the following line to
|
||||
# include secrets for decryption with repository configuration in Git.
|
||||
|
||||
#!/secret*
|
||||
|
||||
# As a result, only Jenkins settings and job config.xml files in JENKINS_HOME
|
||||
# will be tracked by git.
|
|
@ -0,0 +1,24 @@
|
|||
# Compiled class file
|
||||
*.class
|
||||
|
||||
# Log file
|
||||
*.log
|
||||
|
||||
# BlueJ files
|
||||
*.ctxt
|
||||
|
||||
# Mobile Tools for Java (J2ME)
|
||||
.mtj.tmp/
|
||||
|
||||
# Package Files #
|
||||
*.jar
|
||||
*.war
|
||||
*.nar
|
||||
*.ear
|
||||
*.zip
|
||||
*.tar.gz
|
||||
*.rar
|
||||
|
||||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||
hs_err_pid*
|
||||
replay_pid*
|
|
@ -0,0 +1,7 @@
|
|||
_site/
|
||||
.sass-cache/
|
||||
.jekyll-cache/
|
||||
.jekyll-metadata
|
||||
# Ignore folders generated by Bundler
|
||||
.bundle/
|
||||
vendor/
|
|
@ -0,0 +1,705 @@
|
|||
/.htaccess
|
||||
/administrator/cache/*
|
||||
/administrator/components/com_actionlogs/*
|
||||
/administrator/components/com_admin/*
|
||||
/administrator/components/com_ajax/*
|
||||
/administrator/components/com_associations/*
|
||||
/administrator/components/com_banners/*
|
||||
/administrator/components/com_cache/*
|
||||
/administrator/components/com_categories/*
|
||||
/administrator/components/com_checkin/*
|
||||
/administrator/components/com_config/*
|
||||
/administrator/components/com_contact/*
|
||||
/administrator/components/com_content/*
|
||||
/administrator/components/com_contenthistory/*
|
||||
/administrator/components/com_cpanel/*
|
||||
/administrator/components/com_fields/*
|
||||
/administrator/components/com_finder/*
|
||||
/administrator/components/com_installer/*
|
||||
/administrator/components/com_joomlaupdate/*
|
||||
/administrator/components/com_languages/*
|
||||
/administrator/components/com_login/*
|
||||
/administrator/components/com_media/*
|
||||
/administrator/components/com_menus/*
|
||||
/administrator/components/com_messages/*
|
||||
/administrator/components/com_modules/*
|
||||
/administrator/components/com_newsfeeds/*
|
||||
/administrator/components/com_plugins/*
|
||||
/administrator/components/com_postinstall/*
|
||||
/administrator/components/com_privacy/*
|
||||
/administrator/components/com_redirect/*
|
||||
/administrator/components/com_search/*
|
||||
/administrator/components/com_tags/*
|
||||
/administrator/components/com_templates/*
|
||||
/administrator/components/com_users/*
|
||||
/administrator/help/*
|
||||
/administrator/includes/*
|
||||
/administrator/index.php
|
||||
/administrator/language/en-GB/en-GB.com_actionlogs.ini
|
||||
/administrator/language/en-GB/en-GB.com_actionlogs.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_admin.ini
|
||||
/administrator/language/en-GB/en-GB.com_admin.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_ajax.ini
|
||||
/administrator/language/en-GB/en-GB.com_ajax.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_associations.ini
|
||||
/administrator/language/en-GB/en-GB.com_associations.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_banners.ini
|
||||
/administrator/language/en-GB/en-GB.com_banners.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_cache.ini
|
||||
/administrator/language/en-GB/en-GB.com_cache.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_categories.ini
|
||||
/administrator/language/en-GB/en-GB.com_categories.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_checkin.ini
|
||||
/administrator/language/en-GB/en-GB.com_checkin.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_config.ini
|
||||
/administrator/language/en-GB/en-GB.com_config.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_contact.ini
|
||||
/administrator/language/en-GB/en-GB.com_contact.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_content.ini
|
||||
/administrator/language/en-GB/en-GB.com_content.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_contenthistory.ini
|
||||
/administrator/language/en-GB/en-GB.com_contenthistory.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_cpanel.ini
|
||||
/administrator/language/en-GB/en-GB.com_cpanel.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_fields.ini
|
||||
/administrator/language/en-GB/en-GB.com_fields.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_finder.ini
|
||||
/administrator/language/en-GB/en-GB.com_finder.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_installer.ini
|
||||
/administrator/language/en-GB/en-GB.com_installer.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_joomlaupdate.ini
|
||||
/administrator/language/en-GB/en-GB.com_joomlaupdate.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_languages.ini
|
||||
/administrator/language/en-GB/en-GB.com_languages.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_login.ini
|
||||
/administrator/language/en-GB/en-GB.com_login.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_mailto.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_media.ini
|
||||
/administrator/language/en-GB/en-GB.com_media.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_menus.ini
|
||||
/administrator/language/en-GB/en-GB.com_menus.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_messages.ini
|
||||
/administrator/language/en-GB/en-GB.com_messages.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_modules.ini
|
||||
/administrator/language/en-GB/en-GB.com_modules.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_newsfeeds.ini
|
||||
/administrator/language/en-GB/en-GB.com_newsfeeds.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_plugins.ini
|
||||
/administrator/language/en-GB/en-GB.com_plugins.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_postinstall.ini
|
||||
/administrator/language/en-GB/en-GB.com_postinstall.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_privacy.ini
|
||||
/administrator/language/en-GB/en-GB.com_privacy.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_redirect.ini
|
||||
/administrator/language/en-GB/en-GB.com_redirect.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_search.ini
|
||||
/administrator/language/en-GB/en-GB.com_search.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_tags.ini
|
||||
/administrator/language/en-GB/en-GB.com_tags.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_templates.ini
|
||||
/administrator/language/en-GB/en-GB.com_templates.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_users.ini
|
||||
/administrator/language/en-GB/en-GB.com_users.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_weblinks.ini
|
||||
/administrator/language/en-GB/en-GB.com_weblinks.sys.ini
|
||||
/administrator/language/en-GB/en-GB.com_wrapper.ini
|
||||
/administrator/language/en-GB/en-GB.com_wrapper.sys.ini
|
||||
/administrator/language/en-GB/en-GB.ini
|
||||
/administrator/language/en-GB/en-GB.lib_joomla.ini
|
||||
/administrator/language/en-GB/en-GB.localise.php
|
||||
/administrator/language/en-GB/en-GB.mod_custom.ini
|
||||
/administrator/language/en-GB/en-GB.mod_custom.sys.ini
|
||||
/administrator/language/en-GB/en-GB.mod_feed.ini
|
||||
/administrator/language/en-GB/en-GB.mod_feed.sys.ini
|
||||
/administrator/language/en-GB/en-GB.mod_latest.ini
|
||||
/administrator/language/en-GB/en-GB.mod_latest.sys.ini
|
||||
/administrator/language/en-GB/en-GB.mod_latestactions.ini
|
||||
/administrator/language/en-GB/en-GB.mod_latestactions.sys.ini
|
||||
/administrator/language/en-GB/en-GB.mod_logged.ini
|
||||
/administrator/language/en-GB/en-GB.mod_logged.sys.ini
|
||||
/administrator/language/en-GB/en-GB.mod_login.ini
|
||||
/administrator/language/en-GB/en-GB.mod_login.sys.ini
|
||||
/administrator/language/en-GB/en-GB.mod_menu.ini
|
||||
/administrator/language/en-GB/en-GB.mod_menu.sys.ini
|
||||
/administrator/language/en-GB/en-GB.mod_multilangstatus.ini
|
||||
/administrator/language/en-GB/en-GB.mod_multilangstatus.sys.ini
|
||||
/administrator/language/en-GB/en-GB.mod_online.ini
|
||||
/administrator/language/en-GB/en-GB.mod_online.sys.ini
|
||||
/administrator/language/en-GB/en-GB.mod_popular.ini
|
||||
/administrator/language/en-GB/en-GB.mod_popular.sys.ini
|
||||
/administrator/language/en-GB/en-GB.mod_privacy_dashboard.ini
|
||||
/administrator/language/en-GB/en-GB.mod_privacy_dashboard.sys.ini
|
||||
/administrator/language/en-GB/en-GB.mod_quickicon.ini
|
||||
/administrator/language/en-GB/en-GB.mod_quickicon.sys.ini
|
||||
/administrator/language/en-GB/en-GB.mod_sampledata.ini
|
||||
/administrator/language/en-GB/en-GB.mod_sampledata.sys.ini
|
||||
/administrator/language/en-GB/en-GB.mod_stats_admin.ini
|
||||
/administrator/language/en-GB/en-GB.mod_stats_admin.sys.ini
|
||||
/administrator/language/en-GB/en-GB.mod_status.ini
|
||||
/administrator/language/en-GB/en-GB.mod_status.sys.ini
|
||||
/administrator/language/en-GB/en-GB.mod_submenu.ini
|
||||
/administrator/language/en-GB/en-GB.mod_submenu.sys.ini
|
||||
/administrator/language/en-GB/en-GB.mod_title.ini
|
||||
/administrator/language/en-GB/en-GB.mod_title.sys.ini
|
||||
/administrator/language/en-GB/en-GB.mod_toolbar.ini
|
||||
/administrator/language/en-GB/en-GB.mod_toolbar.sys.ini
|
||||
/administrator/language/en-GB/en-GB.mod_unread.ini
|
||||
/administrator/language/en-GB/en-GB.mod_unread.sys.ini
|
||||
/administrator/language/en-GB/en-GB.mod_version.ini
|
||||
/administrator/language/en-GB/en-GB.mod_version.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_actionlog_joomla.ini
|
||||
/administrator/language/en-GB/en-GB.plg_actionlog_joomla.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_authentication_cookie.ini
|
||||
/administrator/language/en-GB/en-GB.plg_authentication_cookie.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_authentication_example.ini
|
||||
/administrator/language/en-GB/en-GB.plg_authentication_example.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_authentication_gmail.ini
|
||||
/administrator/language/en-GB/en-GB.plg_authentication_gmail.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_authentication_joomla.ini
|
||||
/administrator/language/en-GB/en-GB.plg_authentication_joomla.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_authentication_ldap.ini
|
||||
/administrator/language/en-GB/en-GB.plg_authentication_ldap.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.ini
|
||||
/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_captcha_recaptcha_invisible.ini
|
||||
/administrator/language/en-GB/en-GB.plg_captcha_recaptcha_invisible.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_confirmconsent.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_confirmconsent.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_contact.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_contact.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_emailcloak.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_emailcloak.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_fields.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_fields.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_finder.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_finder.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_geshi.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_geshi.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_joomla.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_joomla.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_loadmodule.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_loadmodule.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_pagebreak.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_pagebreak.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_pagenavigation.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_pagenavigation.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_vote.ini
|
||||
/administrator/language/en-GB/en-GB.plg_content_vote.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors-xtd_article.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors-xtd_article.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors-xtd_contact.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors-xtd_contact.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors-xtd_fields.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors-xtd_fields.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors-xtd_image.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors-xtd_image.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors-xtd_menu.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors-xtd_menu.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors-xtd_module.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors-xtd_module.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors-xtd_pagebreak.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors-xtd_pagebreak.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors-xtd_readmore.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors-xtd_readmore.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors_codemirror.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors_codemirror.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors_none.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors_none.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors_tinymce.ini
|
||||
/administrator/language/en-GB/en-GB.plg_editors_tinymce.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_extension_joomla.ini
|
||||
/administrator/language/en-GB/en-GB.plg_extension_joomla.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_calendar.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_calendar.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_checkboxes.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_checkboxes.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_color.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_color.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_editor.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_editor.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_image.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_image.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_imagelist.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_imagelist.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_integer.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_integer.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_list.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_list.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_media.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_media.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_radio.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_radio.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_repeatable.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_repeatable.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_sql.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_sql.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_text.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_text.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_textarea.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_textarea.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_url.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_url.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_user.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_user.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_usergrouplist.ini
|
||||
/administrator/language/en-GB/en-GB.plg_fields_usergrouplist.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_finder_categories.ini
|
||||
/administrator/language/en-GB/en-GB.plg_finder_categories.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_finder_contacts.ini
|
||||
/administrator/language/en-GB/en-GB.plg_finder_contacts.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_finder_content.ini
|
||||
/administrator/language/en-GB/en-GB.plg_finder_content.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_finder_newsfeeds.ini
|
||||
/administrator/language/en-GB/en-GB.plg_finder_newsfeeds.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_finder_tags.ini
|
||||
/administrator/language/en-GB/en-GB.plg_finder_tags.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_finder_weblinks.ini
|
||||
/administrator/language/en-GB/en-GB.plg_finder_weblinks.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_installer_folderinstaller.ini
|
||||
/administrator/language/en-GB/en-GB.plg_installer_folderinstaller.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_installer_packageinstaller.ini
|
||||
/administrator/language/en-GB/en-GB.plg_installer_packageinstaller.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_installer_urlinstaller.ini
|
||||
/administrator/language/en-GB/en-GB.plg_installer_urlinstaller.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_installer_webinstaller.ini
|
||||
/administrator/language/en-GB/en-GB.plg_installer_webinstaller.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_privacy_actionlogs.ini
|
||||
/administrator/language/en-GB/en-GB.plg_privacy_actionlogs.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_privacy_consents.ini
|
||||
/administrator/language/en-GB/en-GB.plg_privacy_consents.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_privacy_contact.ini
|
||||
/administrator/language/en-GB/en-GB.plg_privacy_contact.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_privacy_content.ini
|
||||
/administrator/language/en-GB/en-GB.plg_privacy_content.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_privacy_message.ini
|
||||
/administrator/language/en-GB/en-GB.plg_privacy_message.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_privacy_user.ini
|
||||
/administrator/language/en-GB/en-GB.plg_privacy_user.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_quickicon_extensionupdate.ini
|
||||
/administrator/language/en-GB/en-GB.plg_quickicon_extensionupdate.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_quickicon_joomlaupdate.ini
|
||||
/administrator/language/en-GB/en-GB.plg_quickicon_joomlaupdate.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_quickicon_phpversioncheck.ini
|
||||
/administrator/language/en-GB/en-GB.plg_quickicon_phpversioncheck.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_quickicon_privacycheck.ini
|
||||
/administrator/language/en-GB/en-GB.plg_quickicon_privacycheck.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_sampledata_blog.ini
|
||||
/administrator/language/en-GB/en-GB.plg_sampledata_blog.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_search_categories.ini
|
||||
/administrator/language/en-GB/en-GB.plg_search_categories.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_search_contacts.ini
|
||||
/administrator/language/en-GB/en-GB.plg_search_contacts.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_search_content.ini
|
||||
/administrator/language/en-GB/en-GB.plg_search_content.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_search_newsfeeds.ini
|
||||
/administrator/language/en-GB/en-GB.plg_search_newsfeeds.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_search_tags.ini
|
||||
/administrator/language/en-GB/en-GB.plg_search_tags.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_search_weblinks.ini
|
||||
/administrator/language/en-GB/en-GB.plg_search_weblinks.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_actionlogs.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_actionlogs.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_cache.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_cache.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_debug.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_debug.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_fields.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_fields.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_highlight.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_highlight.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_languagecode.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_languagecode.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_languagefilter.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_languagefilter.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_log.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_log.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_logout.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_logout.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_logrotation.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_logrotation.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_p3p.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_p3p.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_privacyconsent.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_privacyconsent.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_redirect.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_redirect.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_remember.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_remember.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_sef.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_sef.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_sessiongc.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_sessiongc.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_stats.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_stats.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_updatenotification.ini
|
||||
/administrator/language/en-GB/en-GB.plg_system_updatenotification.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_twofactorauth_totp.ini
|
||||
/administrator/language/en-GB/en-GB.plg_twofactorauth_totp.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.ini
|
||||
/administrator/language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_user_contactcreator.ini
|
||||
/administrator/language/en-GB/en-GB.plg_user_contactcreator.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_user_joomla.ini
|
||||
/administrator/language/en-GB/en-GB.plg_user_joomla.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_user_profile.ini
|
||||
/administrator/language/en-GB/en-GB.plg_user_profile.sys.ini
|
||||
/administrator/language/en-GB/en-GB.plg_user_terms.ini
|
||||
/administrator/language/en-GB/en-GB.plg_user_terms.sys.ini
|
||||
/administrator/language/en-GB/en-GB.tpl_hathor.ini
|
||||
/administrator/language/en-GB/en-GB.tpl_hathor.sys.ini
|
||||
/administrator/language/en-GB/en-GB.tpl_isis.ini
|
||||
/administrator/language/en-GB/en-GB.tpl_isis.sys.ini
|
||||
/administrator/language/en-GB/en-GB.xml
|
||||
/administrator/language/en-GB/install.xml
|
||||
/administrator/language/overrides/*
|
||||
/administrator/language/index.html
|
||||
/administrator/logs/*
|
||||
/administrator/manifests/files/joomla.xml
|
||||
/administrator/manifests/libraries/fof.xml
|
||||
/administrator/manifests/libraries/idna_convert.xml
|
||||
/administrator/manifests/libraries/joomla.xml
|
||||
/administrator/manifests/libraries/phpass.xml
|
||||
/administrator/manifests/libraries/phputf8.xml
|
||||
/administrator/manifests/packages/pkg_en-GB.xml
|
||||
/administrator/manifests/packages/index.html
|
||||
/administrator/modules/mod_custom/*
|
||||
/administrator/modules/mod_feed/*
|
||||
/administrator/modules/mod_latest/*
|
||||
/administrator/modules/mod_latestactions/*
|
||||
/administrator/modules/mod_logged/*
|
||||
/administrator/modules/mod_login/*
|
||||
/administrator/modules/mod_menu/*
|
||||
/administrator/modules/mod_multilangstatus/*
|
||||
/administrator/modules/mod_online/*
|
||||
/administrator/modules/mod_popular/*
|
||||
/administrator/modules/mod_privacy_dashboard/*
|
||||
/administrator/modules/mod_quickicon/*
|
||||
/administrator/modules/mod_sampledata/*
|
||||
/administrator/modules/mod_stats_admin/*
|
||||
/administrator/modules/mod_status/*
|
||||
/administrator/modules/mod_submenu/*
|
||||
/administrator/modules/mod_title/*
|
||||
/administrator/modules/mod_toolbar/*
|
||||
/administrator/modules/mod_unread/*
|
||||
/administrator/modules/mod_version/*
|
||||
/administrator/templates/hathor/*
|
||||
/administrator/templates/isis/*
|
||||
/administrator/templates/system/*
|
||||
/bin/*
|
||||
/cache/*
|
||||
/cli/*
|
||||
/components/com_ajax/*
|
||||
/components/com_banners/*
|
||||
/components/com_config/*
|
||||
/components/com_contact/*
|
||||
/components/com_content/*
|
||||
/components/com_contenthistory/*
|
||||
/components/com_fields/*
|
||||
/components/com_finder/*
|
||||
/components/com_mailto/*
|
||||
/components/com_media/*
|
||||
/components/com_menus/*
|
||||
/components/com_modules/*
|
||||
/components/com_newsfeeds/*
|
||||
/components/com_privacy/*
|
||||
/components/com_search/*
|
||||
/components/com_tags/*
|
||||
/components/com_users/*
|
||||
/components/com_wrapper/*
|
||||
/components/index.html
|
||||
/images/banners/*
|
||||
/images/headers/*
|
||||
/images/sampledata/*
|
||||
/images/index.html
|
||||
/images/joomla*
|
||||
/images/powered_by.png
|
||||
/includes/*
|
||||
/installation/*
|
||||
/language/en-GB/en-GB.com_ajax.ini
|
||||
/language/en-GB/en-GB.com_config.ini
|
||||
/language/en-GB/en-GB.com_contact.ini
|
||||
/language/en-GB/en-GB.com_content.ini
|
||||
/language/en-GB/en-GB.com_finder.ini
|
||||
/language/en-GB/en-GB.com_mailto.ini
|
||||
/language/en-GB/en-GB.com_media.ini
|
||||
/language/en-GB/en-GB.com_messages.ini
|
||||
/language/en-GB/en-GB.com_newsfeeds.ini
|
||||
/language/en-GB/en-GB.com_privacy.ini
|
||||
/language/en-GB/en-GB.com_search.ini
|
||||
/language/en-GB/en-GB.com_tags.ini
|
||||
/language/en-GB/en-GB.com_users.ini
|
||||
/language/en-GB/en-GB.com_weblinks.ini
|
||||
/language/en-GB/en-GB.com_wrapper.ini
|
||||
/language/en-GB/en-GB.files_joomla.sys.ini
|
||||
/language/en-GB/en-GB.finder_cli.ini
|
||||
/language/en-GB/en-GB.ini
|
||||
/language/en-GB/en-GB.lib_fof.ini
|
||||
/language/en-GB/en-GB.lib_fof.sys.ini
|
||||
/language/en-GB/en-GB.lib_idna_convert.sys.ini
|
||||
/language/en-GB/en-GB.lib_joomla.ini
|
||||
/language/en-GB/en-GB.lib_joomla.sys.ini
|
||||
/language/en-GB/en-GB.lib_phpass.sys.ini
|
||||
/language/en-GB/en-GB.lib_phpmailer.sys.ini
|
||||
/language/en-GB/en-GB.lib_phputf8.sys.ini
|
||||
/language/en-GB/en-GB.lib_simplepie.sys.ini
|
||||
/language/en-GB/en-GB.localise.php
|
||||
/language/en-GB/en-GB.mod_articles_archive.ini
|
||||
/language/en-GB/en-GB.mod_articles_archive.sys.ini
|
||||
/language/en-GB/en-GB.mod_articles_categories.ini
|
||||
/language/en-GB/en-GB.mod_articles_categories.sys.ini
|
||||
/language/en-GB/en-GB.mod_articles_category.ini
|
||||
/language/en-GB/en-GB.mod_articles_category.sys.ini
|
||||
/language/en-GB/en-GB.mod_articles_latest.ini
|
||||
/language/en-GB/en-GB.mod_articles_latest.sys.ini
|
||||
/language/en-GB/en-GB.mod_articles_news.ini
|
||||
/language/en-GB/en-GB.mod_articles_news.sys.ini
|
||||
/language/en-GB/en-GB.mod_articles_popular.ini
|
||||
/language/en-GB/en-GB.mod_articles_popular.sys.ini
|
||||
/language/en-GB/en-GB.mod_banners.ini
|
||||
/language/en-GB/en-GB.mod_banners.sys.ini
|
||||
/language/en-GB/en-GB.mod_breadcrumbs.ini
|
||||
/language/en-GB/en-GB.mod_breadcrumbs.sys.ini
|
||||
/language/en-GB/en-GB.mod_custom.ini
|
||||
/language/en-GB/en-GB.mod_custom.sys.ini
|
||||
/language/en-GB/en-GB.mod_feed.ini
|
||||
/language/en-GB/en-GB.mod_feed.sys.ini
|
||||
/language/en-GB/en-GB.mod_finder.ini
|
||||
/language/en-GB/en-GB.mod_finder.sys.ini
|
||||
/language/en-GB/en-GB.mod_footer.ini
|
||||
/language/en-GB/en-GB.mod_footer.sys.ini
|
||||
/language/en-GB/en-GB.mod_languages.ini
|
||||
/language/en-GB/en-GB.mod_languages.sys.ini
|
||||
/language/en-GB/en-GB.mod_login.ini
|
||||
/language/en-GB/en-GB.mod_login.sys.ini
|
||||
/language/en-GB/en-GB.mod_menu.ini
|
||||
/language/en-GB/en-GB.mod_menu.sys.ini
|
||||
/language/en-GB/en-GB.mod_random_image.ini
|
||||
/language/en-GB/en-GB.mod_random_image.sys.ini
|
||||
/language/en-GB/en-GB.mod_related_items.ini
|
||||
/language/en-GB/en-GB.mod_related_items.sys.ini
|
||||
/language/en-GB/en-GB.mod_search.ini
|
||||
/language/en-GB/en-GB.mod_search.sys.ini
|
||||
/language/en-GB/en-GB.mod_stats.ini
|
||||
/language/en-GB/en-GB.mod_stats.sys.ini
|
||||
/language/en-GB/en-GB.mod_syndicate.ini
|
||||
/language/en-GB/en-GB.mod_syndicate.sys.ini
|
||||
/language/en-GB/en-GB.mod_tags_popular.ini
|
||||
/language/en-GB/en-GB.mod_tags_popular.sys.ini
|
||||
/language/en-GB/en-GB.mod_tags_similar.ini
|
||||
/language/en-GB/en-GB.mod_tags_similar.sys.ini
|
||||
/language/en-GB/en-GB.mod_users_latest.ini
|
||||
/language/en-GB/en-GB.mod_users_latest.sys.ini
|
||||
/language/en-GB/en-GB.mod_weblinks.ini
|
||||
/language/en-GB/en-GB.mod_weblinks.sys.ini
|
||||
/language/en-GB/en-GB.mod_whosonline.ini
|
||||
/language/en-GB/en-GB.mod_whosonline.sys.ini
|
||||
/language/en-GB/en-GB.mod_wrapper.ini
|
||||
/language/en-GB/en-GB.mod_wrapper.sys.ini
|
||||
/language/en-GB/en-GB.tpl_atomic.ini
|
||||
/language/en-GB/en-GB.tpl_atomic.sys.ini
|
||||
/language/en-GB/en-GB.tpl_beez3.ini
|
||||
/language/en-GB/en-GB.tpl_beez3.sys.ini
|
||||
/language/en-GB/en-GB.tpl_beez5.ini
|
||||
/language/en-GB/en-GB.tpl_beez5.sys.ini
|
||||
/language/en-GB/en-GB.tpl_beez_20.ini
|
||||
/language/en-GB/en-GB.tpl_beez_20.sys.ini
|
||||
/language/en-GB/en-GB.tpl_protostar.ini
|
||||
/language/en-GB/en-GB.tpl_protostar.sys.ini
|
||||
/language/en-GB/en-GB.xml
|
||||
/language/en-GB/install.xml
|
||||
/language/overrides/*
|
||||
/language/index.html
|
||||
/layouts/joomla/*
|
||||
/layouts/libraries/*
|
||||
/layouts/plugins/*
|
||||
/layouts/index.html
|
||||
/libraries/cms/*
|
||||
/libraries/fof/*
|
||||
/libraries/idna_convert/*
|
||||
/libraries/joomla/*
|
||||
/libraries/legacy/*
|
||||
/libraries/php-encryption/*
|
||||
/libraries/phpass/*
|
||||
/libraries/phpmailer/*
|
||||
/libraries/phputf8/*
|
||||
/libraries/simplepie/*
|
||||
/libraries/src/*
|
||||
/libraries/vendor/*
|
||||
/libraries/classmap.php
|
||||
/libraries/cms.php
|
||||
/libraries/import.legacy.php
|
||||
/libraries/import.php
|
||||
/libraries/index.html
|
||||
/libraries/loader.php
|
||||
/media/cms/*
|
||||
/media/com_associations/*
|
||||
/media/com_contact/*
|
||||
/media/com_content/*
|
||||
/media/com_contenthistory/*
|
||||
/media/com_fields/*
|
||||
/media/com_finder/*
|
||||
/media/com_joomlaupdate/*
|
||||
/media/com_menus/*
|
||||
/media/com_modules/*
|
||||
/media/com_wrapper/*
|
||||
/media/contacts/*
|
||||
/media/editors/*
|
||||
/media/jui/*
|
||||
/media/mailto/*
|
||||
/media/media/*
|
||||
/media/mod_languages/*
|
||||
/media/mod_sampledata/*
|
||||
/media/overrider/*
|
||||
/media/plg_captcha_recaptcha/*
|
||||
/media/plg_captcha_recaptcha_invisible/*
|
||||
/media/plg_quickicon_extensionupdate/*
|
||||
/media/plg_quickicon_joomlaupdate/*
|
||||
/media/plg_quickicon_privacycheck/*
|
||||
/media/plg_system_highlight/*
|
||||
/media/plg_system_stats/*
|
||||
/media/plg_twofactorauth_totp/*
|
||||
/media/system/*
|
||||
/media/index.html
|
||||
/modules/mod_articles_archive/*
|
||||
/modules/mod_articles_categories/*
|
||||
/modules/mod_articles_category/*
|
||||
/modules/mod_articles_latest/*
|
||||
/modules/mod_articles_news/*
|
||||
/modules/mod_articles_popular/*
|
||||
/modules/mod_banners/*
|
||||
/modules/mod_breadcrumbs/*
|
||||
/modules/mod_custom/*
|
||||
/modules/mod_feed/*
|
||||
/modules/mod_finder/*
|
||||
/modules/mod_footer/*
|
||||
/modules/mod_languages/*
|
||||
/modules/mod_login/*
|
||||
/modules/mod_menu/*
|
||||
/modules/mod_random_image/*
|
||||
/modules/mod_related_items/*
|
||||
/modules/mod_search/*
|
||||
/modules/mod_stats/*
|
||||
/modules/mod_syndicate/*
|
||||
/modules/mod_tags_popular/*
|
||||
/modules/mod_tags_similar/*
|
||||
/modules/mod_users_latest/*
|
||||
/modules/mod_whosonline/*
|
||||
/modules/mod_wrapper/*
|
||||
/modules/index.html
|
||||
/plugins/actionlog/joomla/*
|
||||
/plugins/authentication/cookie/*
|
||||
/plugins/authentication/example/*
|
||||
/plugins/authentication/gmail/*
|
||||
/plugins/authentication/joomla/*
|
||||
/plugins/authentication/ldap/*
|
||||
/plugins/captcha/recaptcha/*
|
||||
/plugins/captcha/recaptcha_invisible/*
|
||||
/plugins/content/confirmconsent/*
|
||||
/plugins/content/contact/*
|
||||
/plugins/content/emailcloak/*
|
||||
/plugins/content/example/*
|
||||
/plugins/content/fields/*
|
||||
/plugins/content/finder/*
|
||||
/plugins/content/geshi/*
|
||||
/plugins/content/joomla/*
|
||||
/plugins/content/loadmodule/*
|
||||
/plugins/content/pagebreak/*
|
||||
/plugins/content/pagenavigation/*
|
||||
/plugins/content/vote/*
|
||||
/plugins/editors/codemirror/*
|
||||
/plugins/editors/none/*
|
||||
/plugins/editors/tinymce/*
|
||||
/plugins/editors-xtd/article/*
|
||||
/plugins/editors-xtd/contact/*
|
||||
/plugins/editors-xtd/fields/*
|
||||
/plugins/editors-xtd/image/*
|
||||
/plugins/editors-xtd/menu/*
|
||||
/plugins/editors-xtd/module/*
|
||||
/plugins/editors-xtd/pagebreak/*
|
||||
/plugins/editors-xtd/readmore/*
|
||||
/plugins/extension/example/*
|
||||
/plugins/extension/joomla/*
|
||||
/plugins/fields/calendar/*
|
||||
/plugins/fields/checkboxes/*
|
||||
/plugins/fields/color/*
|
||||
/plugins/fields/editor/*
|
||||
/plugins/fields/imagelist/*
|
||||
/plugins/fields/integer/*
|
||||
/plugins/fields/list/*
|
||||
/plugins/fields/media/*
|
||||
/plugins/fields/radio/*
|
||||
/plugins/fields/repeatable/*
|
||||
/plugins/fields/sql/*
|
||||
/plugins/fields/text/*
|
||||
/plugins/fields/textarea/*
|
||||
/plugins/fields/url/*
|
||||
/plugins/fields/user/*
|
||||
/plugins/fields/usergrouplist/*
|
||||
/plugins/finder/categories/*
|
||||
/plugins/finder/contacts/*
|
||||
/plugins/finder/content/*
|
||||
/plugins/finder/newsfeeds/*
|
||||
/plugins/finder/tags/*
|
||||
/plugins/installer/folderinstaller/*
|
||||
/plugins/installer/packageinstaller/*
|
||||
/plugins/installer/urlinstaller/*
|
||||
/plugins/privacy/actionlogs/*
|
||||
/plugins/privacy/consents/*
|
||||
/plugins/privacy/contact/*
|
||||
/plugins/privacy/content/*
|
||||
/plugins/privacy/message/*
|
||||
/plugins/privacy/user/*
|
||||
/plugins/quickicon/extensionupdate/*
|
||||
/plugins/quickicon/joomlaupdate/*
|
||||
/plugins/quickicon/phpversioncheck/*
|
||||
/plugins/quickicon/privacycheck/*
|
||||
/plugins/quickicon/index.html
|
||||
/plugins/sampledata/blog/*
|
||||
/plugins/search/categories/*
|
||||
/plugins/search/contacts/*
|
||||
/plugins/search/content/*
|
||||
/plugins/search/newsfeeds/*
|
||||
/plugins/search/tags/*
|
||||
/plugins/search/weblinks/*
|
||||
/plugins/search/index.html
|
||||
/plugins/system/actionlogs/*
|
||||
/plugins/system/cache/*
|
||||
/plugins/system/debug/*
|
||||
/plugins/system/fields/*
|
||||
/plugins/system/highlight/*
|
||||
/plugins/system/languagecode/*
|
||||
/plugins/system/languagefilter/*
|
||||
/plugins/system/log/*
|
||||
/plugins/system/logout/*
|
||||
/plugins/system/logrotation/*
|
||||
/plugins/system/p3p/*
|
||||
/plugins/system/privacyconsent/*
|
||||
/plugins/system/redirect/*
|
||||
/plugins/system/remember/*
|
||||
/plugins/system/sef/*
|
||||
/plugins/system/sessiongc/*
|
||||
/plugins/system/stats/*
|
||||
/plugins/system/updatenotification/*
|
||||
/plugins/system/index.html
|
||||
/plugins/twofactorauth/totp/*
|
||||
/plugins/twofactorauth/yubikey/*
|
||||
/plugins/user/contactcreator/*
|
||||
/plugins/user/example/*
|
||||
/plugins/user/joomla/*
|
||||
/plugins/user/profile/*
|
||||
/plugins/user/terms/*
|
||||
/plugins/user/index.html
|
||||
/plugins/index.html
|
||||
/templates/beez3/*
|
||||
/templates/protostar/*
|
||||
/templates/system/*
|
||||
/templates/index.html
|
||||
/tmp/*
|
||||
/configuration.php
|
||||
/htaccess.txt
|
||||
/index.php
|
||||
/joomla.xml
|
||||
/LICENSE.txt
|
||||
/README.txt
|
||||
/robots.txt.dist
|
||||
/web.config.txt
|
|
@ -0,0 +1,24 @@
|
|||
# Files generated by invoking Julia with --code-coverage
|
||||
*.jl.cov
|
||||
*.jl.*.cov
|
||||
|
||||
# Files generated by invoking Julia with --track-allocation
|
||||
*.jl.mem
|
||||
|
||||
# System-specific files and directories generated by the BinaryProvider and BinDeps packages
|
||||
# They contain absolute paths specific to the host computer, and so should not be committed
|
||||
deps/deps.jl
|
||||
deps/build.log
|
||||
deps/downloads/
|
||||
deps/usr/
|
||||
deps/src/
|
||||
|
||||
# Build artifacts for creating documentation generated by the Documenter package
|
||||
docs/build/
|
||||
docs/site/
|
||||
|
||||
# File generated by Pkg, the package manager, based on a corresponding Project.toml
|
||||
# It records a fixed state of all packages used by the project. As such, it should not be
|
||||
# committed for packages, but should be committed for applications that require a static
|
||||
# environment.
|
||||
Manifest.toml
|
|
@ -0,0 +1,29 @@
|
|||
# For PCBs designed using KiCad: https://www.kicad.org/
|
||||
# Format documentation: https://kicad.org/help/file-formats/
|
||||
|
||||
# Temporary files
|
||||
*.000
|
||||
*.bak
|
||||
*.bck
|
||||
*.kicad_pcb-bak
|
||||
*.kicad_sch-bak
|
||||
*-backups
|
||||
*.kicad_prl
|
||||
*.sch-bak
|
||||
*~
|
||||
_autosave-*
|
||||
*.tmp
|
||||
*-save.pro
|
||||
*-save.kicad_pcb
|
||||
fp-info-cache
|
||||
|
||||
# Netlist files (exported from Eeschema)
|
||||
*.net
|
||||
|
||||
# Autorouter files (exported from Pcbnew)
|
||||
*.dsn
|
||||
*.ses
|
||||
|
||||
# Exported BOM files
|
||||
*.xml
|
||||
*.csv
|
|
@ -0,0 +1,2 @@
|
|||
application/cache/*
|
||||
application/logs/*
|
|
@ -0,0 +1,24 @@
|
|||
# Compiled class file
|
||||
*.class
|
||||
|
||||
# Log file
|
||||
*.log
|
||||
|
||||
# BlueJ files
|
||||
*.ctxt
|
||||
|
||||
# Mobile Tools for Java (J2ME)
|
||||
.mtj.tmp/
|
||||
|
||||
# Package Files #
|
||||
*.jar
|
||||
*.war
|
||||
*.nar
|
||||
*.ear
|
||||
*.zip
|
||||
*.tar.gz
|
||||
*.rar
|
||||
|
||||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||
hs_err_pid*
|
||||
replay_pid*
|
|
@ -0,0 +1,116 @@
|
|||
CC0 1.0 Universal
|
||||
|
||||
Statement of Purpose
|
||||
|
||||
The laws of most jurisdictions throughout the world automatically confer
|
||||
exclusive Copyright and Related Rights (defined below) upon the creator and
|
||||
subsequent owner(s) (each and all, an "owner") of an original work of
|
||||
authorship and/or a database (each, a "Work").
|
||||
|
||||
Certain owners wish to permanently relinquish those rights to a Work for the
|
||||
purpose of contributing to a commons of creative, cultural and scientific
|
||||
works ("Commons") that the public can reliably and without fear of later
|
||||
claims of infringement build upon, modify, incorporate in other works, reuse
|
||||
and redistribute as freely as possible in any form whatsoever and for any
|
||||
purposes, including without limitation commercial purposes. These owners may
|
||||
contribute to the Commons to promote the ideal of a free culture and the
|
||||
further production of creative, cultural and scientific works, or to gain
|
||||
reputation or greater distribution for their Work in part through the use and
|
||||
efforts of others.
|
||||
|
||||
For these and/or other purposes and motivations, and without any expectation
|
||||
of additional consideration or compensation, the person associating CC0 with a
|
||||
Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
|
||||
and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
|
||||
and publicly distribute the Work under its terms, with knowledge of his or her
|
||||
Copyright and Related Rights in the Work and the meaning and intended legal
|
||||
effect of CC0 on those rights.
|
||||
|
||||
1. Copyright and Related Rights. A Work made available under CC0 may be
|
||||
protected by copyright and related or neighboring rights ("Copyright and
|
||||
Related Rights"). Copyright and Related Rights include, but are not limited
|
||||
to, the following:
|
||||
|
||||
i. the right to reproduce, adapt, distribute, perform, display, communicate,
|
||||
and translate a Work;
|
||||
|
||||
ii. moral rights retained by the original author(s) and/or performer(s);
|
||||
|
||||
iii. publicity and privacy rights pertaining to a person's image or likeness
|
||||
depicted in a Work;
|
||||
|
||||
iv. rights protecting against unfair competition in regards to a Work,
|
||||
subject to the limitations in paragraph 4(a), below;
|
||||
|
||||
v. rights protecting the extraction, dissemination, use and reuse of data in
|
||||
a Work;
|
||||
|
||||
vi. database rights (such as those arising under Directive 96/9/EC of the
|
||||
European Parliament and of the Council of 11 March 1996 on the legal
|
||||
protection of databases, and under any national implementation thereof,
|
||||
including any amended or successor version of such directive); and
|
||||
|
||||
vii. other similar, equivalent or corresponding rights throughout the world
|
||||
based on applicable law or treaty, and any national implementations thereof.
|
||||
|
||||
2. Waiver. To the greatest extent permitted by, but not in contravention of,
|
||||
applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
|
||||
unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
|
||||
and Related Rights and associated claims and causes of action, whether now
|
||||
known or unknown (including existing as well as future claims and causes of
|
||||
action), in the Work (i) in all territories worldwide, (ii) for the maximum
|
||||
duration provided by applicable law or treaty (including future time
|
||||
extensions), (iii) in any current or future medium and for any number of
|
||||
copies, and (iv) for any purpose whatsoever, including without limitation
|
||||
commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes
|
||||
the Waiver for the benefit of each member of the public at large and to the
|
||||
detriment of Affirmer's heirs and successors, fully intending that such Waiver
|
||||
shall not be subject to revocation, rescission, cancellation, termination, or
|
||||
any other legal or equitable action to disrupt the quiet enjoyment of the Work
|
||||
by the public as contemplated by Affirmer's express Statement of Purpose.
|
||||
|
||||
3. Public License Fallback. Should any part of the Waiver for any reason be
|
||||
judged legally invalid or ineffective under applicable law, then the Waiver
|
||||
shall be preserved to the maximum extent permitted taking into account
|
||||
Affirmer's express Statement of Purpose. In addition, to the extent the Waiver
|
||||
is so judged Affirmer hereby grants to each affected person a royalty-free,
|
||||
non transferable, non sublicensable, non exclusive, irrevocable and
|
||||
unconditional license to exercise Affirmer's Copyright and Related Rights in
|
||||
the Work (i) in all territories worldwide, (ii) for the maximum duration
|
||||
provided by applicable law or treaty (including future time extensions), (iii)
|
||||
in any current or future medium and for any number of copies, and (iv) for any
|
||||
purpose whatsoever, including without limitation commercial, advertising or
|
||||
promotional purposes (the "License"). The License shall be deemed effective as
|
||||
of the date CC0 was applied by Affirmer to the Work. Should any part of the
|
||||
License for any reason be judged legally invalid or ineffective under
|
||||
applicable law, such partial invalidity or ineffectiveness shall not
|
||||
invalidate the remainder of the License, and in such case Affirmer hereby
|
||||
affirms that he or she will not (i) exercise any of his or her remaining
|
||||
Copyright and Related Rights in the Work or (ii) assert any associated claims
|
||||
and causes of action with respect to the Work, in either case contrary to
|
||||
Affirmer's express Statement of Purpose.
|
||||
|
||||
4. Limitations and Disclaimers.
|
||||
|
||||
a. No trademark or patent rights held by Affirmer are waived, abandoned,
|
||||
surrendered, licensed or otherwise affected by this document.
|
||||
|
||||
b. Affirmer offers the Work as-is and makes no representations or warranties
|
||||
of any kind concerning the Work, express, implied, statutory or otherwise,
|
||||
including without limitation warranties of title, merchantability, fitness
|
||||
for a particular purpose, non infringement, or the absence of latent or
|
||||
other defects, accuracy, or the present or absence of errors, whether or not
|
||||
discoverable, all to the greatest extent permissible under applicable law.
|
||||
|
||||
c. Affirmer disclaims responsibility for clearing rights of other persons
|
||||
that may apply to the Work or any use thereof, including without limitation
|
||||
any person's Copyright and Related Rights in the Work. Further, Affirmer
|
||||
disclaims responsibility for obtaining any necessary consents, permissions
|
||||
or other rights required for any use of the Work.
|
||||
|
||||
d. Affirmer understands and acknowledges that Creative Commons is not a
|
||||
party to this document and has no duty or obligation with respect to this
|
||||
CC0 or use of the Work.
|
||||
|
||||
For more information, please see
|
||||
<http://creativecommons.org/publicdomain/zero/1.0/>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue