Skip to content

Commit 8fdc8f5

Browse files
authored
Merge pull request #3019 from efficacy38/chore/clean-codes
chore: enable linter(golangci-lint)
2 parents 62c52c0 + 92d33c3 commit 8fdc8f5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

86 files changed

+358
-418
lines changed

.golangci.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
version: "2"
2+
3+
run:
4+
timeout: "240s"
5+
# TODO: remove following line to make golangci return non-zero as lint were not passed
6+
issues-exit-code: 0
7+
8+
linters:
9+
default: standard
10+
disable:
11+
- unused
12+
13+
formatters:
14+
enable:
15+
- gofmt
16+
settings:
17+
gofmt:
18+
rewrite-rules:
19+
- pattern: 'interface{}'
20+
replacement: 'any'

Taskfile.yml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -110,18 +110,17 @@ tasks:
110110
lint:
111111
cmds:
112112
- task: lint:fe
113-
# - task: lint:be
113+
- task: lint:be
114114

115115
lint:fe:
116116
dir: web
117117
cmds:
118118
- npm run lint
119119

120-
# lint:be:
121-
# cmds:
122-
# - golangci-lint run --disable goconst --timeout 240s ./...
123-
# - go vet ./...
124-
# - swagger validate ./api-docs.yml
120+
lint:be:
121+
cmds:
122+
- golangci-lint run
123+
- swagger validate ./api-docs.yml
125124

126125
test:
127126
cmds:

api/apps.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ import (
1414
"strings"
1515
)
1616

