Skip to content

Conversation

@nataliagranato
Copy link
Contributor

@nataliagranato nataliagranato commented Jul 14, 2025

  • Add comprehensive CLI subcommands with version and improved scan

  • Implement extensive unit tests for all components

  • Enhance error messages with troubleshooting guidance

  • Add POSIX-compliant command line syntax support


Changes diagram

flowchart LR
  A["CLI Root"] --> B["Scan Command"]
  A --> C["Version Command"]
  A --> D["Completion Command"]
  B --> E["Enhanced Error Messages"]
  B --> F["POSIX Flag Support"]
  C --> G["Multiple Output Formats"]
  H["Unit Tests"] --> I["Scanner Tests"]
  H --> J["CLI Tests"]
  H --> K["Kubernetes Client Tests"]
  L["CI/CD"] --> M["Automated Testing"]
  L --> N["Docker Build"]
Loading

Changes walkthrough 📝

Relevant files
Error handling
1 files
main.go
Simplify error handling in main function                                 
+3/-3     
Enhancement
5 files
root.go
Add comprehensive CLI structure with subcommands                 
+38/-4   
scan.go
Create scan command wrapper                                                           
+12/-0   
version.go
Implement version command with multiple output formats     
+78/-0   
cmd.go
Enhance scan command with POSIX compliance                             
+49/-14 
scanner.go
Improve scanner with better error messages                             
+45/-16 
Tests
6 files
root_test.go
Add comprehensive root command tests                                         
+335/-0 
scan_test.go
Add scan command tests                                                                     
+93/-0   
version_test.go
Add comprehensive version command tests                                   
+318/-0 
cmd_test.go
Add extensive scanner command tests                                           
+527/-0 
scanner_test.go
Add comprehensive scanner logic tests                                       
+495/-0 
client_test.go
Add Kubernetes client tests                                                           
+223/-0 
Configuration changes
5 files
.dockerignore
Update dockerignore with development files                             
+7/-1     
ci.yml
Add comprehensive CI workflow                                                       
+141/-0 
release.yml
Enhance release workflow with Docker support                         
+11/-0   
.goreleaser.yml
Add Docker image configuration                                                     
+27/-0   
Dockerfile
Improve Docker image with Alpine base                                       
+16/-14 
Documentation
4 files
CONTRIBUTING.md
Add testing requirements and guidelines                                   
+52/-7   
README.md
Add comprehensive documentation with POSIX examples           
+269/-15
completion.md
Add auto-completion documentation                                               
+171/-0 
docker.md
Enhance Docker usage documentation                                             
+91/-9   

