Skip to content

open-cli-collective/google-cli-common

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

google-cli-common

Shared Go library for the Open CLI Collective's Google CLIs. It holds everything that would otherwise be duplicated between them: the Google OAuth flow, the API service clients (Gmail, Calendar, Contacts, Drive, People), credential/config/ cache state, rendering and bulk-operation helpers, and the cobra command scaffolding (init, credential management, the mail command surface, root wiring).

Each CLI is a thin binary that registers a config.Identity at startup and composes the pieces it needs:

  • google-readonly (gro) — non-destructive: read plus labeling/archiving/RSVP/etc.
  • google-readwrite (grw) — read-write Gmail cleanup: delete, filters, and label (folder) lifecycle.

The identity seam

One shared library backs multiple CLIs because everything CLI-specific is funneled through a single config.Identity, registered once from main before any other call:

config.Register(config.Identity{
    DirName:           "google-readwrite",        // config/cache dir, keyring service, env-var prefix
    DefaultRef:        "google-readwrite/default", // default <service>/<profile> credential ref
    ProductName:       "grw",                      // user-facing name in messages
    Scopes:            appidentity.Scopes,         // OAuth scopes this CLI requests
    ScopeDescriptions: appidentity.ScopeDescriptions,
    SiblingDirNames:   []string{"google-readonly"}, // OAuth clients this CLI may reuse
})

DirName alone drives the config/cache directory, the keyring service segment, and the derived <SERVICE>_KEYRING_BACKEND / <SERVICE>_KEYRING_PASSPHRASE / <SERVICE>_CREDENTIAL_REF env vars, so two CLIs never collide.

Layout

Package Responsibility
config, keychain, auth Config file, OS-keyring token storage, and the Google OAuth flow
gmail, calendar, contacts, drive, people API clients and data models
mailcmd, initcmd, configcmd, setcred, refreshcmd, rootutil Shared cobra command packages and root scaffolding
bulk, output, format, view, errors, log, cache, zip, version Rendering, bulk-operation, and support utilities
testutil, credtest Test fixtures, assertions, and a hermetic credential environment

Development

make check   # tidy + lint + test (race) + build

Secret/state handling, output conventions, and repository layout follow the Open CLI Collective standards in cli-common.

About

Shared Go library for the Open CLI Collective's Google CLIs (gro, grw): OAuth, API clients, credential/config state, and command scaffolding, parameterized by a per-CLI Identity

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors