From 3ac6d302d854e9501b278362f257078c41204da9 Mon Sep 17 00:00:00 2001 From: Pavel Zakharov Date: Wed, 11 Mar 2026 23:20:15 -0700 Subject: [PATCH] feat(drive): add commenter role to drive share command Allow sharing files with comment-only access via `--role=commenter`, matching the Google Drive API's commenter permission role. --- internal/cmd/drive.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/internal/cmd/drive.go b/internal/cmd/drive.go index ee062ab6..ca33b44d 100644 --- a/internal/cmd/drive.go +++ b/internal/cmd/drive.go @@ -56,8 +56,11 @@ const ( driveShareToUser = "user" driveShareToDomain = "domain" - drivePermRoleReader = "reader" - drivePermRoleWriter = "writer" + // Drive sharing permission roles matching the Google Drive API roles. + // "commenter" allows view + comment access without edit rights. + drivePermRoleReader = "reader" + drivePermRoleWriter = "writer" + drivePermRoleCommenter = "commenter" ) type DriveCmd struct { @@ -719,7 +722,7 @@ type DriveShareCmd struct { Anyone bool `name:"anyone" hidden:"" help:"(deprecated) Use --to=anyone"` Email string `name:"email" help:"User email (for --to=user)"` Domain string `name:"domain" help:"Domain (for --to=domain; e.g. example.com)"` - Role string `name:"role" help:"Permission: reader|writer" default:"reader"` + Role string `name:"role" help:"Permission: reader|writer|commenter" default:"reader"` Discoverable bool `name:"discoverable" help:"Allow file discovery in search (anyone/domain only)"` } @@ -785,8 +788,8 @@ func (c *DriveShareCmd) Run(ctx context.Context, flags *RootFlags) error { if role == "" { role = drivePermRoleReader } - if role != drivePermRoleReader && role != drivePermRoleWriter { - return usage("invalid --role (expected reader|writer)") + if role != drivePermRoleReader && role != drivePermRoleWriter && role != drivePermRoleCommenter { + return usage("invalid --role (expected reader|writer|commenter)") } svc, err := newDriveService(ctx, account)