From 22f1ea6e76e2a0b8c6dd1aa6ae6cc0da37d1116b Mon Sep 17 00:00:00 2001 From: logikonline Date: Mon, 19 Jan 2026 01:03:07 -0500 Subject: [PATCH] chore(ui): update golangci-lint config and cleanup package docs Updates golangci-lint configuration to v2 format with Go 1.23, streamlines linter settings by removing deprecated options and unnecessary exclusions. Adds package documentation and renames CleanupResult to Result for consistency. Marks unused context parameter with underscore. --- .golangci.yml | 100 ++++---------------------------- internal/pkg/cleanup/cleanup.go | 33 +++++++---- 2 files changed, 32 insertions(+), 101 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 41f9683..deb3f2a 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,53 +1,42 @@ +version: "2" + linters: + default: none enable: - - gosimple - - typecheck - govet - errcheck - staticcheck - unused - dupl - #- gocyclo # The cyclomatic complexety of a lot of functions is too high, we should refactor those another time. - - gofmt - misspell - gocritic - bidichk - ineffassign - revive - - gofumpt - - depguard - nakedret - unconvert - wastedassign - nolintlint - - stylecheck - enable-all: false - disable-all: true - fast: false + +formatters: + enable: + - gofmt + - gofumpt run: - go: 1.18 + go: "1.23" timeout: 10m - skip-dirs: - - node_modules - - public - - web_src linters-settings: - stylecheck: - checks: ["all", "-ST1005", "-ST1003"] nakedret: max-func-lines: 0 gocritic: disabled-checks: - ifElseChain - - singleCaseSwitch # Every time this occurred in the code, there was no other way. + - singleCaseSwitch revive: - ignore-generated-header: false severity: warning confidence: 0.8 - errorCode: 1 - warningCode: 1 rules: - name: blank-imports - name: context-as-argument @@ -72,94 +61,25 @@ linters-settings: - name: modifies-value-receiver gofumpt: extra-rules: true - lang-version: "1.18" - depguard: - # TODO: use depguard to replace import checks in gitea-vet - list-type: denylist - # Check the list against standard lib. - include-go-root: true - packages-with-error-message: - - github.com/unknwon/com: "use gitea's util and replacements" issues: exclude-rules: - # Exclude some linters from running on tests files. - path: _test\.go linters: - - gocyclo - errcheck - dupl - - gosec - - unparam - - staticcheck - - path: models/migrations/v - linters: - - gocyclo - - errcheck - - dupl - - gosec - linters: - dupl text: "webhook" - linters: - gocritic text: "`ID' should not be capitalized" - - path: modules/templates/helper.go - linters: - - gocritic - - linters: - - unused - text: "swagger" - - path: contrib/pr/checkout.go - linters: - - errcheck - - path: models/issue.go - linters: - - errcheck - - path: models/migrations/ - linters: - - errcheck - - path: modules/log/ - linters: - - errcheck - - path: routers/api/v1/repo/issue_subscription.go - linters: - - dupl - - path: routers/repo/view.go - linters: - - dupl - - path: models/migrations/ - linters: - - unused - - linters: - - staticcheck - text: "argument x is overwritten before first use" - - path: modules/httplib/httplib.go - linters: - - staticcheck - # Enabling this would require refactoring the methods and how they are called. - - path: models/issue_comment_list.go - linters: - - dupl - linters: - misspell text: '`Unknwon` is a misspelling of `Unknown`' - - path: models/update.go - linters: - - unused - - path: cmd/dump.go - linters: - - dupl - text: "commentFormatting: put a space between `//` and comment text" linters: - gocritic - text: "exitAfterDefer:" linters: - gocritic - - path: modules/graceful/manager_windows.go - linters: - - staticcheck - text: "svc.IsAnInteractiveSession is deprecated: Use IsWindowsService instead." - - path: models/user/openid.go - linters: - - golint diff --git a/internal/pkg/cleanup/cleanup.go b/internal/pkg/cleanup/cleanup.go index 880f8d0..28673d6 100644 --- a/internal/pkg/cleanup/cleanup.go +++ b/internal/pkg/cleanup/cleanup.go @@ -1,6 +1,7 @@ // Copyright 2026 MarketAlly. All rights reserved. // SPDX-License-Identifier: MIT +// Package cleanup provides disk cleanup utilities for CI runners. package cleanup import ( @@ -15,18 +16,18 @@ import ( log "github.com/sirupsen/logrus" ) -// CleanupResult contains the results of a cleanup operation -type CleanupResult struct { +// Result contains the results of a cleanup operation. +type Result struct { BytesFreed int64 FilesDeleted int Errors []error Duration time.Duration } -// RunCleanup performs cleanup operations to free disk space -func RunCleanup(ctx context.Context, cfg *config.Config) (*CleanupResult, error) { +// RunCleanup performs cleanup operations to free disk space. +func RunCleanup(_ context.Context, cfg *config.Config) (*Result, error) { start := time.Now() - result := &CleanupResult{} + result := &Result{} log.Info("Starting runner cleanup...") @@ -207,8 +208,15 @@ func cleanTempDir(maxAge time.Duration) (int64, int, error) { return 0, 0, err } - // Only clean files/dirs that look like runner/act artifacts - runnerPatterns := []string{"act-", "runner-", "gitea-", "workflow-", "go-build", "go-link", "node-compile-cache", "npm-", "yarn-", "pnpm-"} + // Only clean files/dirs that look like runner/act artifacts or build tool temp files + runnerPatterns := []string{ + "act-", "runner-", "gitea-", "workflow-", + "go-build", "go-link", + "node-compile-cache", "npm-", "yarn-", "yarn--", "pnpm-", + "ts-node-", "tsx-", "jiti", "v8-compile-cache", + "text-diff-expansion-test", "DiagOutputDir", + "dugite-native-", "reorderCommitMessage-", "squashCommitMessage-", + } for _, entry := range entries { name := entry.Name() isRunner := false @@ -246,10 +254,10 @@ func cleanTempDir(maxAge time.Duration) (int64, int, error) { return bytesFreed, filesDeleted, nil } -// dirSize calculates the total size of a directory +// dirSize calculates the total size of a directory. func dirSize(path string) int64 { var size int64 - filepath.Walk(path, func(_ string, info os.FileInfo, err error) error { + _ = filepath.Walk(path, func(_ string, info os.FileInfo, err error) error { if err != nil { return nil } @@ -308,6 +316,9 @@ func cleanBuildCaches(maxAge time.Duration) (int64, int, error) { {filepath.Join(os.Getenv("LOCALAPPDATA"), "Yarn", "Cache"), "Yarn cache (Windows)", 0}, {filepath.Join(os.Getenv("LOCALAPPDATA"), "NuGet", "v3-cache"), "NuGet cache (Windows)", 0}, {filepath.Join(os.Getenv("LOCALAPPDATA"), "pip", "Cache"), "pip cache (Windows)", 0}, + // Windows custom paths used by some CI setups + {"C:\\L\\Yarn", "Yarn global cache (Windows)", 0}, + {filepath.Join(os.TempDir(), "chocolatey"), "Chocolatey temp cache", 0}, } for _, cache := range cacheDirs { @@ -349,13 +360,13 @@ func cleanBuildCaches(maxAge time.Duration) (int64, int, error) { } // Also remove empty directories - filepath.Walk(cache.path, func(path string, info os.FileInfo, err error) error { + _ = filepath.Walk(cache.path, func(path string, info os.FileInfo, err error) error { if err != nil || !info.IsDir() || path == cache.path { return nil } entries, _ := os.ReadDir(path) if len(entries) == 0 { - os.Remove(path) + _ = os.Remove(path) } return nil })