BREAKING:
- Binary renamed oo-cli → oo; install path is now
github.com/eslider/go-onlyoffice/cmd/oo.
- Former internal/cli tree removed; cobra commands live in cmd/oo/ as
package main, split by domain (calendar.go, crm.go, tasks.go, apps.go,
common.go, main.go).
- internal/applications moved to cmd/oo/applications/ (CV-specific workflow;
not a library feature).
- examples/applications removed (it depended on an internal package).
Library split (mechanical, zero API surface change):
- client.go — Client, Credentials, Defaults, env helpers, NewClient.
- request.go — Request, Query, Time, Token, MetaResponse, Permissions.
- auth.go — Authenticate/AuthenticateContext/InvalidateToken.
- http.go — transport + ResponseArray/ResponseObject/postFormObject/
putFormObject/deleteObject/unmarshalResponseObject (renamed
from httpx.go).
- projects.go, tasks.go, users.go, calendar.go, crm.go, files.go — typed
/ untyped domain methods. tasks_extra.go merged into tasks.go.
- onlyoffice.go deleted (content redistributed).
AGENTS.md, CHANGELOG.md, README.md updated accordingly.
Made-with: Cursor
102 lines
2.2 KiB
Go
102 lines
2.2 KiB
Go
package main
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
func cmdCalList() *cobra.Command {
|
|
return &cobra.Command{
|
|
Use: "cal-list",
|
|
Short: "List calendars (default date span)",
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
c, err := newOO()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
out, err := c.ListCalendars(cmd.Context(), "", "")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
printJSON(out)
|
|
return nil
|
|
},
|
|
}
|
|
}
|
|
|
|
func cmdCalEvents() *cobra.Command {
|
|
var start, end string
|
|
cmd := &cobra.Command{
|
|
Use: "cal-events",
|
|
Short: "List calendar data for period (default: next 7 days)",
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
c, err := newOO()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if start == "" || end == "" {
|
|
start = time.Now().Format("2006-01-02")
|
|
end = time.Now().AddDate(0, 0, 7).Format("2006-01-02")
|
|
}
|
|
out, err := c.ListEvents(cmd.Context(), start, end)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
printJSON(out)
|
|
return nil
|
|
},
|
|
}
|
|
cmd.Flags().StringVar(&start, "start", "", "start date YYYY-MM-DD")
|
|
cmd.Flags().StringVar(&end, "end", "", "end date YYYY-MM-DD")
|
|
return cmd
|
|
}
|
|
|
|
func cmdCalAdd() *cobra.Command {
|
|
var cal, desc string
|
|
var allDay bool
|
|
cmd := &cobra.Command{
|
|
Use: "cal-add TITLE START END",
|
|
Short: "Add calendar event",
|
|
Args: cobra.ExactArgs(3),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
c, err := newOO()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
ev, err := c.AddEvent(cmd.Context(), cal, args[0], args[1], args[2], desc, allDay)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
printJSON(ev)
|
|
return nil
|
|
},
|
|
}
|
|
cmd.Flags().StringVar(&cal, "calendar", "", "calendar id (default from env)")
|
|
cmd.Flags().StringVar(&desc, "description", "", "")
|
|
cmd.Flags().BoolVar(&allDay, "all-day", false, "")
|
|
return cmd
|
|
}
|
|
|
|
func cmdCalDel() *cobra.Command {
|
|
return &cobra.Command{
|
|
Use: "cal-delete EVENT_ID [EVENT_ID...]",
|
|
Short: "Delete calendar events",
|
|
Args: cobra.MinimumNArgs(1),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
c, err := newOO()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
for _, id := range args {
|
|
out, err := c.DeleteEvent(cmd.Context(), id)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
printJSON(out)
|
|
}
|
|
return nil
|
|
},
|
|
}
|
|
}
|