Skip to content

Commit e289805

Browse files
committed
fix: panic on nil github config
Signed-off-by: Valery Piashchynski <[email protected]>
1 parent d1b868e commit e289805

File tree

3 files changed

+71
-51
lines changed

3 files changed

+71
-51
lines changed

config.go

+11
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,23 @@ func (c *Config) Validate() error { //nolint:gocognit,gocyclo
6161
}
6262

6363
if _, ok := c.Roadrunner[ref]; !ok {
64+
if c.Roadrunner == nil {
65+
c.Roadrunner = make(map[string]string)
66+
}
67+
6468
c.Roadrunner[ref] = defaultBranch
6569
}
6670

71+
if c.GitHub == nil || c.GitHub.Token == nil || c.GitHub.Token.Token == "" {
72+
return errors.New("github section should contain a token to download RoadRunner")
73+
}
74+
75+
// section exists, but no plugin specified
6776
if (c.GitLab != nil && len(c.GitLab.Plugins) == 0) && (c.GitHub != nil && len(c.GitHub.Plugins) == 0) {
6877
return errors.New("no plugins specified in the configuration")
6978
}
7079

80+
// we have a GitHub section
7181
if c.GitHub != nil {
7282
for k, v := range c.GitHub.Plugins {
7383
if v.Owner == "" {
@@ -90,6 +100,7 @@ func (c *Config) Validate() error { //nolint:gocognit,gocyclo
90100
c.GitHub.Token.Token = os.ExpandEnv(c.GitHub.Token.Token)
91101
}
92102

103+
// we have a GitLab section
93104
if c.GitLab != nil {
94105
for k, v := range c.GitLab.Plugins {
95106
if v.Owner == "" {

config_test.go

+9
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,12 @@ func TestExpandEnvs(t *testing.T) {
5151
assert.Equal(t, token, c.GitHub.Token.Token)
5252
assert.Equal(t, token, c.GitLab.Token.Token)
5353
}
54+
55+
func TestNils(t *testing.T) {
56+
c := &Config{
57+
Velox: map[string][]string{"build_args": {"github.com/roadrunner-server/roadrunner/v2/internal/meta.buildTime=${TIME}", "github.com/roadrunner-server/roadrunner/v2/internal/meta.version=${VERSION}"}},
58+
Log: nil,
59+
}
60+
61+
require.Error(t, c.Validate())
62+
}

velox.toml

+51-51
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,57 @@
11
[velox]
22
build_args = ['-trimpath', '-ldflags', '-s -X github.com/roadrunner-server/roadrunner/v2/internal/meta.version=${VERSION} -X github.com/roadrunner-server/roadrunner/v2/internal/meta.buildTime=${TIME}']
33

4-
[roadrunner]
5-
ref = "master"
6-
7-
[github]
8-
[github.token]
9-
token = "${RT_TOKEN}"
10-
11-
[github.plugins]
12-
# ref -> master, commit or tag
13-
logger = { ref = "master", owner = "roadrunner-server", repository = "logger" }
14-
temporal = { ref = "master", owner = "temporalio", repository = "roadrunner-temporal" }
15-
metrics = { ref = "master", owner = "roadrunner-server", repository = "metrics" }
16-
cache = { ref = "master", owner = "roadrunner-server", repository = "cache" }
17-
reload = { ref = "master", owner = "roadrunner-server", repository = "reload" }
18-
otel = { ref = "master", owner = "roadrunner-server", repository = "otel" }
19-
server = { ref = "master", owner = "roadrunner-server", repository = "server" }
20-
service = { ref = "master", owner = "roadrunner-server", repository = "service" }
21-
amqp = { ref = "master", owner = "roadrunner-server", repository = "amqp" }
22-
beanstalk = { ref = "master", owner = "roadrunner-server", repository = "beanstalk" }
23-
boltdb = { ref = "master", owner = "roadrunner-server", repository = "boltdb" }
24-
broadcast = { ref = "master", owner = "roadrunner-server", repository = "broadcast" }
25-
fileserver = { ref = "master", owner = "roadrunner-server", repository = "fileserver" }
26-
grpc = { ref = "master", owner = "roadrunner-server", repository = "grpc" }
27-
gzip = { ref = "master", owner = "roadrunner-server", repository = "gzip" }
28-
headers = { ref = "master", owner = "roadrunner-server", repository = "headers" }
29-
http = { ref = "master", owner = "roadrunner-server", repository = "http" }
30-
jobs = { ref = "master", owner = "roadrunner-server", repository = "jobs" }
31-
memory = { ref = "master", owner = "roadrunner-server", repository = "memory" }
32-
nats = { ref = "master", owner = "roadrunner-server", repository = "nats" }
33-
new_relic = { ref = "master", owner = "roadrunner-server", repository = "new_relic" }
34-
prometheus = { ref = "master", owner = "roadrunner-server", repository = "prometheus" }
35-
redis = { ref = "master", owner = "roadrunner-server", repository = "redis" }
36-
sqs = { ref = "master", owner = "roadrunner-server", repository = "sqs" }
37-
static = { ref = "master", owner = "roadrunner-server", repository = "static" }
38-
status = { ref = "master", owner = "roadrunner-server", repository = "status" }
39-
kv = { ref = "master", owner = "roadrunner-server", repository = "kv" }
40-
memcached = { ref = "master", owner = "roadrunner-server", repository = "memcached" }
41-
tcp = { ref = "master", owner = "roadrunner-server", repository = "tcp" }
42-
43-
[gitlab]
44-
[gitlab.token]
45-
# api, read-api, read-repo
46-
token = "${GL_TOKEN}"
47-
48-
[gitlab.endpoint]
49-
endpoint = "https://gitlab.com"
50-
51-
[gitlab.plugins]
52-
# ref -> master, commit or tag
53-
test_plugin_1 = { ref = "main", owner = "rustatian", repository = "36405203" }
54-
test_plugin_2 = { ref = "main", owner = "rustatian", repository = "36405235" }
4+
#[roadrunner]
5+
#ref = "master"
6+
#
7+
#[github]
8+
# [github.token]
9+
# token = "${RT_TOKEN}"
10+
#
11+
# [github.plugins]
12+
# # ref -> master, commit or tag
13+
# logger = { ref = "master", owner = "roadrunner-server", repository = "logger" }
14+
# temporal = { ref = "master", owner = "temporalio", repository = "roadrunner-temporal" }
15+
# metrics = { ref = "master", owner = "roadrunner-server", repository = "metrics" }
16+
# cache = { ref = "master", owner = "roadrunner-server", repository = "cache" }
17+
# reload = { ref = "master", owner = "roadrunner-server", repository = "reload" }
18+
# otel = { ref = "master", owner = "roadrunner-server", repository = "otel" }
19+
# server = { ref = "master", owner = "roadrunner-server", repository = "server" }
20+
# service = { ref = "master", owner = "roadrunner-server", repository = "service" }
21+
# amqp = { ref = "master", owner = "roadrunner-server", repository = "amqp" }
22+
# beanstalk = { ref = "master", owner = "roadrunner-server", repository = "beanstalk" }
23+
# boltdb = { ref = "master", owner = "roadrunner-server", repository = "boltdb" }
24+
# broadcast = { ref = "master", owner = "roadrunner-server", repository = "broadcast" }
25+
# fileserver = { ref = "master", owner = "roadrunner-server", repository = "fileserver" }
26+
# grpc = { ref = "master", owner = "roadrunner-server", repository = "grpc" }
27+
# gzip = { ref = "master", owner = "roadrunner-server", repository = "gzip" }
28+
# headers = { ref = "master", owner = "roadrunner-server", repository = "headers" }
29+
# http = { ref = "master", owner = "roadrunner-server", repository = "http" }
30+
# jobs = { ref = "master", owner = "roadrunner-server", repository = "jobs" }
31+
# memory = { ref = "master", owner = "roadrunner-server", repository = "memory" }
32+
# nats = { ref = "master", owner = "roadrunner-server", repository = "nats" }
33+
# new_relic = { ref = "master", owner = "roadrunner-server", repository = "new_relic" }
34+
# prometheus = { ref = "master", owner = "roadrunner-server", repository = "prometheus" }
35+
# redis = { ref = "master", owner = "roadrunner-server", repository = "redis" }
36+
# sqs = { ref = "master", owner = "roadrunner-server", repository = "sqs" }
37+
# static = { ref = "master", owner = "roadrunner-server", repository = "static" }
38+
# status = { ref = "master", owner = "roadrunner-server", repository = "status" }
39+
# kv = { ref = "master", owner = "roadrunner-server", repository = "kv" }
40+
# memcached = { ref = "master", owner = "roadrunner-server", repository = "memcached" }
41+
# tcp = { ref = "master", owner = "roadrunner-server", repository = "tcp" }
42+
#
43+
#[gitlab]
44+
# [gitlab.token]
45+
# # api, read-api, read-repo
46+
# token = "${GL_TOKEN}"
47+
#
48+
# [gitlab.endpoint]
49+
# endpoint = "https://gitlab.com"
50+
#
51+
# [gitlab.plugins]
52+
# # ref -> master, commit or tag
53+
# test_plugin_1 = { ref = "main", owner = "rustatian", repository = "36405203" }
54+
# test_plugin_2 = { ref = "main", owner = "rustatian", repository = "36405235" }
5555

5656
[log]
5757
level = "debug"

0 commit comments

Comments
 (0)