From 274169fd0f5542d60165fcb2f82e268573dcab46 Mon Sep 17 00:00:00 2001 From: samshadwell Date: Mon, 6 Oct 2025 22:10:13 -0400 Subject: [PATCH 1/2] Upgrade to go 1.25.1 --- .github/workflows/go.yml | 5 ++--- go.mod | 4 +--- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 6f1b82f..76f6395 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -13,7 +13,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: - go-version: "1.23.x" + go-version: "1.25.x" - name: Build run: go build -v ./... - name: Test @@ -25,9 +25,8 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: - go-version: "1.23.x" + go-version: "1.25.x" - name: golangci-lint uses: golangci/golangci-lint-action@v6 with: version: latest - diff --git a/go.mod b/go.mod index ef525d1..36ff52f 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,6 @@ module github.com/samshadwell/split-ynab -go 1.23.1 - -toolchain go1.24.1 +go 1.25.1 require ( github.com/aws/aws-cdk-go/awscdk/v2 v2.218.0 From 42ddd92bf4a7a99601a60ef76918924b1539066e Mon Sep 17 00:00:00 2001 From: samshadwell Date: Mon, 6 Oct 2025 22:36:13 -0400 Subject: [PATCH 2/2] Resolve lint errors --- .github/workflows/go.yml | 2 +- internal/storage/file_storage_adapter.go | 32 +++++++++++++++++------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 76f6395..477488e 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -27,6 +27,6 @@ jobs: with: go-version: "1.25.x" - name: golangci-lint - uses: golangci/golangci-lint-action@v6 + uses: golangci/golangci-lint-action@v8 with: version: latest diff --git a/internal/storage/file_storage_adapter.go b/internal/storage/file_storage_adapter.go index 1067c05..097dd70 100644 --- a/internal/storage/file_storage_adapter.go +++ b/internal/storage/file_storage_adapter.go @@ -39,7 +39,7 @@ func (l *localStorageAdapter) GetLastServerKnowledge(ctx context.Context, budget return 0, fmt.Errorf("no budget found with id %v", budgetId) } -func (l *localStorageAdapter) SetLastServerKnowledge(ctx context.Context, budgetId uuid.UUID, serverKnowledge int64) error { +func (l *localStorageAdapter) SetLastServerKnowledge(ctx context.Context, budgetId uuid.UUID, serverKnowledge int64) (err error) { var data []budgetData if _, err := os.Stat(storageFile); err == nil { @@ -68,25 +68,39 @@ func (l *localStorageAdapter) SetLastServerKnowledge(ctx context.Context, budget if err != nil { return err } - defer f.Close() + defer func() { + if closeErr := f.Close(); err == nil && closeErr != nil { + err = fmt.Errorf("failed to close storage file: %w", closeErr) + } + }() encoder := yaml.NewEncoder(f) - defer encoder.Close() + defer func() { + if closeErr := encoder.Close(); err == nil && closeErr != nil { + err = fmt.Errorf("failed to close YAML encoder: %w", closeErr) + } + }() + + if err = encoder.Encode(data); err != nil { + return fmt.Errorf("failed to encode storage data: %w", err) + } - return encoder.Encode(data) + return nil } -func (l *localStorageAdapter) readData() ([]budgetData, error) { +func (l *localStorageAdapter) readData() (data []budgetData, err error) { f, err := os.Open(storageFile) if err != nil { return nil, err } - defer f.Close() + defer func() { + if closeErr := f.Close(); err == nil && closeErr != nil { + err = fmt.Errorf("failed to close storage file: %w", closeErr) + } + }() - var data []budgetData decoder := yaml.NewDecoder(f) - err = decoder.Decode(&data) - if err != nil { + if err = decoder.Decode(&data); err != nil { return nil, err }