[Discussion] Project structure

We have tons of packages in the project that are scattered mostly across api, commands, internal and pkg.

I'm not really able to follow the intention behind what goes where. It seems like commands does not only contain commands (as in CLI / cobra commands). Then we have pkg and internal - do we need pkg? Is the CLI ever supposed to be used as a package by another Go module outside of the CLI project? I don't think so.

Proposal

  • cmd/: for main binaries (as-is).
  • commands/: structure (subdirs?!) for CLI commands, following the command structure.
  • internal/: contains packages for everything else, including api and whatever we have in pkg.
    • internal/testing/: contains package(s) for testing purposes.