Need help?
  • Type /help how to ... in the comments thread for any questions about Qodo Merge usage.
  • Check out the documentation for more information.
  • Summary by CodeRabbit

    Summary by CodeRabbit

    Novos Recursos

    • Adicionado comando CLI version para exibir informações detalhadas da versão, com suporte aos formatos padrão, curto e JSON.
    • Suporte a auto-completar comandos e flags em bash, zsh, fish e PowerShell.
    • Documentação expandida com exemplos POSIX, explicação detalhada de flags, códigos de saída e instruções de uso via Docker.
    • Suporte a recomendações detalhadas ao escanear probes em workloads Kubernetes.
    • Integração de build e publicação de imagens Docker no processo de release.

    Melhorias

    • Mensagens de erro e de ajuda aprimoradas com dicas de troubleshooting e exemplos.
    • Saídas CLI mais claras, com emojis e sugestões de próximos passos.
    • Documentação ampliada sobre testes, cobertura mínima e boas práticas de contribuição.
    • CLI aprimorada para conformidade POSIX, com exemplos e suporte a agrupamento e sintaxes flexíveis de flags.

    Correções

    • Ajustes na lógica de tratamento de erros e simplificação do fluxo de saída da aplicação.

    Testes

    • Inclusão de testes unitários abrangentes para comandos scan, version e integração com Kubernetes.
    • Testes para garantir conformidade POSIX nas flags e comandos.
    • Testes para cliente Kubernetes cobrindo cenários de configuração inválida e integração.

    Infraestrutura

    • Novo workflow CI/CD no GitHub Actions para testes, lint, build multi-plataforma, análise de segurança e publicação de artefatos.
    • Dockerfile e .dockerignore atualizados para builds mais leves e seguros.

    Copilot AI and others added 8 commits July 14, 2025 14:27
    …owerShell (#22)
    
    * Initial plan
    
    * Add comprehensive auto-completion support with documentation
    
    Co-authored-by: nataliagranato <[email protected]>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <[email protected]>
    Co-authored-by: nataliagranato <[email protected]>
    Co-authored-by: copilot-swe-agent[bot] <[email protected]>
    Co-authored-by: copilot-swe-agent[bot] <[email protected]>
    * Initial plan
    
    * Add version subcommand and refactor CLI structure with tests
    
    Co-authored-by: nataliagranato <[email protected]>
    
    * Update documentation with comprehensive subcommand examples
    
    Co-authored-by: nataliagranato <[email protected]>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <[email protected]>
    Co-authored-by: nataliagranato <[email protected]>
    * Initial plan
    
    * Add comprehensive unit tests for scanner and kubernetes packages
    
    Co-authored-by: nataliagranato <[email protected]>
    
    * Enhanced CLI tests, documentation, and added CI workflow for automated testing
    
    Co-authored-by: nataliagranato <[email protected]>
    
    * Fix staticcheck linting issues in client_test.go
    
    Co-authored-by: nataliagranato <[email protected]>
    
    * Fix CI workflow: remove broken gosec action, keep govulncheck security scan
    
    Co-authored-by: nataliagranato <[email protected]>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <[email protected]>
    Co-authored-by: nataliagranato <[email protected]>
    )
    
    * Initial plan
    
    * Improve CLI error messages and help text for better UX
    
    Co-authored-by: nataliagranato <[email protected]>
    
    * Add comprehensive integration tests and update documentation
    
    Co-authored-by: nataliagranato <[email protected]>
    
    * Fix syntax errors and update tests to match enhanced error messages
    
    Co-authored-by: nataliagranato <[email protected]>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <[email protected]>
    Co-authored-by: nataliagranato <[email protected]>
    …ion (#37)
    
    * Initial plan
    
    * Implement POSIX-compliant CLI with comprehensive tests and documentation
    
    Co-authored-by: nataliagranato <[email protected]>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <[email protected]>
    Co-authored-by: nataliagranato <[email protected]>
    …mples (#38)
    
    * Initial plan
    
    * Add KUBECONFIG environment variable example and improve Dockerfile
    
    Co-authored-by: nataliagranato <[email protected]>
    
    * feat: update Dockerfile to alpine:3.22.0 and add GitHub Packages pipeline
    
    Co-authored-by: nataliagranato <[email protected]>
    
    * fix: update GitHub Packages authentication to use USER_TOKEN
    
    Co-authored-by: nataliagranato <[email protected]>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <[email protected]>
    Co-authored-by: nataliagranato <[email protected]>
    @nataliagranato nataliagranato requested a review from Copilot July 14, 2025 20:54
    @coderabbitai
    Copy link

    coderabbitai bot commented Jul 14, 2025

    """

    Walkthrough

    O pull request amplia e refatora o CLI do kubeprobes, modularizando comandos e lógica de scanner, adicionando novos comandos (version), expandindo testes unitários e documentação (README, Docker, completion). Foram introduzidas melhorias na experiência do usuário, POSIX compliance, mensagens de erro, integração de build/release Docker, e práticas de contribuição e testes.

    Changes

    Arquivo(s) Resumo das alterações principais
    .github/workflows/ci.yml, .github/workflows/release.yml, .goreleaser.yml Adição e atualização de workflows CI/CD, integração de build e publicação de imagens Docker, permissões e setup de container.
    Dockerfile, .dockerignore Refatoração do Dockerfile (bases Alpine, usuário explícito, instalação de certificados), ampliação de exclusões no .dockerignore.
    README.md, docs/docker.md, docs/completion.md, CONTRIBUTING.md Expansão e reestruturação da documentação: uso CLI, sintaxe POSIX, auto-completion, testes, exemplos Docker e diretrizes de contribuição.
    cmd/kubeprobes/main.go Simplificação do tratamento de erro na main, remoção de import desnecessário.
    internal/cli/root.go, internal/cli/scan.go, internal/cli/version.go Modularização dos comandos CLI: root, scan (wrapper), e novo comando version com suporte a múltiplos formatos de saída.
    internal/cli/root_test.go, internal/cli/scan_test.go, internal/cli/version_test.go Novos testes unitários para comandos root, scan e version, cobrindo flags, POSIX compliance, help, exemplos e erros.
    internal/scanner/cmd.go, internal/scanner/cmd_test.go Melhoria na descrição, exemplos, documentação de exit codes, e registro de completion para scan; novos testes abrangentes.
    internal/scanner/scanner.go, internal/scanner/scanner_test.go Introdução de interface para client Kubernetes, novo construtor injetável, melhorias de mensagens e recomendações; testes com mock.
    pkg/kubernetes/client_test.go Novos testes para o client Kubernetes: erros de configuração, assinatura de métodos, integração e contratos de interface.

    Sequence Diagram(s)

    sequenceDiagram
        participant Usuário
        participant CLI (cobra)
        participant Comando Scan
        participant Scanner
        participant KubernetesClient (mock ou real)
    
        Usuário->>CLI (cobra): Executa "kubeprobes scan [flags]"
        CLI (cobra)->>Comando Scan: Inicializa comando scan
        Comando Scan->>Scanner: Cria ProbeScanner (injeta KubernetesClient)
        Scanner->>KubernetesClient: GetPods(ctx, namespace)
        KubernetesClient-->>Scanner: Lista de pods ou erro
        Scanner->>Scanner: Analisa probes em containers
        Scanner-->>Comando Scan: Resultado (issues encontrados ou não)
        Comando Scan-->>Usuário: Mensagens, recomendações, exit code
    
    Loading
    sequenceDiagram
        participant Usuário
        participant CLI (cobra)
        participant Comando Version
    
        Usuário->>CLI (cobra): Executa "kubeprobes version -o [formato]"
        CLI (cobra)->>Comando Version: Inicializa comando version
        Comando Version-->>Usuário: Exibe versão (default, short ou JSON)
    
    Loading

    Possibly related PRs

    • #1: Criação inicial do CLI de scan de probes com comandos e flags fundamentais, diretamente relacionado à evolução e modularização apresentada neste PR.
    • #17: Estrutura monolítica inicial do CLI e scanner, que é refatorada e modularizada neste PR.
    • #15: Introdução inicial do .dockerignore, expandido e aprimorado neste PR para cobrir mais arquivos e diretórios.

    Poema

    🐰
    No jardim do código, brinquei,
    Modularizei, testei e documentei.
    Com comandos POSIX a saltitar,
    E Dockerfiles a otimizar,
    Agora o kubeprobes reluz,
    Com versões, scans e auto-complete,
    O coelho feliz, por aqui conduz!

    """

    ✨ Finishing Touches
    • 📝 Generate Docstrings
    🧪 Generate unit tests
    • Create PR with unit tests
    • Post copyable unit tests in a comment
    • Commit unit tests in branch develop

    Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

    ❤️ Share
    🪧 Tips

    Chat

    There are 3 ways to chat with CodeRabbit:

    • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
      • I pushed a fix in commit <commit_id>, please review it.
      • Explain this complex logic.
      • Open a follow-up GitHub issue for this discussion.
    • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
      • @coderabbitai explain this code block.
      • @coderabbitai modularize this function.
    • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
      • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
      • @coderabbitai read src/utils.ts and explain its main purpose.
      • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
      • @coderabbitai help me debug CodeRabbit configuration file.

    Support

    Need help? Create a ticket on our support page for assistance with any issues or questions.

    Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

    CodeRabbit Commands (Invoked using PR comments)

    • @coderabbitai pause to pause the reviews on a PR.
    • @coderabbitai resume to resume the paused reviews.
    • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
    • @coderabbitai full review to do a full review from scratch and review all the files again.
    • @coderabbitai summary to regenerate the summary of the PR.
    • @coderabbitai generate docstrings to generate docstrings for this PR.
    • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
    • @coderabbitai auto-generate unit tests to generate unit tests for this PR.
    • @coderabbitai resolve resolve all the CodeRabbit review comments.
    • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
    • @coderabbitai help to get help.

    Other keywords and placeholders

    • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
    • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
    • Add @coderabbitai anywhere in the PR title to generate the title automatically.

    CodeRabbit Configuration File (.coderabbit.yaml)

    • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
    • Please see the configuration documentation for more information.
    • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

    Documentation and Community

    • Visit our Documentation for detailed information on how to use CodeRabbit.
    • Join our Discord Community to get help, request features, and share feedback.
    • Follow us on X/Twitter for updates and announcements.

    @qodo-merge-pro
    Copy link
    Contributor

    PR Reviewer Guide 🔍

    Here are some key observations to aid the review process:

    ⏱️ Estimated effort to review: 4 🔵🔵🔵🔵⚪
    🧪 PR contains tests
    🔒 No security concerns identified
    ⚡ Recommended focus areas for review

    Error Handling

    The enhanced error messages contain hardcoded troubleshooting tips that may become outdated. Consider extracting these to constants or configuration files for easier maintenance.

    	return nil, fmt.Errorf("invalid probe type '%s'\n\nValid probe types are:\n  - liveness: Checks if the container is running\n  - readiness: Checks if the container is ready to accept traffic\n  - startup: Checks if the container has started successfully\n\nExample: kubeprobes scan --probe-type liveness", probeType)
    }
    
    kubeClient, err := kubernetes.NewClient(kubeconfig, kubeContext)
    if err != nil {
    	return nil, fmt.Errorf("failed to connect to Kubernetes cluster: %w\n\nTroubleshooting tips:\n  - Ensure kubectl is configured and working: kubectl cluster-info\n  - Check kubeconfig file exists and is readable\n  - Verify the specified context exists: kubectl config get-contexts\n  - Try without specifying kubeconfig to use default: kubeprobes scan", err)
    Test Coverage

    Tests mock Kubernetes client but don't verify actual probe detection logic. The tests focus on flag parsing and command structure but may miss edge cases in probe scanning behavior.

    func TestNewScanCommand_FlagValidation(t *testing.T) {
    	tests := []struct {
    		name        string
    		args        []string
    		expectError bool
    		errorMsg    string
    	}{
    		{
    			name:        "invalid kubeconfig path",
    			args:        []string{"--kubeconfig=/nonexistent/path"},
    			expectError: true,
    			errorMsg:    "failed to connect to Kubernetes cluster",
    		},
    		{
    			name:        "invalid probe type shows enhanced error message",
    			args:        []string{"--probe-type=invalid"},
    			expectError: true,
    			errorMsg:    "invalid probe type 'invalid'",
    		},
    		{
    			name:        "valid probe type liveness",
    			args:        []string{"--probe-type=liveness", "--kubeconfig=/nonexistent"},
    			expectError: true,
    			errorMsg:    "failed to connect to Kubernetes cluster", // Will fail on kubeconfig, not probe type
    		},
    		{
    			name:        "valid probe type readiness",
    			args:        []string{"--probe-type=readiness", "--kubeconfig=/nonexistent"},
    			expectError: true,
    			errorMsg:    "failed to connect to Kubernetes cluster",
    		},
    		{
    			name:        "valid probe type startup",
    			args:        []string{"--probe-type=startup", "--kubeconfig=/nonexistent"},
    			expectError: true,
    			errorMsg:    "failed to connect to Kubernetes cluster",
    		},
    		{
    			name:        "case insensitive probe type",
    			args:        []string{"--probe-type=LIVENESS", "--kubeconfig=/nonexistent"},
    			expectError: true,
    			errorMsg:    "failed to connect to Kubernetes cluster",
    		},
    	}
    
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    			cmd := NewScanCommand()
    			cmd.SetContext(context.Background())
    
    			buf := new(bytes.Buffer)
    			cmd.SetOut(buf)
    			cmd.SetErr(buf)
    			cmd.SetArgs(tt.args)
    
    			err := cmd.Execute()
    
    			if tt.expectError {
    				if err == nil {
    					t.Error("Expected an error but got none")
    					return
    				}
    				if !strings.Contains(err.Error(), tt.errorMsg) {
    					t.Errorf("Expected error to contain %q, got %q", tt.errorMsg, err.Error())
    				}
    			} else {
    				if err != nil {
    					t.Errorf("Unexpected error: %v", err)
    				}
    			}
    		})
    	}
    }
    Interface Design

    The KubernetesClient interface is introduced for testing but the original kubernetes.Client may not implement it properly. Verify interface compatibility and consider explicit interface implementation.

    // KubernetesClient interface for testing
    type KubernetesClient interface {
    	GetPods(ctx context.Context, namespace string) (*corev1.PodList, error)
    }

    Copy link
    Contributor

    @gemini-code-assist gemini-code-assist bot left a comment

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    Summary of Changes

    Hello @nataliagranato, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

    This pull request introduces a suite of improvements aimed at enhancing the user experience, streamlining the development workflow, and bolstering the overall quality of the kubeprobes tool. It focuses on making the CLI more intuitive and informative, automating the Docker image build and release process, and providing comprehensive documentation and testing to support both users and contributors.

    Highlights

    • Improved User Guidance: User-facing error messages now include detailed troubleshooting tips, and the scan command provides actionable recommendations for missing probes, making the tool more intuitive and helpful.
    • Streamlined Build & Release: The project's build and release process has been automated for Docker images via .goreleaser.yml, including multi-tagging and OCI labels. The Dockerfile has also been optimized for smaller, more secure images by switching to Alpine and creating a dedicated non-root user.
    • Comprehensive Documentation: Extensive updates have been made to README.md and CONTRIBUTING.md, along with the addition of a new docs/completion.md file, providing clearer usage instructions, contribution guidelines, and detailed auto-completion setup.
    • Strengthened Test Suite: A substantial number of new unit tests have been added for CLI commands and core scanning logic, including tests for POSIX compliance and enhanced error messages, significantly improving code quality and maintainability.
    Using Gemini Code Assist

    The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

    Invoking Gemini

    You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

    Feature Command Description
    Code Review /gemini review Performs a code review for the current pull request in its current state.
    Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
    Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
    Help /gemini help Displays a list of available commands.

    Customization

    To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

    Limitations & Feedback

    Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.

    You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

    Footnotes

    1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

    Copy link
    Contributor

    Copilot AI left a comment

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    Pull Request Overview

    This PR enriches the kubeprobes CLI and scanner with clearer error messages, POSIX-compliant flag handling, actionable recommendations, enhanced documentation, and expanded test coverage and CI/CD workflows.

    • Improved scanner output with suggestions, summaries, and custom client interface
    • Updated CLI commands (scan, version, root) for POSIX flags, examples, and auto-completion
    • Extended documentation, Dockerfile, GitHub Actions, and contributing guidelines

    Reviewed Changes

    Copilot reviewed 21 out of 21 changed files in this pull request and generated 1 comment.

    Show a summary per file
    File Description
    pkg/kubernetes/client_test.go Added invalid-config tests for NewClient
    internal/scanner/scanner.go Switched to interface, improved error messages, added suggestions and summary output
    internal/scanner/cmd.go Enhanced scan command flags, examples, POSIX compliance, and flag completion
    internal/cli/version.go Improved version command descriptions, examples, and output flag completion
    docs/docker.md Expanded Docker usage docs with POSIX examples and improved headings
    Dockerfile Switched to Alpine base image, installed certificates, created non-root user
    .github/workflows/release.yml Added container registry login and Buildx steps for multi-platform Docker images
    .github/workflows/ci.yml Configured matrix testing, coverage enforcement, linting, builds, and security scans
    CONTRIBUTING.md Clarified test requirements, added lint and vet steps
    Comments suppressed due to low confidence (3)

    pkg/kubernetes/client_test.go:102

    • In TestClient_GetPods_NilClient, the if client != nil guard prevents calling client.GetPods on a nil pointer, so the panic is never exercised. Remove the conditional so the method is invoked unconditionally and the deferred recover can verify the expected panic.
    	if client != nil {
    

    internal/scanner/cmd.go:89

    • The flag name kubeContext mixes camelCase with POSIX conventions. Consider renaming it to kube-context (and updating references) to follow standard kebab-case CLI flag naming.
    	cmd.Flags().StringP("kubeContext", "c", "", "Kubernetes context to use (defaults to current context)")
    

    docs/docker.md:15

    • [nitpick] The Docker documentation mixes Portuguese and English headings. For consistency, choose one language or clearly separate localized sections.
    ## Comandos Básicos
    

    @qodo-merge-pro
    Copy link
    Contributor

    qodo-merge-pro bot commented Jul 14, 2025

    PR Code Suggestions ✨

    Explore these optional code suggestions:

    CategorySuggestion                                                                                                                                    Impact
    Possible issue
    Fix version reference and improve portability
    Suggestion Impact:The commit directly implemented both suggested changes: changed Go version from 1.24 to 1.23 and replaced the bc command with awk for the coverage threshold check

    code diff:

    -      if: matrix.go-version == '1.24'
    +      if: matrix.go-version == '1.23'
           run: |
             COVERAGE=$(go tool cover -func=coverage.out | grep total | awk '{print $3}' | sed 's/%//')
             echo "Total coverage: $COVERAGE%"
    -        if (( $(echo "$COVERAGE < 75" | bc -l) )); then
    +        if [ $(echo "$COVERAGE < 75" | awk '{print ($1 < $2)}') -eq 1 ]; then

    The coverage check references Go 1.24 which doesn't exist yet, and the bc
    command may not be available in all environments. Use a stable Go version and
    shell arithmetic for better portability.

    .github/workflows/ci.yml [59-67]

     - name: Check coverage threshold
    -  if: matrix.go-version == '1.24'
    +  if: matrix.go-version == '1.23'
       run: |
         COVERAGE=$(go tool cover -func=coverage.out | grep total | awk '{print $3}' | sed 's/%//')
         echo "Total coverage: $COVERAGE%"
    -    if (( $(echo "$COVERAGE < 75" | bc -l) )); then
    +    if [ $(echo "$COVERAGE < 75" | awk '{print ($1 < $2)}') -eq 1 ]; then
           echo "Error: Coverage $COVERAGE% is below required threshold of 75%"
           exit 1
         fi

    [Suggestion processed]

    Suggestion importance[1-10]: 8

    __

    Why: This suggestion correctly points out two valid issues: the dependency on an unreleased Go version (1.24) and the use of bc, which is not guaranteed to be on the runner, improving CI robustness.

    Medium
    Use stable Go version

    Go version 1.24.5 doesn't exist yet as Go 1.24 is not released. This will cause
    the release workflow to fail. Use a stable Go version like 1.23.x.

    .github/workflows/release.yml [23-27]

     - name: Set up Go
       uses: actions/setup-go@v5
       with:
    -    go-version: '1.24.5'
    +    go-version: '1.23.5'
         cache: true

    [To ensure code accuracy, apply this suggestion manually]

    Suggestion importance[1-10]: 8

    __

    Why: The suggestion correctly identifies that the specified Go version 1.24.5 is not yet released, which would cause the release workflow to fail, making this a critical fix for the pipeline.

    Medium
    Use stable Go versions
    Suggestion Impact:The suggestion was directly implemented - Go version 1.24 was replaced with 1.22 and 1.23 in the CI matrix, and the coverage check condition was updated accordingly

    code diff:

    -        go-version: [1.23, 1.24]
    +        go-version: [1.22, 1.23]
         
         steps:
         - name: Check out code
    @@ -57,11 +57,11 @@
             fail_ci_if_error: false
     
         - name: Check coverage threshold
    -      if: matrix.go-version == '1.24'
    +      if: matrix.go-version == '1.23'

    Go 1.24 is not yet released (current stable is 1.23). Using unreleased versions
    in CI can cause build failures and instability. Replace with stable Go versions
    like 1.22 and 1.23.

    .github/workflows/ci.yml [16-18]

     strategy:
       matrix:
    -    go-version: [1.23, 1.24]
    +    go-version: [1.22, 1.23]

    [Suggestion processed]

    Suggestion importance[1-10]: 7

    __

    Why: The suggestion correctly identifies that using an unreleased Go version (1.24) in the CI matrix can lead to instability and is a valid best practice recommendation.

    Medium
    • Update

    Copy link
    Contributor

    @gemini-code-assist gemini-code-assist bot left a comment

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    Code Review

    This pull request introduces subcommands, POSIX compliance, and detailed error messages, improving user experience. The test coverage is thorough. I've suggested improvements mainly concerning Docker build optimization, goreleaser configuration, and code duplication.

    Comment on lines 77 to +78
    if err != nil {
    return fmt.Errorf("error listing pods: %w", err)
    return fmt.Errorf("failed to retrieve pods from namespace '%s': %w\n\nTroubleshooting tips:\n - Verify the namespace exists: kubectl get namespaces\n - Check if you have permissions: kubectl auth can-i get pods --namespace %s\n - Ensure cluster connection is working: kubectl cluster-info", ps.namespace, err, ps.namespace)
    Copy link
    Contributor

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    medium

    The error message could be improved by including the namespace in the troubleshooting tips. This helps users quickly identify the source of the problem.

    return fmt.Errorf("failed to retrieve pods from namespace '%s': %w\n\nTroubleshooting tips:\n  - Verify the namespace exists: kubectl get namespaces\n  - Check if you have permissions: kubectl auth can-i get pods --namespace %s\n  - Ensure cluster connection is working: kubectl cluster-info", ps.namespace, err, ps.namespace)

    Comment on lines 82 to 83
    fmt.Fprintf(ps.writer, "ℹ️ No pods found in namespace '%s'\n\nSuggestions:\n - Check if pods exist: kubectl get pods --namespace %s\n - Try scanning a different namespace: kubeprobes scan --namespace <namespace>\n - List all namespaces: kubectl get namespaces\n", ps.namespace, ps.namespace)
    return nil
    Copy link
    Contributor

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    medium

    The message displayed when no pods are found could be more helpful by suggesting commands to verify pod existence and explore different namespaces.

    fmt.Printf("ℹ️  No pods found in namespace '%s'\n\nSuggestions:\n  - Check if pods exist: kubectl get pods --namespace %s\n  - Try scanning a different namespace: kubeprobes scan --namespace <namespace>\n  - List all namespaces: kubectl get namespaces\n", ps.namespace, ps.namespace)

    Comment on lines +95 to 96
    fmt.Printf("⚠️ [MISSING LIVENESS PROBE] Pod %s/%s (container: %s)\n",
    pod.Namespace, pod.Name, container.Name)
    Copy link
    Contributor

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    medium

    Consider using a more concise and visually distinct format for the warning message, and include a link to the Kubernetes documentation for further information.

    fmt.Printf("⚠️  [MISSING LIVENESS PROBE] Pod %s/%s (container: %s)\n",
    						pod.Namespace, pod.Name, container.Name)

    Comment on lines +98 to +99
    fmt.Printf(" 💡 Recommendation: Add a liveness probe to detect if the container becomes unresponsive.\n")
    fmt.Printf(" Example: HTTP check on /health endpoint or exec command like 'ps aux | grep myapp'\n")
    Copy link
    Contributor

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    medium

    The recommendation message could be improved by providing specific examples of health check implementations.

    fmt.Printf("   💡 Recommendation: Add a liveness probe to detect if the container becomes unresponsive.\n")
    						fmt.Printf("      Example: HTTP check on /health endpoint or exec command like 'ps aux | grep myapp'\n")

    Co-authored-by: qodo-merge-pro[bot] <151058649+qodo-merge-pro[bot]@users.noreply.github.com>
    @nataliagranato nataliagranato self-assigned this Jul 14, 2025
    Co-authored-by: qodo-merge-pro[bot] <151058649+qodo-merge-pro[bot]@users.noreply.github.com>
    @nataliagranato nataliagranato changed the title Develop introduces subcommands, POSIX compliance, and detailed error messages, improving user experience Jul 14, 2025
    @nataliagranato nataliagranato changed the title introduces subcommands, POSIX compliance, and detailed error messages, improving user experience Introduces subcommands, POSIX compliance, and detailed error messages, improving user experience Jul 14, 2025
    Copy link

    @coderabbitai coderabbitai bot left a comment

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    Actionable comments posted: 5

    ♻️ Duplicate comments (5)
    .goreleaser.yml (2)

    64-64: Plataforma hardcoded impede builds multi-arquitetura


    70-70: Use a variável de template {{ .Date }} do GoReleaser para melhor reprodutibilidade

    Dockerfile (1)

    9-10: Otimizar cache do Docker com cópia em etapas

    internal/scanner/scanner.go (2)

    47-47: Conversão redundante de probeType para lowercase.

    O probeType é convertido para lowercase aqui e novamente em NewProbeScannerWithClient na linha 69. Esta duplicação é desnecessária.

    Remova esta linha para evitar duplicação:

    -	probeType = strings.ToLower(probeType)

    95-122: Chamadas diretas para fmt.Printf dificultam testes e reutilização.

    As chamadas diretas para fmt.Printf tornam a lógica difícil de testar e reutilizar. Considere usar o campo writer para todas as saídas.

    Substitua todas as chamadas fmt.Printf por fmt.Fprintf(ps.writer, ...):

    -					fmt.Printf("⚠️  [MISSING LIVENESS PROBE] Pod %s/%s (container: %s)\n",
    +					fmt.Fprintf(ps.writer, "⚠️  [MISSING LIVENESS PROBE] Pod %s/%s (container: %s)\n",
    						pod.Namespace, pod.Name, container.Name)
    					if ps.recommendation {
    -						fmt.Printf("   💡 Recommendation: Add a liveness probe to detect if the container becomes unresponsive.\n")
    -						fmt.Printf("      Example: HTTP check on /health endpoint or exec command like 'ps aux | grep myapp'\n")
    +						fmt.Fprintf(ps.writer, "   💡 Recommendation: Add a liveness probe to detect if the container becomes unresponsive.\n")
    +						fmt.Fprintf(ps.writer, "      Example: HTTP check on /health endpoint or exec command like 'ps aux | grep myapp'\n")
    					}

    Aplique o mesmo padrão para todas as outras ocorrências de fmt.Printf no método.

    🧹 Nitpick comments (10)
    internal/cli/version.go (1)

    54-55: Sugerir melhoria na formatação JSON.

    Considere usar json.Marshal para formatação JSON mais robusta e escapar caracteres especiais adequadamente.

    +import (
    +	"encoding/json"
    +	"fmt"
    +	"runtime"
    +
    +	"github.com/spf13/cobra"
    +)
    +
    +type versionInfo struct {
    +	Version   string `json:"version"`
    +	Commit    string `json:"commit"`
    +	Date      string `json:"date"`
    +	GoVersion string `json:"goVersion"`
    +}
    
    -			case "json":
    -				cmd.Printf(`{"version":"%s","commit":"%s","date":"%s","goVersion":"%s"}%s`,
    -					Version, Commit, Date, runtime.Version(), "\n")
    +			case "json":
    +				info := versionInfo{
    +					Version:   Version,
    +					Commit:    Commit,
    +					Date:      Date,
    +					GoVersion: runtime.Version(),
    +				}
    +				jsonBytes, err := json.Marshal(info)
    +				if err != nil {
    +					return fmt.Errorf("failed to marshal version info: %w", err)
    +				}
    +				cmd.Printf("%s\n", jsonBytes)
    docs/completion.md (1)

    1-1: Corrigir grafia de "auto-completion".

    Em português, "auto-completion" deve ser escrito como uma palavra só: "autocompletion".

    -# Auto-completion
    +# Autocompletion
    
    -O kubeprobes oferece suporte completo a auto-completion para bash, zsh, fish e PowerShell utilizando o framework Cobra.
    +O kubeprobes oferece suporte completo a autocompletion para bash, zsh, fish e PowerShell utilizando o framework Cobra.
    
    -O auto-completion permite que você use a tecla Tab para:
    +O autocompletion permite que você use a tecla Tab para:

    E assim por diante para todas as ocorrências.

    Also applies to: 3-3, 7-7, 39-39, 85-85, 114-114, 148-148, 157-157

    docs/docker.md (1)

    108-108: Adicionar especificação de linguagem ao bloco de código.

    O bloco de código deve especificar a linguagem para melhor renderização e highlighting.

    -```
    +```text
    .github/workflows/ci.yml (2)

    19-19: Corrigir problemas de formatação YAML.

    O arquivo tem espaços em branco no final de algumas linhas e falta uma nova linha no final do arquivo.

    -    strategy:
    +    strategy:
    -    runs-on: ubuntu-latest
    +    runs-on: ubuntu-latest

    E adicionar uma nova linha no final do arquivo.

    Also applies to: 72-72, 98-98, 128-128, 141-141


    96-96: Ajustar indentação da seção exclude.

    A indentação está incorreta para a seção exclude do matrix.

    -        exclude:
    +      exclude:
    internal/cli/version_test.go (1)

    113-132: Melhore o tratamento de valores inválidos.

    O teste assume que valores inválidos para --output devem ser tratados com fallback silencioso para o formato padrão. Considere se seria melhor retornar um erro explícito para orientar melhor o usuário.

    # Considere adicionar teste para erro explícito:
    {
        name:        "invalid output format should show error",
        args:        []string{"--output=invalid"},
        expectError: true,
        errorMsg:    "invalid output format",
    },
    pkg/kubernetes/client_test.go (1)

    185-223: Adicione validação de tipos de erro específicos.

    O teste TestClient_ErrorHandling verifica apenas se um erro ocorre, mas não valida o tipo ou conteúdo específico do erro. Considere adicionar validações mais específicas.

    // Error should be descriptive
    if err != nil && len(err.Error()) == 0 {
        t.Error("Error message should not be empty")
    }
    +
    +// Verificar se o erro contém informações úteis
    +if err != nil {
    +    errorMsg := err.Error()
    +    if !strings.Contains(errorMsg, "kubeconfig") && !strings.Contains(errorMsg, "config") {
    +        t.Errorf("Error message should provide context about configuration issue, got: %s", errorMsg)
    +    }
    +}
    internal/scanner/cmd_test.go (1)

    141-213: Adicione cobertura para casos de sucesso.

    Os testes de validação de flags focam principalmente em cenários de erro. Considere adicionar testes para casos de sucesso quando possível, mesmo que mockados.

    // Adicionar teste para cenários de sucesso mockados
    {
        name:        "valid probe type with mock success",
        args:        []string{"--probe-type=liveness", "--dry-run"}, // se suportado
        expectError: false,
        errorMsg:    "",
    },
    README.md (2)

    281-346: Corrija a hifenização de "auto-completion".

    Baseado nas dicas de análise estática, "auto-completion" deveria ser escrito como uma palavra única "autocompletion" em português.

    -## Auto-completion
    +## Autocompletion
    
    -O kubeprobes oferece suporte a auto-completion para bash, zsh, fish e PowerShell.
    +O kubeprobes oferece suporte a autocompletion para bash, zsh, fish e PowerShell.
    
    -consulte a [documentação de auto-completion](docs/completion.md).
    +consulte a [documentação de autocompletion](docs/completion.md).

    231-257: Remova dois pontos dos títulos de seção.

    Baseado nas dicas de análise estática do markdownlint, os títulos de seção não devem terminar com dois pontos.

    -#### Executar todos os testes:
    +#### Executar todos os testes
    
    -#### Executar testes com cobertura:
    +#### Executar testes com cobertura
    
    -#### Executar testes de um pacote específico:
    +#### Executar testes de um pacote específico
    
    -#### Executar testes em modo verboso:
    +#### Executar testes em modo verboso
    📜 Review details

    Configuration used: CodeRabbit UI
    Review profile: CHILL
    Plan: Pro

    📥 Commits

    Reviewing files that changed from the base of the PR and between 02f0451 and 0d9cd2c.

    📒 Files selected for processing (21)
    • .dockerignore (2 hunks)
    • .github/workflows/ci.yml (1 hunks)
    • .github/workflows/release.yml (2 hunks)
    • .goreleaser.yml (1 hunks)
    • CONTRIBUTING.md (1 hunks)
    • Dockerfile (1 hunks)
    • README.md (1 hunks)
    • cmd/kubeprobes/main.go (1 hunks)
    • docs/completion.md (1 hunks)
    • docs/docker.md (3 hunks)
    • internal/cli/root.go (2 hunks)
    • internal/cli/root_test.go (1 hunks)
    • internal/cli/scan.go (1 hunks)
    • internal/cli/scan_test.go (1 hunks)
    • internal/cli/version.go (1 hunks)
    • internal/cli/version_test.go (1 hunks)
    • internal/scanner/cmd.go (2 hunks)
    • internal/scanner/cmd_test.go (1 hunks)
    • internal/scanner/scanner.go (4 hunks)
    • internal/scanner/scanner_test.go (1 hunks)
    • pkg/kubernetes/client_test.go (1 hunks)
    🧰 Additional context used
    🧬 Code Graph Analysis (5)
    internal/cli/root.go (3)
    internal/scanner/cmd.go (1)
    • NewScanCommand (11-104)
    internal/cli/scan.go (1)
    • NewScanCommand (10-12)
    internal/cli/version.go (1)
    • NewVersionCommand (20-78)
    internal/cli/scan_test.go (2)
    internal/cli/scan.go (1)
    • NewScanCommand (10-12)
    internal/cli/root.go (1)
    • Execute (49-51)
    internal/scanner/scanner_test.go (1)
    internal/scanner/scanner.go (4)
    • NewProbeScanner (42-58)
    • NewProbeScannerWithClient (61-72)
    • ProbeIssuesFoundError (25-27)
    • ProbeScanner (34-39)
    pkg/kubernetes/client_test.go (1)
    pkg/kubernetes/client.go (2)
    • NewClient (18-32)
    • Client (13-15)
    internal/scanner/scanner.go (1)
    pkg/kubernetes/client.go (1)
    • NewClient (18-32)
    🪛 GitHub Actions: CI
    cmd/kubeprobes/main.go

    [error] 7-7: golangci-lint: could not import kubeprobes/internal/scanner package

    internal/scanner/scanner.go

    [error] 82-82: Build error: 'ps.writer' undefined (type *ProbeScanner has no field or method writer)

    🪛 GitHub Check: Lint
    internal/cli/scan.go

    [failure] 4-4:
    could not import kubeprobes/internal/scanner (-: # kubeprobes/internal/scanner

    internal/scanner/scanner.go

    [failure] 82-82:
    ps.writer undefined (type *ProbeScanner has no field or method writer) (typecheck)


    [failure] 82-82:
    ps.writer undefined (type *ProbeScanner has no field or method writer)) (typecheck)


    [failure] 82-82:
    ps.writer undefined (type *ProbeScanner has no field or method writer)) (typecheck)

    🪛 markdownlint-cli2 (0.17.2)
    docs/docker.md

    108-108: Fenced code blocks should have a language specified

    (MD040, fenced-code-language)

    README.md

    231-231: Trailing punctuation in heading
    Punctuation: ':'

    (MD026, no-trailing-punctuation)


    237-237: Trailing punctuation in heading
    Punctuation: ':'

    (MD026, no-trailing-punctuation)


    244-244: Trailing punctuation in heading
    Punctuation: ':'

    (MD026, no-trailing-punctuation)


    257-257: Trailing punctuation in heading
    Punctuation: ':'

    (MD026, no-trailing-punctuation)

    🪛 LanguageTool
    docs/completion.md

    [misspelling] ~1-~1: Esta é uma palavra só.
    Context: # Auto-completion O kubeprobes oferece suporte completo ...

    (AUTO)


    [misspelling] ~3-~3: Esta é uma palavra só.
    Context: ...O kubeprobes oferece suporte completo a auto-completion para bash, zsh, fish e PowerShell utili...

    (AUTO)


    [misspelling] ~7-~7: Esta é uma palavra só.
    Context: ...o framework Cobra. ## Como funciona O auto-completion permite que você use a tecla Tab para: ...

    (AUTO)


    [misspelling] ~39-~39: Esta é uma palavra só.
    Context: ...# Pré-requisitos Certifique-se de que o auto-completion esteja habilitado no zsh: ```bash echo ...

    (AUTO)


    [misspelling] ~85-~85: Esta é uma palavra só.
    Context: ...l do perfil: $PROFILE ## Recursos de Auto-completion ### Comandos - kubeprobes + Tab: mos...

    (AUTO)


    [misspelling] ~114-~114: Esta é uma palavra só.
    Context: ...artup ``` ## Solução de problemas ### Auto-completion não funciona 1. **Verifique se o kubep...

    (AUTO)


    [misspelling] ~148-~148: Esta é uma palavra só.
    Context: ...completions/kubeprobes.fish ``` ### Auto-completion parcial Se apenas alguns recursos de c...

    (AUTO)


    [misspelling] ~157-~157: Esta é uma palavra só.
    Context: ...Desabilitando descrições Por padrão, o auto-completion inclui descrições dos comandos e flags....

    (AUTO)

    CONTRIBUTING.md

    [grammar] ~57-~57: Segundo o Acordo Ortográfico de 45, os meses e as estações do ano devem ser capitalizados.
    Context: ...2. Verifique a cobertura de testes (go test -coverprofile=coverage.out ./...) 3. Atualize a documentação se n...

    (AO45_MONTHS_CASING)

    README.md

    [uncategorized] ~140-~140: Sinal de pontuação isolado.
    Context: ...dos) ### Comandos Disponíveis - scan: Escaneia workloads do Kubernetes em bus...

    (UNLIKELY_OPENING_PUNCTUATION)


    [uncategorized] ~146-~146: Sinal de pontuação isolado.
    Context: ...mando Scan - Flags - -k, --kubeconfig: Caminho para o arquivo kubeconfig (padr...

    (UNLIKELY_OPENING_PUNCTUATION)


    [uncategorized] ~170-~170: Sinal de pontuação isolado.
    Context: ...omando Version - Flags - -o, --output: Formato de saída: default, short, ou js...

    (UNLIKELY_OPENING_PUNCTUATION)


    [grammar] ~265-~265: Esta palavra é hifenizada.
    Context: ...ados em arquivos *_test.go ao lado do código fonte: - internal/cli/*_test.go - Testes p...

    (PT_COMPOUNDS_PRE_REFORM_CÓDIGO_FONTE)


    [misspelling] ~281-~281: Esta é uma palavra só.
    Context: ... para evitar necessidade de cluster ## Auto-completion O kubeprobes oferece suporte a auto-co...

    (AUTO)


    [misspelling] ~283-~283: Esta é uma palavra só.
    Context: ...pletion O kubeprobes oferece suporte a auto-completion para bash, zsh, fish e PowerShell. > P...

    (AUTO)


    [misspelling] ~285-~285: Esta é uma palavra só.
    Context: ...nfiguração, consulte a documentação de auto-completion. ### Bash Para c...

    (AUTO)


    [misspelling] ~289-~289: Esta é uma palavra só.
    Context: ...ompletion.md). ### Bash Para carregar auto-completion na sua sessão atual: ```bash source <(...

    (AUTO)


    [misspelling] ~295-~295: Esta é uma palavra só.
    Context: ...bes completion bash) Para carregar auto-completion permanentemente: bash # Linux kubep...

    (AUTO)


    [misspelling] ~307-~307: Esta é uma palavra só.
    Context: .../kubeprobes ### Zsh Para carregar auto-completion na sua sessão atual: bash source <(...

    (AUTO)


    [misspelling] ~313-~313: Esta é uma palavra só.
    Context: ...obes completion zsh) Para carregar auto-completion permanentemente: bash # Linux kubep...

    (AUTO)


    [misspelling] ~325-~325: Esta é uma palavra só.
    Context: ...kubeprobes ### Fish Para carregar auto-completion na sua sessão atual: bash kubeprobe...

    (AUTO)


    [misspelling] ~331-~331: Esta é uma palavra só.
    Context: ...letion fish | source Para carregar auto-completion permanentemente: bash kubeprobes co...

    (AUTO)


    [misspelling] ~339-~339: Esta é uma palavra só.
    Context: ...fish ### PowerShell Para carregar auto-completion na sua sessão atual: powershell kub...

    (AUTO)


    [misspelling] ~345-~345: Esta é uma palavra só.
    Context: ... | Invoke-Expression ``` Para carregar auto-completion permanentemente, adicione a saída do co...

    (AUTO)

    🪛 YAMLlint (1.37.1)
    .github/workflows/ci.yml

    [error] 19-19: trailing spaces

    (trailing-spaces)


    [error] 72-72: trailing spaces

    (trailing-spaces)


    [warning] 96-96: wrong indentation: expected 8 but found 10

    (indentation)


    [error] 98-98: trailing spaces

    (trailing-spaces)


    [error] 128-128: trailing spaces

    (trailing-spaces)


    [error] 141-141: no new line character at the end of file

    (new-line-at-end-of-file)

    🪛 GitHub Check: Build (linux, arm64)
    internal/scanner/scanner.go

    [failure] 82-82:
    ps.writer undefined (type *ProbeScanner has no field or method writer)

    🪛 GitHub Check: Build (darwin, amd64)
    internal/scanner/scanner.go

    [failure] 82-82:
    ps.writer undefined (type *ProbeScanner has no field or method writer)

    🪛 GitHub Check: Test (1.22)
    internal/scanner/scanner.go

    [failure] 82-82:
    ps.writer undefined (type *ProbeScanner has no field or method writer)

    🪛 GitHub Check: Security Scan
    internal/scanner/scanner.go

    [failure] 82-82:
    ps.writer undefined (type *ProbeScanner has no field or method writer)

    🪛 GitHub Check: Build (darwin, arm64)
    internal/scanner/scanner.go

    [failure] 82-82:
    ps.writer undefined (type *ProbeScanner has no field or method writer)

    🪛 GitHub Check: Build (windows, amd64)
    internal/scanner/scanner.go

    [failure] 82-82:
    ps.writer undefined (type *ProbeScanner has no field or method writer)

    🪛 GitHub Check: Test (1.23)
    internal/scanner/scanner.go

    [failure] 82-82:
    ps.writer undefined (type *ProbeScanner has no field or method writer)

    🪛 GitHub Check: Build (linux, amd64)
    internal/scanner/scanner.go

    [failure] 82-82:
    ps.writer undefined (type *ProbeScanner has no field or method writer)

    🪛 GitHub Actions: PR #39
    internal/scanner/scanner.go

    [error] 82-82: Build failed: 'ps.writer' undefined (type *ProbeScanner has no field or method writer)

    🔇 Additional comments (59)
    cmd/kubeprobes/main.go (2)

    16-17: Simplificação do tratamento de erro está correta.

    A remoção do log.Fatalf e uso direto do os.Exit(1) é apropriada, pois o cobra já exibe mensagens de erro adequadas. Isso alinha com as práticas recomendadas do cobra.


    6-7: Importação válida – nenhuma ação necessária

    O pacote internal/scanner existe em internal/scanner/ e o go.mod define module kubeprobes, portanto o caminho de importação "kubeprobes/internal/scanner" está correto.

    .dockerignore (2)

    11-11: Adição apropriada para exclusão de binários.

    A inclusão do diretório bin/ na lista de exclusões é uma boa prática para reduzir o contexto de build do Docker.


    34-37: Excelente organização da seção Development.

    A nova seção Development com exclusões para vendor/, *.tmp, e *.log melhora significativamente a organização e reduz arquivos desnecessários no contexto de build.

    internal/cli/scan.go (2)

    10-12: Padrão de wrapper bem implementado.

    A função NewScanCommand como wrapper para scanner.NewScanCommand() é uma boa prática para separar responsabilidades entre a CLI e a lógica de scanner.


    4-4: Importação de kubeprobes/internal/scanner está correta
    Após executar go mod tidy e verificar o módulo (module kubeprobes em go.mod) e os módulos listados em go list -m all, não há nenhum erro de importação estrutural. O caminho kubeprobes/internal/scanner é compatível com o módulo definido e resolve normalmente.

    Likely an incorrect or invalid review comment.

    .github/workflows/release.yml (3)

    7-7: Permissão necessária para operações Docker.

    A adição de id-token: write é apropriada para operações relacionadas ao Docker e publishing de imagens.


    29-37: Configuração Docker bem estruturada.

    A configuração do login no GitHub Container Registry e setup do Docker Buildx são bem implementadas e necessárias para o build de imagens Docker.


    34-34: Confirmar configuração do secret USER_TOKEN

    Uso de secrets.USER_TOKEN verificado de forma consistente nos workflows a seguir:

    • .github/workflows/release.yml (password e variável de ambiente GITHUB_TOKEN)
    • .github/workflows/trivy.yml (github-pat)
    • .github/workflows/issue.yml (GITHUB_TOKEN)

    Certifique-se de que o secret USER_TOKEN esteja criado nas configurações do repositório e possua as permissões necessárias.

    internal/cli/version.go (3)

    10-17: Variáveis globais apropriadas para build-time values.

    O uso de variáveis globais para Version, Commit, e Date é a abordagem padrão para informações definidas durante o build. Os valores padrão são apropriados para desenvolvimento.


    49-61: Implementação robusta dos formatos de saída.

    A implementação dos três formatos de saída (default, short, json) está bem estruturada e fornece flexibilidade para diferentes casos de uso.


    69-75: Excelente tratamento de erro não-fatal.

    O tratamento do erro de completion registration como warning em vez de falha fatal é uma excelente prática, permitindo que o comando funcione mesmo se a completion falhar.

    Dockerfile (3)

    2-2: Mudança de base image adequada para compatibilidade

    A mudança de cgr.dev/chainguard/go:1.24 para golang:1.24-alpine oferece melhor compatibilidade e suporte mais amplo, mantendo a segurança com a instalação explícita de certificados CA.


    16-16: Base image Alpine apropriada para runtime

    A mudança para alpine:3.22.0 como base do runtime é adequada, fornecendo um ambiente leve e seguro com os certificados CA necessários.


    22-24: Configuração de usuário não-root bem implementada

    A criação do usuário e grupo kubeprobes com UID/GID 1001 segue as melhores práticas de segurança, evitando execução como root.

    internal/scanner/cmd.go (5)

    15-23: Descrição aprimorada melhora a experiência do usuário

    A descrição expandida explica claramente o propósito da ferramenta e a importância das probes de saúde, proporcionando melhor orientação aos usuários.


    24-46: Exemplos abrangentes demonstram conformidade POSIX

    Os exemplos mostram diferentes sintaxes e casos de uso, incluindo flags agrupadas, ordem flexível e notação com equals, educando os usuários sobre as capacidades da CLI.


    50-71: Mensagens de erro mais consistentes e claras

    A mudança de "error getting" para "failed to read" torna as mensagens de erro mais consistentes e profissionais em todo o código.


    94-101: Completion de shell bem implementado

    A adição de completion personalizado para o flag probe-type com tratamento de erro não-fatal melhora a experiência do usuário sem comprometer a funcionalidade.


    88-92: Descrições de flags mais detalhadas

    As descrições expandidas dos flags incluem informações sobre padrões e comportamentos, tornando a ferramenta mais intuitiva.

    internal/cli/root.go (3)

    11-25: Descrição expandida e educativa

    A descrição detalhada explica a importância das probes de saúde no Kubernetes e enfatiza a conformidade POSIX, proporcionando excelente contexto educacional aos usuários.


    26-45: Exemplos abrangentes demonstram capacidades da CLI

    Os exemplos cobrem cenários comuns de uso, incluindo sintaxe POSIX, diferentes tipos de flags e comandos, servindo como referência rápida para os usuários.


    54-57: Estrutura de comandos bem organizada

    A integração do comando version e o uso do wrapper CLI proporcionam uma arquitetura mais limpa e modular, facilitando manutenção e testes.

    CONTRIBUTING.md (4)

    17-21: Requisitos de qualidade bem definidos

    A adição de análise estática obrigatória, linters e cobertura mínima de 75% estabelece padrões claros de qualidade para contribuições.


    22-53: Diretrizes de testes abrangentes

    As seções detalhadas sobre tipos de testes obrigatórios, execução e padrões fornecem orientação clara para contribuidores, garantindo qualidade e consistência.


    56-63: Processo de PR bem estruturado

    O processo passo-a-passo com verificações de testes, cobertura e linting assegura que todas as contribuições mantenham os padrões de qualidade estabelecidos.


    64-71: Checklist útil para completude

    O checklist do PR serve como lembrete final para garantir que todos os aspectos importantes sejam verificados antes da submissão.

    internal/cli/scan_test.go (3)

    9-57: Testes bem estruturados para diferentes cenários.

    Os testes cobrem adequadamente os cenários de ajuda e erro, com captura correta de saída e verificação de erros. A estrutura table-driven está bem implementada.


    59-76: Validação de flags está completa.

    O teste verifica a presença de todas as flags esperadas do comando scan, garantindo que a interface CLI esteja correta.


    78-93: Teste de completion básico mas adequado.

    O teste verifica a existência da flag probe-type e seu texto de uso, o que é suficiente para validar o setup básico de completion.

    docs/completion.md (1)

    12-171: Documentação abrangente e bem estruturada.

    A documentação cobre todos os shells principais, fornece exemplos práticos claros e inclui uma seção de troubleshooting útil. O conteúdo está bem organizado e será muito útil para os usuários.

    docs/docker.md (1)

    15-156: Documentação Docker significativamente melhorada.

    A expansão da documentação inclui novos comandos (version, completion), exemplos mais abrangentes de uso do scan, e uma seção de dicas avançadas. A reorganização torna o conteúdo mais fácil de navegar e usar.

    .github/workflows/ci.yml (1)

    12-141: Workflow CI abrangente e bem estruturado.

    O workflow inclui todos os aspectos importantes: testes com múltiplas versões Go, linting, builds cross-platform, e scanning de segurança. O uso de cache e artefatos está bem implementado.

    internal/scanner/scanner_test.go (6)

    13-24: Mock client bem implementado.

    O mock client é simples e eficaz para os testes, permitindo simular tanto respostas de sucesso quanto erros.


    26-88: Testes de validação abrangentes.

    Os testes cobrem todos os tipos de probe válidos, incluindo case-insensitive, e verificam adequadamente os cenários de erro com mensagens descritivas.


    90-138: Validação de mensagens de erro aprimoradas.

    Os testes verificam que as mensagens de erro contêm informações úteis para troubleshooting, incluindo tipos válidos de probe e exemplos de uso.


    140-213: Testes do constructor com client são completos.

    Os testes verificam adequadamente o comportamento do constructor, incluindo defaults de namespace, normalização de probe type e configuração de recommendations.


    224-454: Testes de scanning cobrem todos os cenários críticos.

    Os testes incluem casos de pods não encontrados, erros de API, pods com todas as probes, pods com probes faltando, e múltiplos containers. A cobertura é excelente.


    457-495: Função helper bem projetada.

    A função createTestPod é flexível e permite criar pods de teste com diferentes configurações de probes, facilitando os testes.

    internal/cli/version_test.go (3)

    10-80: Excelente cobertura de testes para diferentes formatos de saída!

    Os testes cobrem adequadamente os cenários principais do comando version, incluindo diferentes formatos de saída e validação de flags. A estrutura table-driven é apropriada e bem organizada.


    82-111: Validação robusta de estrutura JSON.

    O teste TestVersionCommandJsonOutput faz uma validação adequada do formato JSON, incluindo unmarshalling e verificação de campos obrigatórios. Boa prática para garantir a integridade da saída JSON.


    224-285: Excelente cobertura de conformidade POSIX.

    Os testes de conformidade POSIX são abrangentes e cobrem adequadamente diferentes sintaxes de flags. Esta é uma boa prática para garantir usabilidade consistente.

    pkg/kubernetes/client_test.go (2)

    11-67: Boa cobertura de cenários de configuração inválida.

    Os testes cobrem adequadamente diferentes cenários de falha na configuração do cliente Kubernetes, incluindo arquivos inexistentes e conteúdo inválido. As asserções de erro são apropriadas.


    149-169: Teste de integração apropriadamente configurado.

    O teste de integração está corretamente marcado como skip por padrão, evitando falhas em ambientes sem cluster Kubernetes. Boa prática para testes que dependem de recursos externos.

    internal/scanner/cmd_test.go (4)

    13-35: Excelente estrutura básica de teste.

    O teste TestNewScanCommand cobre adequadamente a criação e estrutura básica do comando, verificando propriedades essenciais como Use, Short, Long e RunE.


    37-70: Boa validação de flags com dados estruturados.

    O teste de flags utiliza uma estrutura de dados bem organizada para validar todas as flags esperadas. A abordagem table-driven é apropriada e facilita a manutenção.


    345-438: Excelente cobertura de conformidade POSIX.

    Os testes TestPOSIXCommandLineSyntax são extremamente abrangentes e cobrem praticamente todos os cenários de sintaxe POSIX. Esta é uma implementação exemplar de testes de conformidade.


    440-481: Boa validação de convenções de flags.

    O teste TestPOSIXFlagConventions verifica adequadamente as convenções de flags e detecta conflitos. A verificação de flags curtas duplicadas é uma boa prática.

    README.md (3)

    62-73: Excelente adição de documentação sobre conformidade POSIX.

    A seção sobre sintaxe POSIX suportada é muito útil e bem estruturada. Os exemplos claramente demonstram diferentes formas de usar os comandos.


    186-224: Seção de compatibilidade POSIX muito bem documentada.

    A seção "Compatibilidade POSIX" fornece informações valiosas sobre os benefícios e características suportadas. Os exemplos práticos ajudam os usuários a entender como usar efetivamente a ferramenta.


    225-280: Seção de desenvolvimento bem estruturada.

    A seção "Desenvolvimento" fornece instruções claras sobre como executar testes e entender a estrutura do projeto. Informações sobre cobertura de testes são especialmente úteis.

    internal/cli/root_test.go (4)

    11-109: Excelente cobertura de testes para comando root.

    Os testes cobrem adequadamente diferentes aspectos do comando root, incluindo help, descrições melhoradas e exemplos. A estrutura table-driven é bem organizada.


    111-137: Boa validação de disponibilidade de subcomandos.

    O teste TestSubcommandAvailability verifica corretamente se os subcomandos esperados estão disponíveis. O comentário sobre comandos automaticamente adicionados pelo Cobra é útil.


    216-296: Excelente cobertura de conformidade POSIX.

    Os testes de conformidade POSIX são muito abrangentes e cobrem diferentes cenários de uso de flags. A diferenciação entre flags de help e comandos de scan é bem implementada.


    298-335: Boa validação de compatibilidade de flags.

    O teste TestPOSIXFlagCompatibility verifica corretamente se as flags curtas e longas correspondem ao mesmo objeto. Esta é uma validação importante para garantir consistência.

    internal/scanner/scanner.go (4)

    19-23: Boa adição da interface para testabilidade!

    A criação da interface KubernetesClient é uma excelente prática que permite injeção de dependência e facilita os testes unitários com mocks.


    49-49: Excelente melhoria nas mensagens de erro!

    As mensagens de erro agora incluem explicações detalhadas, exemplos e dicas de troubleshooting, melhorando significativamente a experiência do usuário.

    Also applies to: 54-55


    87-91: Boa adição da contagem de containers!

    A contagem de containers escaneados fornece uma métrica útil para o usuário entender o escopo da verificação.


    128-141: Excelente adição de sumário e dicas!

    O sumário com estatísticas, dicas sobre a flag --recommendation e link para documentação melhoram significativamente a experiência do usuário e fornecem orientação clara sobre os próximos passos.

    Comment on lines +86 to +108
    func TestClient_GetPods_NilClient(t *testing.T) {
    // Test the GetPods method signature and basic structure
    // We can't test with a real client without a cluster, but we can test the structure

    // This is more of a compilation test to ensure the method exists with correct signature
    var client *Client

    // This would panic with nil client, but that's expected behavior
    // We're just testing that the method exists and has the right signature
    defer func() {
    if r := recover(); r != nil {
    // Expected panic with nil client
    t.Logf("Expected panic with nil client: %v", r)
    }
    }()

    if client != nil {
    _, err := client.GetPods(context.Background(), "default")
    if err != nil {
    t.Logf("GetPods method exists and returned error as expected: %v", err)
    }
    }
    }
    Copy link

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    🛠️ Refactor suggestion

    Melhore a estrutura do teste de método GetPods.

    O teste TestClient_GetPods_NilClient está usando defer para capturar panic, mas nunca chama o método que causaria o panic. Considere reestruturar para ser mais explícito sobre o que está sendo testado.

    func TestClient_GetPods_NilClient(t *testing.T) {
    -   // Test the GetPods method signature and basic structure
    -   // We can't test with a real client without a cluster, but we can test the structure
    -
    -   // This is more of a compilation test to ensure the method exists with correct signature
        var client *Client
        
    -   // This would panic with nil client, but that's expected behavior
    -   // We're just testing that the method exists and has the right signature
    -   defer func() {
    -       if r := recover(); r != nil {
    -           // Expected panic with nil client
    -           t.Logf("Expected panic with nil client: %v", r)
    -       }
    -   }()
    -   
    -   if client != nil {
    -       _, err := client.GetPods(context.Background(), "default")
    -       if err != nil {
    -           t.Logf("GetPods method exists and returned error as expected: %v", err)
    -       }
    -   }
    +   // Este é um teste de compilação para garantir que o método existe
    +   // com a assinatura correta
    +   if client == nil {
    +       t.Log("Teste de compilação: método GetPods existe com assinatura correta")
    +   }
    }

    Committable suggestion skipped: line range outside the PR's diff.

    🤖 Prompt for AI Agents
    In pkg/kubernetes/client_test.go around lines 86 to 108, the test
    TestClient_GetPods_NilClient uses defer to catch a panic but never actually
    calls the GetPods method that would cause the panic. To fix this, remove the nil
    check on client and explicitly call client.GetPods with a nil client inside the
    deferred recover block to confirm the panic occurs, making the test more
    explicit and meaningful.
    

    Comment on lines +139 to +146
    func TestRootCommand_Structure(t *testing.T) {
    // Test that Execute function exists and can be called
    // In a real scenario, this would execute the CLI

    // This is a compilation test to ensure the function exists
    // We don't actually call Execute() as it would try to run the CLI
    t.Log("Execute function is available for use")
    }
    Copy link

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    🛠️ Refactor suggestion

    Melhore o teste de estrutura do comando root.

    O teste TestRootCommand_Structure é muito básico e não valida efetivamente a estrutura. Considere adicionar validação mais substantiva.

    func TestRootCommand_Structure(t *testing.T) {
    -   // Test that Execute function exists and can be called
    -   // In a real scenario, this would execute the CLI
    -   
    -   // This is a compilation test to ensure the function exists
    -   // We don't actually call Execute() as it would try to run the CLI
    -   t.Log("Execute function is available for use")
    +   // Criar comando root real para testar estrutura
    +   cmd := &cobra.Command{
    +       Use:   "kubeprobes",
    +       Short: "Kubeprobes is a CLI tool for scanning Kubernetes probes",
    +   }
    +   
    +   // Verificar propriedades básicas
    +   if cmd.Use == "" {
    +       t.Error("Comando root deve ter campo Use definido")
    +   }
    +   if cmd.Short == "" {
    +       t.Error("Comando root deve ter descrição curta")
    +   }
    +   
    +   // Verificar que Execute existe (teste de compilação)
    +   if cmd.Execute == nil {
    +       t.Error("Comando root deve ter método Execute")
    +   }
    }

    Committable suggestion skipped: line range outside the PR's diff.

    🤖 Prompt for AI Agents
    In internal/cli/root_test.go around lines 139 to 146, the
    TestRootCommand_Structure test is too basic and does not effectively validate
    the root command structure. Enhance the test by actually creating an instance of
    the root command, checking its properties such as name, usage, and available
    subcommands, and verifying that the Execute function can be called without error
    in a controlled manner. This will provide a more substantive validation of the
    root command's structure.
    

    nataliagranato and others added 3 commits July 14, 2025 18:10
    Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
    Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
    Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
    @qodo-merge-pro
    Copy link
    Contributor

    CI Feedback 🧐

    A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

    Action: Lint

    Failed stage: Run golangci-lint [❌]

    Failure summary:

    The action failed due to multiple Go compilation errors:
    ps.writer field is undefined in the
    ProbeScanner struct in internal/scanner/scanner.go:82:18
    • Import errors in
    cmd/kubeprobes/main.go:7:2 and internal/cli/scan.go:4:2 caused by the scanner package compilation
    failure
    • Unused variable cmd declared in internal/cli/version_test.go:192:5

    The primary issue appears to be that the ProbeScanner type is missing a writer field or method that
    is being referenced in the code.

    Relevant error logs:
    1:  ##[group]Runner Image Provisioner
    2:  Hosted Compute Agent
    ...
    
    599:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/reflect/internal/example1/example.go: Cannot open: File exists
    600:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/reflect/asm_amd64.s: Cannot open: File exists
    601:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/dir_darwin.go: Cannot open: File exists
    602:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/types_plan9.go: Cannot open: File exists
    603:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/exec.go: Cannot open: File exists
    604:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/pipe2_unix.go: Cannot open: File exists
    605:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/sys.go: Cannot open: File exists
    606:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/fifo_test.go: Cannot open: File exists
    607:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/file_unix.go: Cannot open: File exists
    608:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/sys_linux.go: Cannot open: File exists
    609:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/executable_plan9.go: Cannot open: File exists
    610:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/getwd.go: Cannot open: File exists
    611:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/tempfile.go: Cannot open: File exists
    612:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/readfrom_linux_test.go: Cannot open: File exists
    613:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/rawconn.go: Cannot open: File exists
    614:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/error_test.go: Cannot open: File exists
    615:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/dirent_netbsd.go: Cannot open: File exists
    616:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/dirent_solaris.go: Cannot open: File exists
    617:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/export_test.go: Cannot open: File exists
    618:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/stat_darwin.go: Cannot open: File exists
    619:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/dirent_freebsd.go: Cannot open: File exists
    620:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/stat_linux.go: Cannot open: File exists
    621:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/executable_freebsd.go: Cannot open: File exists
    622:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/copy_test.go: Cannot open: File exists
    623:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/pipe_wasm.go: Cannot open: File exists
    624:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/executable_procfs.go: Cannot open: File exists
    625:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/sticky_notbsd.go: Cannot open: File exists
    626:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/root_nonwindows.go: Cannot open: File exists
    627:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/removeall_noat.go: Cannot open: File exists
    628:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/root_js.go: Cannot open: File exists
    629:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/stat_netbsd.go: Cannot open: File exists
    630:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/stat_wasip1.go: Cannot open: File exists
    631:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/error_errno.go: Cannot open: File exists
    632:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/file_mutex_plan9.go: Cannot open: File exists
    ...
    
    653:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/lookup_unix_test.go: Cannot open: File exists
    654:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/cgo_user_test.go: Cannot open: File exists
    655:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/lookup_stubs.go: Cannot open: File exists
    656:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/lookup.go: Cannot open: File exists
    657:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/listgroups_unix_test.go: Cannot open: File exists
    658:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/cgo_lookup_unix.go: Cannot open: File exists
    659:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/user_windows_test.go: Cannot open: File exists
    660:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/cgo_lookup_cgo.go: Cannot open: File exists
    661:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/cgo_unix_test.go: Cannot open: File exists
    662:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/cgo_listgroups_unix.go: Cannot open: File exists
    663:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/getgrouplist_unix.go: Cannot open: File exists
    664:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/user.go: Cannot open: File exists
    665:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/cgo_lookup_syscall.go: Cannot open: File exists
    666:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/lookup_windows.go: Cannot open: File exists
    667:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/lookup_plan9.go: Cannot open: File exists
    668:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/error_plan9.go: Cannot open: File exists
    669:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/wait6_freebsd64.go: Cannot open: File exists
    ...
    
    687:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/zero_copy_linux.go: Cannot open: File exists
    688:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/wait_wait6.go: Cannot open: File exists
    689:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/env_test.go: Cannot open: File exists
    690:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/dirent_openbsd.go: Cannot open: File exists
    691:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/executable_sysctl.go: Cannot open: File exists
    692:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/stat_freebsd.go: Cannot open: File exists
    693:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/root_windows_test.go: Cannot open: File exists
    694:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/os_unix_test.go: Cannot open: File exists
    695:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/executable_netbsd.go: Cannot open: File exists
    696:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/file_posix.go: Cannot open: File exists
    697:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/pidfd_other.go: Cannot open: File exists
    698:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/rawconn_test.go: Cannot open: File exists
    699:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/dirent_dragonfly.go: Cannot open: File exists
    700:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/root_windows.go: Cannot open: File exists
    701:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/file_wasip1.go: Cannot open: File exists
    702:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/error_unix_test.go: Cannot open: File exists
    703:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/root_plan9.go: Cannot open: File exists
    704:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/exec_unix_test.go: Cannot open: File exists
    705:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/wait6_freebsd_386.go: Cannot open: File exists
    706:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/export_freebsd_test.go: Cannot open: File exists
    707:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/zero_copy_posix.go: Cannot open: File exists
    708:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/stat_test.go: Cannot open: File exists
    709:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/exec_nohandle.go: Cannot open: File exists
    710:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/sys_bsd.go: Cannot open: File exists
    711:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/dir_windows.go: Cannot open: File exists
    712:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/read_test.go: Cannot open: File exists
    713:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/sys_aix.go: Cannot open: File exists
    714:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/exec_linux.go: Cannot open: File exists
    715:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/root_noopenat.go: Cannot open: File exists
    716:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/error_windows_test.go: Cannot open: File exists
    717:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/path_windows.go: Cannot open: File exists
    718:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/wait_waitid.go: Cannot open: File exists
    719:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/path_test.go: Cannot open: File exists
    720:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/wait6_dragonfly.go: Cannot open: File exists
    721:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/error.go: Cannot open: File exists
    722:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/sticky_bsd.go: Cannot open: File exists
    ...
    
    1462:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/mgcsweep.go: Cannot open: File exists
    1463:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/rt0_freebsd_386.s: Cannot open: File exists
    1464:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/mranges_test.go: Cannot open: File exists
    1465:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/defs_linux_mips64x.go: Cannot open: File exists
    1466:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/rdebug.go: Cannot open: File exists
    1467:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/rt0_linux_mips64x.s: Cannot open: File exists
    1468:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/tracecpu.go: Cannot open: File exists
    1469:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/rt0_linux_ppc64.s: Cannot open: File exists
    1470:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/libfuzzer.go: Cannot open: File exists
    1471:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/sys_ppc64x.go: Cannot open: File exists
    1472:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/signal_dragonfly_amd64.go: Cannot open: File exists
    1473:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/stubs_arm.go: Cannot open: File exists
    1474:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/tls_arm64.s: Cannot open: File exists
    1475:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/rt0_illumos_amd64.s: Cannot open: File exists
    1476:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/defs_linux_loong64.go: Cannot open: File exists
    1477:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/error.go: Cannot open: File exists
    1478:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/nonwindows_stub.go: Cannot open: File exists
    ...
    
    1972:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/encoder_test.go: Cannot open: File exists
    1973:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/decoder.go: Cannot open: File exists
    1974:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/gobencdec_test.go: Cannot open: File exists
    1975:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/decode.go: Cannot open: File exists
    1976:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/type_test.go: Cannot open: File exists
    1977:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/example_test.go: Cannot open: File exists
    1978:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/example_encdec_test.go: Cannot open: File exists
    1979:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/enc_helpers.go: Cannot open: File exists
    1980:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/example_interface_test.go: Cannot open: File exists
    1981:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/encode.go: Cannot open: File exists
    1982:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/dec_helpers.go: Cannot open: File exists
    1983:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/decgen.go: Cannot open: File exists
    1984:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/encoder.go: Cannot open: File exists
    1985:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/type.go: Cannot open: File exists
    1986:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/encgen.go: Cannot open: File exists
    1987:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/error.go: Cannot open: File exists
    1988:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/doc.go: Cannot open: File exists
    ...
    
    2103:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sockaddr_posix.go: Cannot open: File exists
    2104:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/platform_test.go: Cannot open: File exists
    2105:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpconn_keepalive_conf_posix_test.go: Cannot open: File exists
    2106:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/net.go: Cannot open: File exists
    2107:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/writev_unix.go: Cannot open: File exists
    2108:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpsock_unix.go: Cannot open: File exists
    2109:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/file_unix.go: Cannot open: File exists
    2110:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/write_unix_test.go: Cannot open: File exists
    2111:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/interface_bsd_test.go: Cannot open: File exists
    2112:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpsockopt_darwin.go: Cannot open: File exists
    2113:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sockopt_fake.go: Cannot open: File exists
    2114:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/main_plan9_test.go: Cannot open: File exists
    2115:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_unix_syscall.go: Cannot open: File exists
    2116:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/unixsock.go: Cannot open: File exists
    2117:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/rawconn.go: Cannot open: File exists
    2118:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/error_test.go: Cannot open: File exists
    2119:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/mail/example_test.go: Cannot open: File exists
    ...
    
    2130:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/dnsconfig.go: Cannot open: File exists
    2131:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/udpsock_plan9.go: Cannot open: File exists
    2132:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/fd_posix.go: Cannot open: File exists
    2133:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_bsd.go: Cannot open: File exists
    2134:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/iprawsock.go: Cannot open: File exists
    2135:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/udpsock.go: Cannot open: File exists
    2136:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/external_test.go: Cannot open: File exists
    2137:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpconn_keepalive_test.go: Cannot open: File exists
    2138:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpsockopt_unix.go: Cannot open: File exists
    2139:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/dnsclient_unix.go: Cannot open: File exists
    2140:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/net_fake_test.go: Cannot open: File exists
    2141:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/main_conf_test.go: Cannot open: File exists
    2142:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/interface_plan9.go: Cannot open: File exists
    2143:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/resolverdialfunc_test.go: Cannot open: File exists
    2144:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/interface_unix_test.go: Cannot open: File exists
    2145:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/error_posix.go: Cannot open: File exists
    2146:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/hook_unix.go: Cannot open: File exists
    ...
    
    2217:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/proxy_test.go: Cannot open: File exists
    2218:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/responsecontroller.go: Cannot open: File exists
    2219:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/example_filesystem_test.go: Cannot open: File exists
    2220:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/cookie.go: Cannot open: File exists
    2221:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/fs_test.go: Cannot open: File exists
    2222:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/server.go: Cannot open: File exists
    2223:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/pattern_test.go: Cannot open: File exists
    2224:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/readrequest_test.go: Cannot open: File exists
    2225:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/mapping.go: Cannot open: File exists
    2226:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/async_test.go: Cannot open: File exists
    2227:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/filetransport_test.go: Cannot open: File exists
    2228:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/servemux121.go: Cannot open: File exists
    2229:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/filetransport.go: Cannot open: File exists
    2230:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/transfer_test.go: Cannot open: File exists
    2231:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/transport_test.go: Cannot open: File exists
    2232:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/h2_error.go: Cannot open: File exists
    2233:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/routing_index_test.go: Cannot open: File exists
    ...
    
    2235:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/httptrace/example_test.go: Cannot open: File exists
    2236:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/httptrace/trace_test.go: Cannot open: File exists
    2237:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/httptrace/trace.go: Cannot open: File exists
    2238:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/routing_tree_test.go: Cannot open: File exists
    2239:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/example_handle_test.go: Cannot open: File exists
    2240:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/response_test.go: Cannot open: File exists
    2241:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/doc.go: Cannot open: File exists
    2242:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/status.go: Cannot open: File exists
    2243:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/clone.go: Cannot open: File exists
    2244:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/requestwrite_test.go: Cannot open: File exists
    2245:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/header_test.go: Cannot open: File exists
    2246:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/jar.go: Cannot open: File exists
    2247:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/server_test.go: Cannot open: File exists
    2248:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/routing_tree.go: Cannot open: File exists
    2249:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/main_test.go: Cannot open: File exists
    2250:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/h2_error_test.go: Cannot open: File exists
    2251:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/transfer.go: Cannot open: File exists
    ...
    
    2273:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/client.go: Cannot open: File exists
    2274:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/serve_test.go: Cannot open: File exists
    2275:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/fs.go: Cannot open: File exists
    2276:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/method.go: Cannot open: File exists
    2277:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/sniff.go: Cannot open: File exists
    2278:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sendfile_unix_alt.go: Cannot open: File exists
    2279:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpconn_keepalive_conf_windows_test.go: Cannot open: File exists
    2280:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_stub.go: Cannot open: File exists
    2281:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/fd_wasip1.go: Cannot open: File exists
    2282:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/fd_plan9.go: Cannot open: File exists
    2283:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sys_cloexec.go: Cannot open: File exists
    2284:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/timeout_test.go: Cannot open: File exists
    2285:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/file_wasip1_test.go: Cannot open: File exists
    2286:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sockopt_bsd.go: Cannot open: File exists
    2287:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/example_test.go: Cannot open: File exists
    2288:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/error_posix_test.go: Cannot open: File exists
    2289:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_netbsd.go: Cannot open: File exists
    2290:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpsockopt_stub.go: Cannot open: File exists
    2291:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sock_linux.go: Cannot open: File exists
    2292:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/pipe.go: Cannot open: File exists
    2293:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/mptcpsock_stub.go: Cannot open: File exists
    2294:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/interface_bsdvar.go: Cannot open: File exists
    2295:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/error_plan9.go: Cannot open: File exists
    2296:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/url/url.go: Cannot open: File exists
    ...
    
    2323:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/ipsock_plan9_test.go: Cannot open: File exists
    2324:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/main_unix_test.go: Cannot open: File exists
    2325:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_solaris.go: Cannot open: File exists
    2326:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/port_unix.go: Cannot open: File exists
    2327:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sendfile_windows.go: Cannot open: File exists
    2328:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_openbsd.go: Cannot open: File exists
    2329:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_unix_cgo_res.go: Cannot open: File exists
    2330:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpsockopt_windows.go: Cannot open: File exists
    2331:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/interface_bsd.go: Cannot open: File exists
    2332:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/ipsock_test.go: Cannot open: File exists
    2333:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/interface_linux.go: Cannot open: File exists
    2334:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/smtp/example_test.go: Cannot open: File exists
    2335:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/smtp/auth.go: Cannot open: File exists
    2336:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/smtp/smtp.go: Cannot open: File exists
    2337:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/smtp/smtp_test.go: Cannot open: File exists
    2338:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/error_windows.go: Cannot open: File exists
    2339:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/addrselect.go: Cannot open: File exists
    ...
    
    2342:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/netip/slow_test.go: Cannot open: File exists
    2343:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/netip/inlining_test.go: Cannot open: File exists
    2344:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/netip/netip_test.go: Cannot open: File exists
    2345:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/netip/uint128_test.go: Cannot open: File exists
    2346:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/netip/uint128.go: Cannot open: File exists
    2347:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/netip/netip_pkg_test.go: Cannot open: File exists
    2348:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/netip/fuzz_test.go: Cannot open: File exists
    2349:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/rawconn_stub_test.go: Cannot open: File exists
    2350:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/rawconn_test.go: Cannot open: File exists
    2351:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/unixsock_readmsg_cloexec.go: Cannot open: File exists
    2352:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sockoptip_posix.go: Cannot open: File exists
    2353:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sock_linux_test.go: Cannot open: File exists
    2354:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/hook.go: Cannot open: File exists
    2355:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/mptcpsock_linux_test.go: Cannot open: File exists
    2356:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/file_wasip1.go: Cannot open: File exists
    2357:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/error_unix_test.go: Cannot open: File exists
    2358:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/dnsclient_unix_test.go: Cannot open: File exists
    ...
    
    2370:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_resold.go: Cannot open: File exists
    2371:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpsockopt_solaris.go: Cannot open: File exists
    2372:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/mockserver_test.go: Cannot open: File exists
    2373:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/mac.go: Cannot open: File exists
    2374:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_darwin.go: Cannot open: File exists
    2375:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/dial_test.go: Cannot open: File exists
    2376:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/unixsock_windows_test.go: Cannot open: File exists
    2377:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/rlimit_unix.go: Cannot open: File exists
    2378:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/main_wasm_test.go: Cannot open: File exists
    2379:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/netgo_off.go: Cannot open: File exists
    2380:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpsock_solaris.go: Cannot open: File exists
    2381:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sockopt_posix.go: Cannot open: File exists
    2382:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/rawconn_windows_test.go: Cannot open: File exists
    2383:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/hook_plan9.go: Cannot open: File exists
    2384:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sock_plan9.go: Cannot open: File exists
    2385:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/error_windows_test.go: Cannot open: File exists
    2386:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpsockopt_openbsd.go: Cannot open: File exists
    2387:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/interface_solaris.go: Cannot open: File exists
    2388:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/netgo_netcgo.go: Cannot open: File exists
    2389:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpconn_keepalive_solaris_test.go: Cannot open: File exists
    2390:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/netcgo_off.go: Cannot open: File exists
    2391:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/unixsock_readmsg_cmsg_cloexec.go: Cannot open: File exists
    2392:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/interface_windows.go: Cannot open: File exists
    2393:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/unixsock_posix.go: Cannot open: File exists
    2394:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/error_unix.go: Cannot open: File exists
    2395:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sock_windows.go: Cannot open: File exists
    2396:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/ip.go: Cannot open: File exists
    2397:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_linux.go: Cannot open: File exists
    2398:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/udpsock_posix.go: Cannot open: File exists
    2399:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_socknew.go: Cannot open: File exists
    2400:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/main_windows_test.go: Cannot open: File exists
    2401:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_unix_test.go: Cannot open: File exists
    2402:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/dnsclient_test.go: Cannot open: File exists
    2403:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/rawconn_unix_test.go: Cannot open: File exists
    2404:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/dnsconfig_unix_test.go: Cannot open: File exists
    2405:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpsock_windows.go: Cannot open: File exists
    2406:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/error_plan9_test.go: Cannot open: File exists
    2407:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_android.go: Cannot open: File exists
    ...
    
    2630:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/url.go: Cannot open: File exists
    2631:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/js_test.go: Cannot open: File exists
    2632:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/example_test.go: Cannot open: File exists
    2633:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/template_test.go: Cannot open: File exists
    2634:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/template.go: Cannot open: File exists
    2635:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/attr.go: Cannot open: File exists
    2636:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/url_test.go: Cannot open: File exists
    2637:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/context.go: Cannot open: File exists
    2638:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/attr_string.go: Cannot open: File exists
    2639:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/urlpart_string.go: Cannot open: File exists
    2640:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/html.go: Cannot open: File exists
    2641:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/css_test.go: Cannot open: File exists
    2642:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/clone_test.go: Cannot open: File exists
    2643:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/multi_test.go: Cannot open: File exists
    2644:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/html_test.go: Cannot open: File exists
    2645:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/error.go: Cannot open: File exists
    2646:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/delim_string.go: Cannot open: File exists
    ...
    
    2675:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/syscall_windows.go: Cannot open: File exists
    2676:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/types_windows_arm.go: Cannot open: File exists
    2677:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go: Cannot open: File exists
    2678:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/memory_windows.go: Cannot open: File exists
    2679:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/race.go: Cannot open: File exists
    2680:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/setupapi_windows.go: Cannot open: File exists
    2681:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/types_windows_arm64.go: Cannot open: File exists
    2682:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/security_windows.go: Cannot open: File exists
    2683:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/syscall.go: Cannot open: File exists
    2684:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/race0.go: Cannot open: File exists
    2685:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/dll_windows.go: Cannot open: File exists
    2686:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/mkknownfolderids.bash: Cannot open: File exists
    2687:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/env_windows.go: Cannot open: File exists
    2688:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/eventlog.go: Cannot open: File exists
    2689:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/aliases.go: Cannot open: File exists
    2690:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/zerrors_windows.go: Cannot open: File exists
    2691:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/mkerrors.bash: Cannot open: File exists
    2692:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/service.go: Cannot open: File exists
    2693:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/mksyscall.go: Cannot open: File exists
    2694:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/zsyscall_windows.go: Cannot open: File exists
    2695:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/str.go: Cannot open: File exists
    2696:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/exec_windows.go: Cannot open: File exists
    2697:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/types_windows_amd64.go: Cannot open: File exists
    2698:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/types_windows.go: Cannot open: File exists
    2699:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/unveil_openbsd.go: Cannot open: File exists
    2700:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go: Cannot open: File exists
    2701:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/asm_linux_arm64.s: Cannot open: File exists
    2702:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go: Cannot open: File exists
    2703:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_darwin.go: Cannot open: File exists
    2704:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go: Cannot open: File exists
    2705:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_bsd.go: Cannot open: File exists
    2706:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go: Cannot open: File exists
    2707:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go: Cannot open: File exists
    2708:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go: Cannot open: File exists
    2709:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go: Cannot open: File exists
    2710:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go: Cannot open: File exists
    2711:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go: Cannot open: File exists
    2712:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/asm_linux_loong64.s: Cannot open: File exists
    2713:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go: Cannot open: File exists
    2714:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go: Cannot open: File exists
    2715:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/dev_darwin.go: Cannot open: File exists
    2716:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/dev_dragonfly.go: Cannot open: File exists
    2717:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/dev_linux.go: Cannot open: File exists
    2718:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go: Cannot open: File exists
    2719:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go: Cannot open: File exists
    2720:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go: Cannot open: File exists
    2721:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/bluetooth_linux.go: Cannot open: File exists
    2722:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/asm_linux_s390x.s: Cannot open: File exists
    2723:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go: Cannot open: File exists
    2724:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go: Cannot open: File exists
    2725:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/mkall.sh: Cannot open: File exists
    2726:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go: Cannot open: File exists
    2727:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go: Cannot open: File exists
    2728:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go: Cannot open: File exists
    2729:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go: Cannot open: File exists
    2730:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/vgetrandom_linux.go: Cannot open: File exists
    2731:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/timestruct.go: Cannot open: File exists
    2732:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go: Cannot open: File exists
    2733:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go: Cannot open: File exists
    2734:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go: Cannot open: File exists
    2735:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go: Cannot open: File exists
    2736:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s: Cannot open: File exists
    2737:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s: Cannot open: File exists
    2738:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go: Cannot open: File exists
    2739:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go: Cannot open: File exists
    2740:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go: Cannot open: File exists
    2741:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go: Cannot open: File exists
    2742:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go: Cannot open: File exists
    2743:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/constants.go: Cannot open: File exists
    2744:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/asm_zos_s390x.s: Cannot open: File exists
    2745:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go: Cannot open: File exists
    2746:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go: Cannot open: File exists
    2747:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go: Cannot open: File exists
    2748:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go: Cannot open: File exists
    2749:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_386.go: Cannot open: File exists
    2750:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go: Cannot open: File exists
    2751:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go: Cannot open: File exists
    2752:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go: Cannot open: File exists
    2753:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go: Cannot open: File exists
    2754:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go: Cannot open: File exists
    2755:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go: Cannot open: File exists
    2756:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go: Cannot open: File exists
    2757:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_hurd_386.go: Cannot open: File exists
    2758:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go: Cannot open: File exists
    2759:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go: Cannot open: File exists
    2760:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go: Cannot open: File exists
    2761:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go: Cannot open: File exists
    2762:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go: Cannot open: File exists
    2763:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go: Cannot open: File exists
    2764:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go: Cannot open: File exists
    2765:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go: Cannot open: File exists
    2766:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go: Cannot open: File exists
    2767:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go: Cannot open: File exists
    2768:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go: Cannot open: File exists
    2769:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go: Cannot open: File exists
    2770:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go: Cannot open: File exists
    2771:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go: Cannot open: File exists
    2772:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go: Cannot open: File exists
    2773:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/endian_big.go: Cannot open: File exists
    2774:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go: Cannot open: File exists
    2775:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go: Cannot open: File exists
    2776:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go: Cannot open: File exists
    2777:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go: Cannot open: File exists
    ...
    
    2780:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s: Cannot open: File exists
    2781:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go: Cannot open: File exists
    2782:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go: Cannot open: File exists
    2783:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/fdset.go: Cannot open: File exists
    2784:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go: Cannot open: File exists
    2785:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/pagesize_unix.go: Cannot open: File exists
    2786:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go: Cannot open: File exists
    2787:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/xattr_bsd.go: Cannot open: File exists
    2788:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go: Cannot open: File exists
    2789:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_illumos.go: Cannot open: File exists
    2790:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/README.md: Cannot open: File exists
    2791:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go: Cannot open: File exists
    2792:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/readdirent_getdents.go: Cannot open: File exists
    2793:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go: Cannot open: File exists
    2794:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go: Cannot open: File exists
    2795:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go: Cannot open: File exists
    2796:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go: Cannot open: File exists
    2797:  /usr/bin/tar: ../../../g...

    @qodo-merge-pro
    Copy link
    Contributor

    CI Feedback 🧐

    A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

    Action: Security Scan

    Failed stage: Run govulncheck [❌]

    Failure summary:

    The action failed because the Go code has syntax errors in the file
    /home/runner/work/kubeprobes/kubeprobes/internal/scanner/scanner.go:
    • Line 84: expected statement,
    found 'package' - indicates a malformed package declaration
    • Line 103: expected '(', found
    NewProbeScannerWithClient - function declaration syntax error
    • Line 103: missing parameter name -
    function parameter syntax issue
    • Line 104: expected ')', found KubernetesClient - function
    parameter syntax error
    • Multiple undefined variables: io, kubeClient, os - missing import
    statements or variable declarations

    The govulncheck tool failed to load packages due to these compilation errors, preventing the
    vulnerability scan from running.

    Relevant error logs:
    1:  ##[group]Runner Image Provisioner
    2:  Hosted Compute Agent
    ...
    
    605:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/reflect/internal/example1/example.go: Cannot open: File exists
    606:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/reflect/asm_amd64.s: Cannot open: File exists
    607:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/dir_darwin.go: Cannot open: File exists
    608:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/types_plan9.go: Cannot open: File exists
    609:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/exec.go: Cannot open: File exists
    610:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/pipe2_unix.go: Cannot open: File exists
    611:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/sys.go: Cannot open: File exists
    612:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/fifo_test.go: Cannot open: File exists
    613:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/file_unix.go: Cannot open: File exists
    614:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/sys_linux.go: Cannot open: File exists
    615:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/executable_plan9.go: Cannot open: File exists
    616:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/getwd.go: Cannot open: File exists
    617:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/tempfile.go: Cannot open: File exists
    618:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/readfrom_linux_test.go: Cannot open: File exists
    619:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/rawconn.go: Cannot open: File exists
    620:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/error_test.go: Cannot open: File exists
    621:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/dirent_netbsd.go: Cannot open: File exists
    622:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/dirent_solaris.go: Cannot open: File exists
    623:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/export_test.go: Cannot open: File exists
    624:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/stat_darwin.go: Cannot open: File exists
    625:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/dirent_freebsd.go: Cannot open: File exists
    626:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/stat_linux.go: Cannot open: File exists
    627:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/executable_freebsd.go: Cannot open: File exists
    628:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/copy_test.go: Cannot open: File exists
    629:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/pipe_wasm.go: Cannot open: File exists
    630:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/executable_procfs.go: Cannot open: File exists
    631:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/sticky_notbsd.go: Cannot open: File exists
    632:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/root_nonwindows.go: Cannot open: File exists
    633:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/removeall_noat.go: Cannot open: File exists
    634:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/root_js.go: Cannot open: File exists
    635:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/stat_netbsd.go: Cannot open: File exists
    636:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/stat_wasip1.go: Cannot open: File exists
    637:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/error_errno.go: Cannot open: File exists
    638:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/file_mutex_plan9.go: Cannot open: File exists
    ...
    
    659:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/lookup_unix_test.go: Cannot open: File exists
    660:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/cgo_user_test.go: Cannot open: File exists
    661:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/lookup_stubs.go: Cannot open: File exists
    662:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/lookup.go: Cannot open: File exists
    663:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/listgroups_unix_test.go: Cannot open: File exists
    664:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/cgo_lookup_unix.go: Cannot open: File exists
    665:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/user_windows_test.go: Cannot open: File exists
    666:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/cgo_lookup_cgo.go: Cannot open: File exists
    667:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/cgo_unix_test.go: Cannot open: File exists
    668:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/cgo_listgroups_unix.go: Cannot open: File exists
    669:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/getgrouplist_unix.go: Cannot open: File exists
    670:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/user.go: Cannot open: File exists
    671:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/cgo_lookup_syscall.go: Cannot open: File exists
    672:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/lookup_windows.go: Cannot open: File exists
    673:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/user/lookup_plan9.go: Cannot open: File exists
    674:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/error_plan9.go: Cannot open: File exists
    675:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/wait6_freebsd64.go: Cannot open: File exists
    ...
    
    693:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/zero_copy_linux.go: Cannot open: File exists
    694:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/wait_wait6.go: Cannot open: File exists
    695:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/env_test.go: Cannot open: File exists
    696:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/dirent_openbsd.go: Cannot open: File exists
    697:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/executable_sysctl.go: Cannot open: File exists
    698:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/stat_freebsd.go: Cannot open: File exists
    699:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/root_windows_test.go: Cannot open: File exists
    700:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/os_unix_test.go: Cannot open: File exists
    701:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/executable_netbsd.go: Cannot open: File exists
    702:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/file_posix.go: Cannot open: File exists
    703:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/pidfd_other.go: Cannot open: File exists
    704:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/rawconn_test.go: Cannot open: File exists
    705:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/dirent_dragonfly.go: Cannot open: File exists
    706:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/root_windows.go: Cannot open: File exists
    707:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/file_wasip1.go: Cannot open: File exists
    708:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/error_unix_test.go: Cannot open: File exists
    709:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/root_plan9.go: Cannot open: File exists
    710:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/exec_unix_test.go: Cannot open: File exists
    711:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/wait6_freebsd_386.go: Cannot open: File exists
    712:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/export_freebsd_test.go: Cannot open: File exists
    713:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/zero_copy_posix.go: Cannot open: File exists
    714:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/stat_test.go: Cannot open: File exists
    715:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/exec_nohandle.go: Cannot open: File exists
    716:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/sys_bsd.go: Cannot open: File exists
    717:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/dir_windows.go: Cannot open: File exists
    718:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/read_test.go: Cannot open: File exists
    719:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/sys_aix.go: Cannot open: File exists
    720:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/exec_linux.go: Cannot open: File exists
    721:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/root_noopenat.go: Cannot open: File exists
    722:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/error_windows_test.go: Cannot open: File exists
    723:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/path_windows.go: Cannot open: File exists
    724:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/wait_waitid.go: Cannot open: File exists
    725:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/path_test.go: Cannot open: File exists
    726:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/wait6_dragonfly.go: Cannot open: File exists
    727:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/error.go: Cannot open: File exists
    728:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/os/sticky_bsd.go: Cannot open: File exists
    ...
    
    1468:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/mgcsweep.go: Cannot open: File exists
    1469:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/rt0_freebsd_386.s: Cannot open: File exists
    1470:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/mranges_test.go: Cannot open: File exists
    1471:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/defs_linux_mips64x.go: Cannot open: File exists
    1472:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/rdebug.go: Cannot open: File exists
    1473:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/rt0_linux_mips64x.s: Cannot open: File exists
    1474:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/tracecpu.go: Cannot open: File exists
    1475:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/rt0_linux_ppc64.s: Cannot open: File exists
    1476:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/libfuzzer.go: Cannot open: File exists
    1477:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/sys_ppc64x.go: Cannot open: File exists
    1478:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/signal_dragonfly_amd64.go: Cannot open: File exists
    1479:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/stubs_arm.go: Cannot open: File exists
    1480:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/tls_arm64.s: Cannot open: File exists
    1481:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/rt0_illumos_amd64.s: Cannot open: File exists
    1482:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/defs_linux_loong64.go: Cannot open: File exists
    1483:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/error.go: Cannot open: File exists
    1484:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/runtime/nonwindows_stub.go: Cannot open: File exists
    ...
    
    1978:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/encoder_test.go: Cannot open: File exists
    1979:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/decoder.go: Cannot open: File exists
    1980:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/gobencdec_test.go: Cannot open: File exists
    1981:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/decode.go: Cannot open: File exists
    1982:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/type_test.go: Cannot open: File exists
    1983:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/example_test.go: Cannot open: File exists
    1984:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/example_encdec_test.go: Cannot open: File exists
    1985:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/enc_helpers.go: Cannot open: File exists
    1986:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/example_interface_test.go: Cannot open: File exists
    1987:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/encode.go: Cannot open: File exists
    1988:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/dec_helpers.go: Cannot open: File exists
    1989:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/decgen.go: Cannot open: File exists
    1990:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/encoder.go: Cannot open: File exists
    1991:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/type.go: Cannot open: File exists
    1992:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/encgen.go: Cannot open: File exists
    1993:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/error.go: Cannot open: File exists
    1994:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/encoding/gob/doc.go: Cannot open: File exists
    ...
    
    2109:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sockaddr_posix.go: Cannot open: File exists
    2110:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/platform_test.go: Cannot open: File exists
    2111:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpconn_keepalive_conf_posix_test.go: Cannot open: File exists
    2112:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/net.go: Cannot open: File exists
    2113:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/writev_unix.go: Cannot open: File exists
    2114:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpsock_unix.go: Cannot open: File exists
    2115:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/file_unix.go: Cannot open: File exists
    2116:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/write_unix_test.go: Cannot open: File exists
    2117:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/interface_bsd_test.go: Cannot open: File exists
    2118:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpsockopt_darwin.go: Cannot open: File exists
    2119:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sockopt_fake.go: Cannot open: File exists
    2120:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/main_plan9_test.go: Cannot open: File exists
    2121:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_unix_syscall.go: Cannot open: File exists
    2122:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/unixsock.go: Cannot open: File exists
    2123:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/rawconn.go: Cannot open: File exists
    2124:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/error_test.go: Cannot open: File exists
    2125:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/mail/example_test.go: Cannot open: File exists
    ...
    
    2136:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/dnsconfig.go: Cannot open: File exists
    2137:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/udpsock_plan9.go: Cannot open: File exists
    2138:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/fd_posix.go: Cannot open: File exists
    2139:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_bsd.go: Cannot open: File exists
    2140:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/iprawsock.go: Cannot open: File exists
    2141:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/udpsock.go: Cannot open: File exists
    2142:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/external_test.go: Cannot open: File exists
    2143:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpconn_keepalive_test.go: Cannot open: File exists
    2144:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpsockopt_unix.go: Cannot open: File exists
    2145:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/dnsclient_unix.go: Cannot open: File exists
    2146:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/net_fake_test.go: Cannot open: File exists
    2147:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/main_conf_test.go: Cannot open: File exists
    2148:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/interface_plan9.go: Cannot open: File exists
    2149:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/resolverdialfunc_test.go: Cannot open: File exists
    2150:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/interface_unix_test.go: Cannot open: File exists
    2151:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/error_posix.go: Cannot open: File exists
    2152:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/hook_unix.go: Cannot open: File exists
    ...
    
    2223:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/proxy_test.go: Cannot open: File exists
    2224:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/responsecontroller.go: Cannot open: File exists
    2225:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/example_filesystem_test.go: Cannot open: File exists
    2226:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/cookie.go: Cannot open: File exists
    2227:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/fs_test.go: Cannot open: File exists
    2228:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/server.go: Cannot open: File exists
    2229:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/pattern_test.go: Cannot open: File exists
    2230:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/readrequest_test.go: Cannot open: File exists
    2231:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/mapping.go: Cannot open: File exists
    2232:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/async_test.go: Cannot open: File exists
    2233:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/filetransport_test.go: Cannot open: File exists
    2234:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/servemux121.go: Cannot open: File exists
    2235:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/filetransport.go: Cannot open: File exists
    2236:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/transfer_test.go: Cannot open: File exists
    2237:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/transport_test.go: Cannot open: File exists
    2238:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/h2_error.go: Cannot open: File exists
    2239:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/routing_index_test.go: Cannot open: File exists
    ...
    
    2241:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/httptrace/example_test.go: Cannot open: File exists
    2242:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/httptrace/trace_test.go: Cannot open: File exists
    2243:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/httptrace/trace.go: Cannot open: File exists
    2244:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/routing_tree_test.go: Cannot open: File exists
    2245:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/example_handle_test.go: Cannot open: File exists
    2246:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/response_test.go: Cannot open: File exists
    2247:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/doc.go: Cannot open: File exists
    2248:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/status.go: Cannot open: File exists
    2249:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/clone.go: Cannot open: File exists
    2250:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/requestwrite_test.go: Cannot open: File exists
    2251:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/header_test.go: Cannot open: File exists
    2252:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/jar.go: Cannot open: File exists
    2253:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/server_test.go: Cannot open: File exists
    2254:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/routing_tree.go: Cannot open: File exists
    2255:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/main_test.go: Cannot open: File exists
    2256:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/h2_error_test.go: Cannot open: File exists
    2257:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/transfer.go: Cannot open: File exists
    ...
    
    2279:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/client.go: Cannot open: File exists
    2280:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/serve_test.go: Cannot open: File exists
    2281:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/fs.go: Cannot open: File exists
    2282:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/method.go: Cannot open: File exists
    2283:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/http/sniff.go: Cannot open: File exists
    2284:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sendfile_unix_alt.go: Cannot open: File exists
    2285:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpconn_keepalive_conf_windows_test.go: Cannot open: File exists
    2286:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_stub.go: Cannot open: File exists
    2287:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/fd_wasip1.go: Cannot open: File exists
    2288:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/fd_plan9.go: Cannot open: File exists
    2289:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sys_cloexec.go: Cannot open: File exists
    2290:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/timeout_test.go: Cannot open: File exists
    2291:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/file_wasip1_test.go: Cannot open: File exists
    2292:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sockopt_bsd.go: Cannot open: File exists
    2293:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/example_test.go: Cannot open: File exists
    2294:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/error_posix_test.go: Cannot open: File exists
    2295:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_netbsd.go: Cannot open: File exists
    2296:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpsockopt_stub.go: Cannot open: File exists
    2297:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sock_linux.go: Cannot open: File exists
    2298:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/pipe.go: Cannot open: File exists
    2299:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/mptcpsock_stub.go: Cannot open: File exists
    2300:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/interface_bsdvar.go: Cannot open: File exists
    2301:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/error_plan9.go: Cannot open: File exists
    2302:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/url/url.go: Cannot open: File exists
    ...
    
    2329:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/ipsock_plan9_test.go: Cannot open: File exists
    2330:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/main_unix_test.go: Cannot open: File exists
    2331:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_solaris.go: Cannot open: File exists
    2332:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/port_unix.go: Cannot open: File exists
    2333:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sendfile_windows.go: Cannot open: File exists
    2334:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_openbsd.go: Cannot open: File exists
    2335:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_unix_cgo_res.go: Cannot open: File exists
    2336:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpsockopt_windows.go: Cannot open: File exists
    2337:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/interface_bsd.go: Cannot open: File exists
    2338:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/ipsock_test.go: Cannot open: File exists
    2339:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/interface_linux.go: Cannot open: File exists
    2340:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/smtp/example_test.go: Cannot open: File exists
    2341:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/smtp/auth.go: Cannot open: File exists
    2342:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/smtp/smtp.go: Cannot open: File exists
    2343:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/smtp/smtp_test.go: Cannot open: File exists
    2344:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/error_windows.go: Cannot open: File exists
    2345:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/addrselect.go: Cannot open: File exists
    ...
    
    2348:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/netip/slow_test.go: Cannot open: File exists
    2349:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/netip/inlining_test.go: Cannot open: File exists
    2350:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/netip/netip_test.go: Cannot open: File exists
    2351:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/netip/uint128_test.go: Cannot open: File exists
    2352:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/netip/uint128.go: Cannot open: File exists
    2353:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/netip/netip_pkg_test.go: Cannot open: File exists
    2354:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/netip/fuzz_test.go: Cannot open: File exists
    2355:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/rawconn_stub_test.go: Cannot open: File exists
    2356:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/rawconn_test.go: Cannot open: File exists
    2357:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/unixsock_readmsg_cloexec.go: Cannot open: File exists
    2358:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sockoptip_posix.go: Cannot open: File exists
    2359:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sock_linux_test.go: Cannot open: File exists
    2360:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/hook.go: Cannot open: File exists
    2361:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/mptcpsock_linux_test.go: Cannot open: File exists
    2362:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/file_wasip1.go: Cannot open: File exists
    2363:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/error_unix_test.go: Cannot open: File exists
    2364:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/dnsclient_unix_test.go: Cannot open: File exists
    ...
    
    2376:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_resold.go: Cannot open: File exists
    2377:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpsockopt_solaris.go: Cannot open: File exists
    2378:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/mockserver_test.go: Cannot open: File exists
    2379:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/mac.go: Cannot open: File exists
    2380:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_darwin.go: Cannot open: File exists
    2381:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/dial_test.go: Cannot open: File exists
    2382:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/unixsock_windows_test.go: Cannot open: File exists
    2383:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/rlimit_unix.go: Cannot open: File exists
    2384:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/main_wasm_test.go: Cannot open: File exists
    2385:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/netgo_off.go: Cannot open: File exists
    2386:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpsock_solaris.go: Cannot open: File exists
    2387:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sockopt_posix.go: Cannot open: File exists
    2388:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/rawconn_windows_test.go: Cannot open: File exists
    2389:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/hook_plan9.go: Cannot open: File exists
    2390:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sock_plan9.go: Cannot open: File exists
    2391:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/error_windows_test.go: Cannot open: File exists
    2392:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpsockopt_openbsd.go: Cannot open: File exists
    2393:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/interface_solaris.go: Cannot open: File exists
    2394:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/netgo_netcgo.go: Cannot open: File exists
    2395:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpconn_keepalive_solaris_test.go: Cannot open: File exists
    2396:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/netcgo_off.go: Cannot open: File exists
    2397:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/unixsock_readmsg_cmsg_cloexec.go: Cannot open: File exists
    2398:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/interface_windows.go: Cannot open: File exists
    2399:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/unixsock_posix.go: Cannot open: File exists
    2400:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/error_unix.go: Cannot open: File exists
    2401:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/sock_windows.go: Cannot open: File exists
    2402:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/ip.go: Cannot open: File exists
    2403:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_linux.go: Cannot open: File exists
    2404:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/udpsock_posix.go: Cannot open: File exists
    2405:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_socknew.go: Cannot open: File exists
    2406:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/main_windows_test.go: Cannot open: File exists
    2407:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_unix_test.go: Cannot open: File exists
    2408:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/dnsclient_test.go: Cannot open: File exists
    2409:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/rawconn_unix_test.go: Cannot open: File exists
    2410:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/dnsconfig_unix_test.go: Cannot open: File exists
    2411:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/tcpsock_windows.go: Cannot open: File exists
    2412:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/error_plan9_test.go: Cannot open: File exists
    2413:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/net/cgo_android.go: Cannot open: File exists
    ...
    
    2636:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/url.go: Cannot open: File exists
    2637:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/js_test.go: Cannot open: File exists
    2638:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/example_test.go: Cannot open: File exists
    2639:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/template_test.go: Cannot open: File exists
    2640:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/template.go: Cannot open: File exists
    2641:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/attr.go: Cannot open: File exists
    2642:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/url_test.go: Cannot open: File exists
    2643:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/context.go: Cannot open: File exists
    2644:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/attr_string.go: Cannot open: File exists
    2645:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/urlpart_string.go: Cannot open: File exists
    2646:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/html.go: Cannot open: File exists
    2647:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/css_test.go: Cannot open: File exists
    2648:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/clone_test.go: Cannot open: File exists
    2649:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/multi_test.go: Cannot open: File exists
    2650:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/html_test.go: Cannot open: File exists
    2651:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/error.go: Cannot open: File exists
    2652:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/html/template/delim_string.go: Cannot open: File exists
    ...
    
    2681:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/syscall_windows.go: Cannot open: File exists
    2682:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/types_windows_arm.go: Cannot open: File exists
    2683:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go: Cannot open: File exists
    2684:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/memory_windows.go: Cannot open: File exists
    2685:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/race.go: Cannot open: File exists
    2686:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/setupapi_windows.go: Cannot open: File exists
    2687:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/types_windows_arm64.go: Cannot open: File exists
    2688:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/security_windows.go: Cannot open: File exists
    2689:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/syscall.go: Cannot open: File exists
    2690:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/race0.go: Cannot open: File exists
    2691:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/dll_windows.go: Cannot open: File exists
    2692:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/mkknownfolderids.bash: Cannot open: File exists
    2693:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/env_windows.go: Cannot open: File exists
    2694:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/eventlog.go: Cannot open: File exists
    2695:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/aliases.go: Cannot open: File exists
    2696:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/zerrors_windows.go: Cannot open: File exists
    2697:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/mkerrors.bash: Cannot open: File exists
    2698:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/service.go: Cannot open: File exists
    2699:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/mksyscall.go: Cannot open: File exists
    2700:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/zsyscall_windows.go: Cannot open: File exists
    2701:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/str.go: Cannot open: File exists
    2702:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/exec_windows.go: Cannot open: File exists
    2703:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/types_windows_amd64.go: Cannot open: File exists
    2704:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/windows/types_windows.go: Cannot open: File exists
    2705:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/unveil_openbsd.go: Cannot open: File exists
    2706:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go: Cannot open: File exists
    2707:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/asm_linux_arm64.s: Cannot open: File exists
    2708:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go: Cannot open: File exists
    2709:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_darwin.go: Cannot open: File exists
    2710:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go: Cannot open: File exists
    2711:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_bsd.go: Cannot open: File exists
    2712:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go: Cannot open: File exists
    2713:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go: Cannot open: File exists
    2714:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go: Cannot open: File exists
    2715:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go: Cannot open: File exists
    2716:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go: Cannot open: File exists
    2717:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go: Cannot open: File exists
    2718:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/asm_linux_loong64.s: Cannot open: File exists
    2719:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go: Cannot open: File exists
    2720:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go: Cannot open: File exists
    2721:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/dev_darwin.go: Cannot open: File exists
    2722:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/dev_dragonfly.go: Cannot open: File exists
    2723:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/dev_linux.go: Cannot open: File exists
    2724:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go: Cannot open: File exists
    2725:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go: Cannot open: File exists
    2726:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go: Cannot open: File exists
    2727:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/bluetooth_linux.go: Cannot open: File exists
    2728:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/asm_linux_s390x.s: Cannot open: File exists
    2729:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go: Cannot open: File exists
    2730:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go: Cannot open: File exists
    2731:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/mkall.sh: Cannot open: File exists
    2732:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go: Cannot open: File exists
    2733:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go: Cannot open: File exists
    2734:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go: Cannot open: File exists
    2735:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go: Cannot open: File exists
    2736:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/vgetrandom_linux.go: Cannot open: File exists
    2737:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/timestruct.go: Cannot open: File exists
    2738:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go: Cannot open: File exists
    2739:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go: Cannot open: File exists
    2740:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go: Cannot open: File exists
    2741:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go: Cannot open: File exists
    2742:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s: Cannot open: File exists
    2743:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s: Cannot open: File exists
    2744:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go: Cannot open: File exists
    2745:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go: Cannot open: File exists
    2746:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go: Cannot open: File exists
    2747:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go: Cannot open: File exists
    2748:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go: Cannot open: File exists
    2749:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/constants.go: Cannot open: File exists
    2750:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/asm_zos_s390x.s: Cannot open: File exists
    2751:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go: Cannot open: File exists
    2752:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go: Cannot open: File exists
    2753:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go: Cannot open: File exists
    2754:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go: Cannot open: File exists
    2755:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_386.go: Cannot open: File exists
    2756:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go: Cannot open: File exists
    2757:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go: Cannot open: File exists
    2758:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go: Cannot open: File exists
    2759:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go: Cannot open: File exists
    2760:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go: Cannot open: File exists
    2761:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go: Cannot open: File exists
    2762:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go: Cannot open: File exists
    2763:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_hurd_386.go: Cannot open: File exists
    2764:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go: Cannot open: File exists
    2765:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go: Cannot open: File exists
    2766:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go: Cannot open: File exists
    2767:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go: Cannot open: File exists
    2768:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go: Cannot open: File exists
    2769:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go: Cannot open: File exists
    2770:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go: Cannot open: File exists
    2771:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go: Cannot open: File exists
    2772:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go: Cannot open: File exists
    2773:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go: Cannot open: File exists
    2774:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go: Cannot open: File exists
    2775:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go: Cannot open: File exists
    2776:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go: Cannot open: File exists
    2777:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go: Cannot open: File exists
    2778:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go: Cannot open: File exists
    2779:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/endian_big.go: Cannot open: File exists
    2780:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go: Cannot open: File exists
    2781:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go: Cannot open: File exists
    2782:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go: Cannot open: File exists
    2783:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go: Cannot open: File exists
    ...
    
    2786:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s: Cannot open: File exists
    2787:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go: Cannot open: File exists
    2788:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go: Cannot open: File exists
    2789:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/fdset.go: Cannot open: File exists
    2790:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go: Cannot open: File exists
    2791:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/pagesize_unix.go: Cannot open: File exists
    2792:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go: Cannot open: File exists
    2793:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/xattr_bsd.go: Cannot open: File exists
    2794:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go: Cannot open: File exists
    2795:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_illumos.go: Cannot open: File exists
    2796:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/README.md: Cannot open: File exists
    2797:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go: Cannot open: File exists
    2798:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/readdirent_getdents.go: Cannot open: File exists
    2799:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go: Cannot open: File exists
    2800:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go: Cannot open: File exists
    2801:  /usr/bin/tar: ../../../go/pkg/mod/golang.org/[email protected]/src/cmd/vendor/gol...

    … antes do restante do código para otimizar o cache de camadas.
    …ara maior flexibilidade e precisão nas informações da imagem Docker.
    @nataliagranato
    Copy link
    Contributor Author

    @copilot Resolva os comentários.

    Copy link

    @coderabbitai coderabbitai bot left a comment

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    Actionable comments posted: 2

    ♻️ Duplicate comments (1)
    internal/scanner/scanner.go (1)

    125-125: Corrigir return statement órfão.

    Há um return nil órfão que ficou após o código malformado e precisa ser integrado corretamente na lógica do método Scan.

    Este return statement deve fazer parte da lógica quando não há pods encontrados no namespace.

    🧹 Nitpick comments (3)
    .github/workflows/ci.yml (3)

    19-19: Corrigir espaços em branco desnecessários no final das linhas.

    O YAMLlint detectou espaços em branco no final de várias linhas que devem ser removidos para manter a formatação limpa.

    -    
    +

    Aplique esta correção nas linhas 19, 72, 98 e 128.

    Also applies to: 72-72, 98-98, 128-128


    96-96: Corrigir indentação incorreta.

    A indentação está incorreta - esperado 8 espaços mas encontrado 10.

    -          - goos: windows
    -            goarch: arm64
    +        - goos: windows
    +          goarch: arm64

    141-141: Adicionar nova linha no final do arquivo.

    O arquivo deve terminar com uma nova linha para seguir as convenções padrão.

             govulncheck ./...
    +
    📜 Review details

    Configuration used: CodeRabbit UI
    Review profile: CHILL
    Plan: Pro

    📥 Commits

    Reviewing files that changed from the base of the PR and between 0d9cd2c and 73d84af.

    📒 Files selected for processing (5)
    • .github/workflows/ci.yml (1 hunks)
    • .goreleaser.yml (1 hunks)
    • Dockerfile (1 hunks)
    • internal/cli/version_test.go (1 hunks)
    • internal/scanner/scanner.go (4 hunks)
    ✅ Files skipped from review due to trivial changes (1)
    • .goreleaser.yml
    🚧 Files skipped from review as they are similar to previous changes (1)
    • Dockerfile
    🧰 Additional context used
    🧬 Code Graph Analysis (1)
    internal/scanner/scanner.go (1)
    pkg/kubernetes/client.go (1)
    • NewClient (18-32)
    🪛 YAMLlint (1.37.1)
    .github/workflows/ci.yml

    [error] 19-19: trailing spaces

    (trailing-spaces)


    [error] 72-72: trailing spaces

    (trailing-spaces)


    [warning] 96-96: wrong indentation: expected 8 but found 10

    (indentation)


    [error] 98-98: trailing spaces

    (trailing-spaces)


    [error] 128-128: trailing spaces

    (trailing-spaces)


    [error] 141-141: no new line character at the end of file

    (new-line-at-end-of-file)

    🪛 GitHub Check: Build (darwin, arm64)
    internal/scanner/scanner.go

    [failure] 125-125:
    syntax error: non-declaration statement outside function body


    [failure] 86-86:
    syntax error: unexpected keyword import, expected }


    [failure] 84-84:
    syntax error: unexpected keyword package, expected }

    🪛 GitHub Check: Build (linux, amd64)
    internal/scanner/scanner.go

    [failure] 125-125:
    syntax error: non-declaration statement outside function body


    [failure] 86-86:
    syntax error: unexpected keyword import, expected }


    [failure] 84-84:
    syntax error: unexpected keyword package, expected }

    🪛 GitHub Check: Security Scan
    internal/scanner/scanner.go

    [failure] 118-118:
    undefined: kubeClient


    [failure] 114-114:
    undefined: os


    [failure] 108-108:
    undefined: io


    [failure] 104-104:
    undefined: kubeClient


    [failure] 100-100:
    undefined: io


    [failure] 104-104:
    expected ')', found KubernetesClient


    [failure] 103-103:
    missing parameter name


    [failure] 103-103:
    expected '(', found NewProbeScannerWithClient


    [failure] 84-84:
    expected statement, found 'package'

    🪛 GitHub Check: Build (windows, amd64)
    internal/scanner/scanner.go

    [failure] 125-125:
    syntax error: non-declaration statement outside function body


    [failure] 86-86:
    syntax error: unexpected keyword import, expected }


    [failure] 84-84:
    syntax error: unexpected keyword package, expected }

    🪛 GitHub Check: Build (darwin, amd64)
    internal/scanner/scanner.go

    [failure] 125-125:
    syntax error: non-declaration statement outside function body


    [failure] 86-86:
    syntax error: unexpected keyword import, expected }


    [failure] 84-84:
    syntax error: unexpected keyword package, expected }

    🪛 GitHub Check: Build (linux, arm64)
    internal/scanner/scanner.go

    [failure] 125-125:
    syntax error: non-declaration statement outside function body


    [failure] 86-86:
    syntax error: unexpected keyword import, expected }


    [failure] 84-84:
    syntax error: unexpected keyword package, expected }

    🪛 GitHub Check: Test (1.23)
    internal/scanner/scanner.go

    [failure] 125-125:
    syntax error: non-declaration statement outside function body


    [failure] 86-86:
    syntax error: unexpected keyword import, expected }


    [failure] 84-84:
    syntax error: unexpected keyword package, expected }

    🪛 GitHub Check: Lint
    internal/scanner/scanner.go

    [failure] 84-84:
    syntax error: unexpected keyword package, expected }


    [failure] 125-125:
    syntax error: non-declaration statement outside function body) (typecheck)


    [failure] 86-86:
    syntax error: unexpected keyword import, expected }


    [failure] 84-84:
    syntax error: unexpected keyword package, expected }


    [failure] 125-125:
    syntax error: non-declaration statement outside function body) (typecheck)


    [failure] 86-86:
    syntax error: unexpected keyword import, expected }


    [failure] 84-84:
    syntax error: unexpected keyword package, expected }

    internal/cli/version_test.go

    [failure] 192-192:
    declared and not used: cmd (typecheck)

    🪛 GitHub Check: Test (1.22)
    internal/scanner/scanner.go

    [failure] 125-125:
    syntax error: non-declaration statement outside function body


    [failure] 86-86:
    syntax error: unexpected keyword import, expected }


    [failure] 84-84:
    syntax error: unexpected keyword package, expected }

    🪛 GitHub Actions: CI
    internal/scanner/scanner.go

    [error] 84-84: syntax error: unexpected keyword package, expected }

    ⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
    • GitHub Check: Analyze (go)
    🔇 Additional comments (8)
    internal/cli/version_test.go (8)

    10-80: Boa cobertura de testes para o comando version!

    A implementação usa table-driven tests de forma eficaz, cobrindo diferentes formatos de saída e validações de ajuda.


    82-111: Excelente validação da saída JSON!

    O teste valida corretamente a estrutura JSON e verifica a presença de todos os campos obrigatórios.


    113-132: Bom teste de caso extremo!

    Verifica corretamente que o comando usa o formato padrão quando um formato inválido é especificado.


    134-156: Validação completa das propriedades da flag!

    O teste verifica corretamente o shorthand, valor padrão e descrição da flag output.


    158-172: Teste adequado dentro das limitações!

    O comentário documenta corretamente a limitação de testar a função de completion diretamente.


    174-189: Boa validação da documentação de exemplos!

    Verifica que os exemplos estão presentes e contêm uso básico e formato de saída curto.


    221-282: Excelente cobertura de conformidade POSIX!

    O teste verifica comprehensivamente diferentes sintaxes de flags POSIX, incluindo formato curto, longo e com igual.


    284-315: Boa validação das convenções de flag!

    Verifica corretamente que a ajuda mostra tanto a forma curta quanto a longa das flags.

    Comment on lines +82 to +124
    // internal/scanner/scanner.go

    package scanner

    import (
    "io"
    "os"
    "strings"

    // ... other imports ...
    )

    // ProbeScanner handles the scanning logic
    type ProbeScanner struct {
    kubeClient KubernetesClient
    namespace string
    probeType string
    recommendation bool
    writer io.Writer
    }

    func NewProbeScannerWithClient(
    kubeClient KubernetesClient,
    namespace string,
    probeType string,
    recommendation bool,
    writer io.Writer,
    ) *ProbeScanner {
    if namespace == "" {
    namespace = "default"
    }
    if writer == nil {
    writer = os.Stdout
    }

    return &ProbeScanner{
    kubeClient: kubeClient,
    namespace: namespace,
    probeType: strings.ToLower(probeType),
    recommendation: recommendation,
    writer: writer,
    }
    }
    Copy link

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    ⚠️ Potential issue

    Erro crítico: código duplicado malformado causando falhas de build.

    Há um bloco de código duplicado e malformado inserido no meio do arquivo que está causando erros de sintaxe. Este código deve ser removido e as alterações necessárias devem ser aplicadas corretamente ao código original.

    Remova todo o bloco de código duplicado das linhas 82-124 e aplique as seguintes correções ao código original:

    1. Adicione o campo writer ao struct ProbeScanner:
     // ProbeScanner handles the scanning logic
     type ProbeScanner struct {
     	kubeClient     KubernetesClient
     	namespace      string
     	probeType      string
     	recommendation bool
    +	writer         io.Writer
     }
    1. Atualize o construtor NewProbeScannerWithClient para aceitar e inicializar o writer:
    -func NewProbeScannerWithClient(kubeClient KubernetesClient, namespace, probeType string, recommendation bool) *ProbeScanner {
    +func NewProbeScannerWithClient(kubeClient KubernetesClient, namespace, probeType string, recommendation bool, writer io.Writer) *ProbeScanner {
     	if namespace == "" {
     		namespace = "default"
     	}
    +	if writer == nil {
    +		writer = os.Stdout
    +	}
    
     	return &ProbeScanner{
     		kubeClient:     kubeClient,
     		namespace:      namespace,
     		probeType:      strings.ToLower(probeType),
     		recommendation: recommendation,
    +		writer:         writer,
     	}
     }
    1. Adicione as importações necessárias:
     import (
     	"context"
     	"fmt"
    +	"io"
    +	"os"
     	"strings"
    
     	"kubeprobes/pkg/kubernetes"
     	corev1 "k8s.io/api/core/v1"
     )
    1. Atualize NewProbeScanner para passar os.Stdout como writer:
    -	return NewProbeScannerWithClient(kubeClient, namespace, probeType, recommendation), nil
    +	return NewProbeScannerWithClient(kubeClient, namespace, probeType, recommendation, os.Stdout), nil
    1. Substitua todas as chamadas fmt.Printf por fmt.Fprintf(ps.writer, ...) no método Scan.

    Committable suggestion skipped: line range outside the PR's diff.

    🧰 Tools
    🪛 GitHub Check: Build (darwin, arm64)

    [failure] 86-86:
    syntax error: unexpected keyword import, expected }


    [failure] 84-84:
    syntax error: unexpected keyword package, expected }

    🪛 GitHub Check: Build (linux, amd64)

    [failure] 86-86:
    syntax error: unexpected keyword import, expected }


    [failure] 84-84:
    syntax error: unexpected keyword package, expected }

    🪛 GitHub Check: Security Scan

    [failure] 118-118:
    undefined: kubeClient


    [failure] 114-114:
    undefined: os


    [failure] 108-108:
    undefined: io


    [failure] 104-104:
    undefined: kubeClient


    [failure] 100-100:
    undefined: io


    [failure] 104-104:
    expected ')', found KubernetesClient


    [failure] 103-103:
    missing parameter name


    [failure] 103-103:
    expected '(', found NewProbeScannerWithClient


    [failure] 84-84:
    expected statement, found 'package'

    🪛 GitHub Check: Build (windows, amd64)

    [failure] 86-86:
    syntax error: unexpected keyword import, expected }


    [failure] 84-84:
    syntax error: unexpected keyword package, expected }

    🪛 GitHub Check: Build (darwin, amd64)

    [failure] 86-86:
    syntax error: unexpected keyword import, expected }


    [failure] 84-84:
    syntax error: unexpected keyword package, expected }

    🪛 GitHub Check: Build (linux, arm64)

    [failure] 86-86:
    syntax error: unexpected keyword import, expected }


    [failure] 84-84:
    syntax error: unexpected keyword package, expected }

    🪛 GitHub Check: Test (1.23)

    [failure] 86-86:
    syntax error: unexpected keyword import, expected }


    [failure] 84-84:
    syntax error: unexpected keyword package, expected }

    🪛 GitHub Check: Lint

    [failure] 84-84:
    syntax error: unexpected keyword package, expected }


    [failure] 86-86:
    syntax error: unexpected keyword import, expected }


    [failure] 84-84:
    syntax error: unexpected keyword package, expected }


    [failure] 86-86:
    syntax error: unexpected keyword import, expected }


    [failure] 84-84:
    syntax error: unexpected keyword package, expected }

    🪛 GitHub Check: Test (1.22)

    [failure] 86-86:
    syntax error: unexpected keyword import, expected }


    [failure] 84-84:
    syntax error: unexpected keyword package, expected }

    🪛 GitHub Actions: CI

    [error] 84-84: syntax error: unexpected keyword package, expected }

    🤖 Prompt for AI Agents
    In internal/scanner/scanner.go from lines 82 to 124, remove the duplicated and
    malformed code block causing build errors. Ensure the ProbeScanner struct
    includes the writer field of type io.Writer. Modify the
    NewProbeScannerWithClient constructor to accept a writer parameter and
    initialize the writer field, defaulting to os.Stdout if nil. Add necessary
    imports such as "io", "os", and "strings". Update the NewProbeScanner function
    to call NewProbeScannerWithClient passing os.Stdout as the writer. Finally,
    replace all fmt.Printf calls in the Scan method with fmt.Fprintf using the
    ProbeScanner's writer field to direct output correctly.
    

    Comment on lines +191 to +192
    func TestVersionCommand_ErrorHandling(t *testing.T) {
    cmd := NewVersionCommand()
    Copy link

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    ⚠️ Potential issue

    Remova a declaração de variável não utilizada.

    A variável cmd é declarada mas não utilizada, pois uma nova instância é criada dentro do loop de teste.

    Aplique esta correção:

    func TestVersionCommand_ErrorHandling(t *testing.T) {
    -    cmd := NewVersionCommand()
    -
        // Test with various edge cases
    🧰 Tools
    🪛 GitHub Check: Lint

    [failure] 192-192:
    declared and not used: cmd (typecheck)

    🤖 Prompt for AI Agents
    In internal/cli/version_test.go around lines 191 to 192, the variable 'cmd' is
    declared but never used because a new instance is created inside the test loop.
    Remove the unused 'cmd' variable declaration to clean up the code and avoid
    unnecessary declarations.
    

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Projects

    None yet

    Development

    Successfully merging this pull request may close these issues.

    2 participants