thaJeztah commented on PR #764:
URL: https://github.com/apache/arrow-go/pull/764#issuecomment-4239096189

   I intentionally kept this PR minimal / close to the existing functionality 
as my intent was to remove the dependency, and assuming that adding new flags / 
features to the CLI would be "rare", so a slight bit of extra code to define 
the flag would be a one-time change, and wouldn't add much maintenance after 
that.
   
   But it all depends a bit on what the scope of this project and the 
command-line binaries is.
   
   For example, I know that containerd 
(https://github.com/containerd/containerd) and BuildKit 
(https://github.com/moby/buildkit) both provide a CLI (`ctr` and `buildctl`) 
but for both projects, those CLIs are called out to be for debugging and 
testing purposes; they're _intentionally_ not a polished CLI and bare-bones in 
many areas, because the main purpose of both projects is to be used as either a 
library module, or as a component in a product (so the product using it as 
component or library can provide the "polished" experience).
   
   If the intent is for these binaries to be used for debugging, testing, 
and/or development of the code in the repository, then I'd keep them 
bare-bones, and try to minimize their effect (i.e., avoid adding extra 
dependencies that are only used for a development tool); at least if they are 
part of the same module also used as library, so that users of the library 
don't get additional dependencies forced on them.
   
   If the intent is for them to be the canonical / "official" command-line 
interfaces then if may make sense to provide a more polished experience, e.g. 
using a more full-fledged framework for CLIs (e.g. 
https://github.com/spf13/cobra or https://github.com/urfave/cli which are 
commonly used). Those can provide more functionality, such as automatic 
generation of tab-completion and documentation / man-pages, but also come with 
a fair share of additional dependencies, so in that case it could be worth 
creating a separate module for the binaries to have a clear separation between 
the "library" module(s) and command-line / binary modules.
   
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to