17-
func structToFlatMap(obj interface{}) map[string]interface{} {
18-
result := make(map[string]interface{})
17+
func structToFlatMap(obj any) map[string]any {
18+
result := make(map[string]any)
1919
val := reflect.ValueOf(obj)
2020
typ := reflect.TypeOf(obj)
2121

@@ -137,7 +137,7 @@ func deleteApp(w http.ResponseWriter, r *http.Request) {
137137
w.WriteHeader(http.StatusNoContent)
138138
}
139139

140-
func setAppOption(store db.Store, appID string, field string, val interface{}) error {
140+
func setAppOption(store db.Store, appID string, field string, val any) error {
141141
key := "apps." + appID + "." + field
142142

143143
if val == nil {

api/auth.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func getSession(r *http.Request) (*db.Session, bool) {
2222
return nil, false
2323
}
2424

25-
value := make(map[string]interface{})
25+
value := make(map[string]any)
2626
if err = util.Cookie.Decode("semaphore", cookie.Value, &value); err != nil {
2727
//w.WriteHeader(http.StatusUnauthorized)
2828
return nil, false

api/helpers/context.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package helpers
33
import (
44
"net/http"
55

6-
"github.com/semaphoreui/semaphore/db"
76
"github.com/gorilla/context"
7+
"github.com/semaphoreui/semaphore/db"
88
)
99

1010
func UserFromContext(r *http.Request) *db.User {

api/helpers/helpers.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,10 @@ func GetIntParam(name string, w http.ResponseWriter, r *http.Request) (int, erro
7171
}
7272

7373
// H just a string-to-anything map
74-
type H map[string]interface{}
74+
type H map[string]any
7575

7676
// Bind decodes json into object
77-
func Bind(w http.ResponseWriter, r *http.Request, out interface{}) bool {
77+
func Bind(w http.ResponseWriter, r *http.Request, out any) bool {
7878
err := json.NewDecoder(r.Body).Decode(out)
7979
if err != nil {
8080
w.WriteHeader(http.StatusBadRequest)
@@ -84,7 +84,7 @@ func Bind(w http.ResponseWriter, r *http.Request, out interface{}) bool {
8484
}
8585

8686
// WriteJSON writes object as JSON
87-
func WriteJSON(w http.ResponseWriter, code int, out interface{}) {
87+
func WriteJSON(w http.ResponseWriter, code int, out any) {
8888
w.Header().Set("content-type", "application/json")
8989
w.WriteHeader(code)
9090

api/integration.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ func Match(matcher db.IntegrationMatcher, header http.Header, bodyBytes []byte)
217217
return false
218218
}
219219

220-
func MatchCompare(value interface{}, method db.IntegrationMatchMethodType, expected string) bool {
220+
func MatchCompare(value any, method db.IntegrationMatchMethodType, expected string) bool {
221221

222222
if intValue, ok := conv.ConvertFloatToIntIfPossible(value); ok {
223223
value = intValue

api/login.go

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"encoding/json"
1010
"errors"
1111
"fmt"
12-
"github.com/semaphoreui/semaphore/pkg/tz"
1312
"net/http"
1413
"net/url"
1514
"os"
@@ -18,6 +17,8 @@ import (
1817
"text/template"
1918
"time"
2019

20+
"github.com/semaphoreui/semaphore/pkg/tz"
21+
2122
"github.com/coreos/go-oidc/v3/oidc"
2223
"github.com/go-ldap/ldap/v3"
2324
"github.com/gorilla/mux"
@@ -60,7 +61,7 @@ func tryFindLDAPUser(username, password string) (*db.User, error) {
6061
if err != nil {
6162
return nil, err
6263
}
63-
defer l.Close()
64+
defer l.Close() //nolint:errcheck
6465

6566
// First bind with a read only user
6667
if err = l.Bind(util.Config.LdapBindDN, util.Config.LdapBindPassword); err != nil {
@@ -137,7 +138,6 @@ func tryFindLDAPUser(username, password string) (*db.User, error) {
137138
}
138139

139140
err = db.ValidateUser(ldapUser)
140-
141141
if err != nil {
142142
jsonBytes, _ := json.Marshal(ldapUser)
143143
log.Error("LDAP returned incorrect user data: " + string(jsonBytes))
@@ -171,14 +171,13 @@ func createSession(w http.ResponseWriter, r *http.Request, user db.User) {
171171
VerificationMethod: verificationMethod,
172172
Verified: verified,
173173
})
174-
175174
if err != nil {
176175
log.Error(err)
177176
helpers.WriteErrorStatus(w, "Failed to create session", http.StatusInternalServerError)
178177
return
179178
}
180179

181-
encoded, err := util.Cookie.Encode("semaphore", map[string]interface{}{
180+
encoded, err := util.Cookie.Encode("semaphore", map[string]any{
182181
"user": user.ID,
183182
"session": newSession.ID,
184183
})
@@ -196,7 +195,6 @@ func createSession(w http.ResponseWriter, r *http.Request, user db.User) {
196195

197196
func loginByPassword(store db.Store, login string, password string) (user db.User, err error) {
198197
user, err = store.GetUserByLoginOrEmail(login, login)
199-
200198
if err != nil {
201199
return
202200
}
@@ -207,7 +205,6 @@ func loginByPassword(store db.Store, login string, password string) (user db.Use
207205
}
208206

209207
err = bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(password))
210-
211208
if err != nil {
212209
err = db.ErrNotFound
213210
return
@@ -364,7 +361,6 @@ func login(w http.ResponseWriter, r *http.Request) {
364361
// - 204 No Content: Logout successful.
365362
// - 500 Internal Server Error: An error occurred while expiring the session.
366363
func logout(w http.ResponseWriter, r *http.Request) {
367-
368364
if session, ok := getSession(r); ok {
369365
err := helpers.Store(r).ExpireSession(session.UserID, session.ID)
370366
if err != nil {
@@ -512,8 +508,7 @@ type claimResult struct {
512508
email string
513509
}
514510

515-
func parseClaim(str string, claims map[string]interface{}) (string, bool) {
516-
511+
func parseClaim(str string, claims map[string]any) (string, bool) {
517512
for _, s := range strings.Split(str, "|") {
518513
s = strings.TrimSpace(s)
519514

@@ -523,7 +518,6 @@ func parseClaim(str string, claims map[string]interface{}) (string, bool) {
523518

524519
if strings.Contains(s, "{{") {
525520
tpl, err := template.New("").Parse(s)
526-
527521
if err != nil {
528522
return "", false
529523
}
@@ -548,17 +542,17 @@ func parseClaim(str string, claims map[string]interface{}) (string, bool) {
548542
return "", false
549543
}
550544

551-
func prepareClaims(claims map[string]interface{}) {
545+
func prepareClaims(claims map[string]any) {
552546
for k, v := range claims {
553-
switch v.(type) {
547+
switch v := v.(type) {
554548
case float64:
555-
f := v.(float64)
549+
f := v
556550
i := int64(f)
557551
if float64(i) == f {
558552
claims[k] = i
559553
}
560554
case float32:
561-
f := v.(float32)
555+
f := v
562556
i := int64(f)
563557
if float32(i) == f {
564558
claims[k] = i
@@ -567,8 +561,7 @@ func prepareClaims(claims map[string]interface{}) {
567561
}
568562
}
569563

570-
func parseClaims(claims map[string]interface{}, provider util.ClaimsProvider) (res claimResult, err error) {
571-
564+
func parseClaims(claims map[string]any, provider util.ClaimsProvider) (res claimResult, err error) {
572565
var ok bool
573566
res.email, ok = parseClaim(provider.GetEmailClaim(), claims)
574567

@@ -591,7 +584,7 @@ func parseClaims(claims map[string]interface{}, provider util.ClaimsProvider) (r
591584
}
592585

593586
func claimOidcUserInfo(userInfo *oidc.UserInfo, provider util.OidcProvider) (res claimResult, err error) {
594-
claims := make(map[string]interface{})
587+
claims := make(map[string]any)
595588
if err = userInfo.Claims(&claims); err != nil {
596589
return
597590
}
@@ -602,7 +595,7 @@ func claimOidcUserInfo(userInfo *oidc.UserInfo, provider util.OidcProvider) (res
602595
}
603596

604597
func claimOidcToken(idToken *oidc.IDToken, provider util.OidcProvider) (res claimResult, err error) {
605-
claims := make(map[string]interface{})
598+
claims := make(map[string]any)
606599
if err = idToken.Claims(&claims); err != nil {
607600
return
608601
}
@@ -622,7 +615,6 @@ func getRandomProfileName() string {
622615

623616
func getSecretFromFile(source string) (string, error) {
624617
content, err := os.ReadFile(source)
625-
626618
if err != nil {
627619
return "", err
628620
}
@@ -691,7 +683,6 @@ func oidcRedirect(w http.ResponseWriter, r *http.Request) {
691683
userInfo, err = _oidc.UserInfo(ctx, oauth2.StaticTokenSource(oauth2Token))
692684

693685
if err == nil {
694-
695686
if userInfo.Email == "" {
696687
claims, err = claimOidcUserInfo(userInfo, provider)
697688
} else {

api/login_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
)
66

77
func TestParseClaim(t *testing.T) {
8-
claims := map[string]interface{}{
8+
claims := map[string]any{
99
"username": "fiftin",
1010
"email": "",
1111
"id": 1234567,
@@ -23,7 +23,7 @@ func TestParseClaim(t *testing.T) {
2323
}
2424

2525
func TestParseClaim2(t *testing.T) {
26-
claims := map[string]interface{}{
26+
claims := map[string]any{
2727
"username": "fiftin",
2828
"email": "",
2929
"id": 1234567,
@@ -41,7 +41,7 @@ func TestParseClaim2(t *testing.T) {
4141
}
4242

4343
func TestParseClaim3(t *testing.T) {
44-
claims := map[string]interface{}{
44+
claims := map[string]any{
4545
"username": "fiftin",
4646
"email": "",
4747
"id": 1234567,
@@ -55,7 +55,7 @@ func TestParseClaim3(t *testing.T) {
5555
}
5656

5757
func TestParseClaim4(t *testing.T) {
58-
claims := map[string]interface{}{
58+
claims := map[string]any{
5959
"username": "fiftin",
6060
"email": "",
6161
"id": 1234567,
@@ -69,7 +69,7 @@ func TestParseClaim4(t *testing.T) {
6969
}
7070

7171
func TestParseClaim5(t *testing.T) {
72-
claims := map[string]interface{}{
72+
claims := map[string]any{
7373
"username": "fiftin",
7474
"email": "",
7575
"id": 123456757343.0,

api/options.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package api
22

33
import (
4+
"github.com/gorilla/context"
45
"github.com/semaphoreui/semaphore/api/helpers"
56
"github.com/semaphoreui/semaphore/db"
6-
"github.com/gorilla/context"
77
"net/http"
88
)
99

0 commit comments

Comments
 (0)