gtypee 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -0
- package/dist/src/cmd/calendar/commands.d.ts +3 -2
- package/dist/src/cmd/calendar/commands.d.ts.map +1 -1
- package/dist/src/cmd/calendar/commands.js +18 -7
- package/dist/src/cmd/calendar/commands.js.map +1 -1
- package/dist/src/cmd/calendar/runtime.d.ts.map +1 -1
- package/dist/src/cmd/calendar/runtime.js +16 -7
- package/dist/src/cmd/calendar/runtime.js.map +1 -1
- package/dist/src/cmd/contacts/commands.d.ts +3 -2
- package/dist/src/cmd/contacts/commands.d.ts.map +1 -1
- package/dist/src/cmd/contacts/commands.js +25 -8
- package/dist/src/cmd/contacts/commands.js.map +1 -1
- package/dist/src/cmd/contacts/runtime.d.ts.map +1 -1
- package/dist/src/cmd/contacts/runtime.js +18 -8
- package/dist/src/cmd/contacts/runtime.js.map +1 -1
- package/dist/src/cmd/drive/commands.d.ts +4 -3
- package/dist/src/cmd/drive/commands.d.ts.map +1 -1
- package/dist/src/cmd/drive/commands.js +29 -10
- package/dist/src/cmd/drive/commands.js.map +1 -1
- package/dist/src/cmd/drive/runtime.d.ts.map +1 -1
- package/dist/src/cmd/drive/runtime.js +40 -20
- package/dist/src/cmd/drive/runtime.js.map +1 -1
- package/dist/src/cmd/gmail/commands.d.ts +7 -2
- package/dist/src/cmd/gmail/commands.d.ts.map +1 -1
- package/dist/src/cmd/gmail/commands.js +83 -11
- package/dist/src/cmd/gmail/commands.js.map +1 -1
- package/dist/src/cmd/gmail/runtime.d.ts.map +1 -1
- package/dist/src/cmd/gmail/runtime.js +61 -12
- package/dist/src/cmd/gmail/runtime.js.map +1 -1
- package/dist/src/cmd/workspace/commands.d.ts +4 -3
- package/dist/src/cmd/workspace/commands.d.ts.map +1 -1
- package/dist/src/cmd/workspace/commands.js +46 -12
- package/dist/src/cmd/workspace/commands.js.map +1 -1
- package/dist/src/cmd/workspace/runtime.d.ts.map +1 -1
- package/dist/src/cmd/workspace/runtime.js +72 -24
- package/dist/src/cmd/workspace/runtime.js.map +1 -1
- package/dist/src/types/pagination.d.ts +20 -0
- package/dist/src/types/pagination.d.ts.map +1 -0
- package/dist/src/types/pagination.js +2 -0
- package/dist/src/types/pagination.js.map +1 -0
- package/dist/test/cmd/calendar/commands.test.js +98 -6
- package/dist/test/cmd/calendar/commands.test.js.map +1 -1
- package/dist/test/cmd/contacts/commands.test.js +67 -3
- package/dist/test/cmd/contacts/commands.test.js.map +1 -1
- package/dist/test/cmd/drive/commands.test.js +97 -6
- package/dist/test/cmd/drive/commands.test.js.map +1 -1
- package/dist/test/cmd/gmail/commands.test.js +89 -8
- package/dist/test/cmd/gmail/commands.test.js.map +1 -1
- package/dist/test/cmd/workspace/commands.test.js +298 -10
- package/dist/test/cmd/workspace/commands.test.js.map +1 -1
- package/dist/test/types/pagination.test.d.ts +2 -0
- package/dist/test/types/pagination.test.d.ts.map +1 -0
- package/dist/test/types/pagination.test.js +31 -0
- package/dist/test/types/pagination.test.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
[](https://nodejs.org)
|
|
11
11
|
[](https://github.com/ejpespa/gtypee/actions/workflows/ci.yml)
|
|
12
12
|
[](https://github.com/ejpespa/gtypee/actions/workflows/release.yml)
|
|
13
|
+
|
|
14
|
+
**[📚 Documentation](https://gtypee.ejpespa.dev)** • **[🐛 Report Bug](https://github.com/ejpespa/gtypee/issues)** • **[✨ Request Feature](https://github.com/ejpespa/gtypee/issues)**
|
|
13
15
|
</div>
|
|
14
16
|
|
|
15
17
|
---
|
|
@@ -1148,6 +1150,60 @@ gtypee workspace user list --json | jq '.[] | select(.suspended == false) | .pri
|
|
|
1148
1150
|
|
|
1149
1151
|
---
|
|
1150
1152
|
|
|
1153
|
+
## Pagination
|
|
1154
|
+
|
|
1155
|
+
All list commands support pagination to handle large datasets efficiently:
|
|
1156
|
+
|
|
1157
|
+
```bash
|
|
1158
|
+
# List 25 files per page
|
|
1159
|
+
gtypee drive ls --page-size 25
|
|
1160
|
+
|
|
1161
|
+
# Get the next page using a token from previous response
|
|
1162
|
+
gtypee drive ls --page-size 25 --page-token "TOKEN_FROM_PREVIOUS_RESPONSE"
|
|
1163
|
+
|
|
1164
|
+
# Gmail pagination
|
|
1165
|
+
gtypee gmail list --page-size 50
|
|
1166
|
+
|
|
1167
|
+
# Calendar events pagination
|
|
1168
|
+
gtypee calendar events --page-size 100
|
|
1169
|
+
|
|
1170
|
+
# Workspace users pagination
|
|
1171
|
+
gtypee workspace user list --page-size 200
|
|
1172
|
+
```
|
|
1173
|
+
|
|
1174
|
+
### Getting Page Tokens
|
|
1175
|
+
|
|
1176
|
+
Use `--json` mode to see the `nextPageToken` in responses:
|
|
1177
|
+
|
|
1178
|
+
```bash
|
|
1179
|
+
# First page - get token from response
|
|
1180
|
+
gtypee drive ls --page-size 10 --json
|
|
1181
|
+
# Output: { "items": [...], "nextPageToken": "abc123..." }
|
|
1182
|
+
|
|
1183
|
+
# Use token for next page
|
|
1184
|
+
gtypee drive ls --page-size 10 --page-token "abc123..." --json
|
|
1185
|
+
```
|
|
1186
|
+
|
|
1187
|
+
### Pagination Options
|
|
1188
|
+
|
|
1189
|
+
| Option | Description |
|
|
1190
|
+
|--------|-------------|
|
|
1191
|
+
| `--page-size <number>` | Maximum results per page (default varies by service) |
|
|
1192
|
+
| `--page-token <token>` | Token from previous response to get next page |
|
|
1193
|
+
|
|
1194
|
+
### Default Page Sizes
|
|
1195
|
+
|
|
1196
|
+
| Service | Command | Default |
|
|
1197
|
+
|---------|---------|---------|
|
|
1198
|
+
| Drive | `ls`, `search` | 100 |
|
|
1199
|
+
| Gmail | `list` | 50 |
|
|
1200
|
+
| Gmail | `draft list`, `thread list` | 100 |
|
|
1201
|
+
| Calendar | `events` | 250 |
|
|
1202
|
+
| Contacts | `list` | 100 |
|
|
1203
|
+
| Workspace | `user list`, `group list`, `device list` | 500 |
|
|
1204
|
+
|
|
1205
|
+
---
|
|
1206
|
+
|
|
1151
1207
|
## Configuration
|
|
1152
1208
|
|
|
1153
1209
|
### Config File Location
|
|
@@ -1418,6 +1474,15 @@ alias failed-logins='twa workspace report logins --days 1 --json | jq ".[] | sel
|
|
|
1418
1474
|
alias recent-admin-actions='twa workspace report admin --days 1 --json | jq ".[].action" | sort | uniq -c'
|
|
1419
1475
|
```
|
|
1420
1476
|
|
|
1477
|
+
## Acknowledgements
|
|
1478
|
+
|
|
1479
|
+
This project was inspired by these excellent Google CLI tools:
|
|
1480
|
+
|
|
1481
|
+
- [gogcli](https://github.com/steipete/gogcli) - Google CLI by steipete
|
|
1482
|
+
- [gmcli](https://github.com/badlogic/gmcli) - Gmail CLI by badlogic
|
|
1483
|
+
- [gccli](https://github.com/badlogic/gccli) - Google Calendar CLI by badlogic
|
|
1484
|
+
- [gdcli](https://github.com/badlogic/gdcli) - Google Drive CLI by badlogic
|
|
1485
|
+
|
|
1421
1486
|
## License
|
|
1422
1487
|
|
|
1423
1488
|
ISC
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
2
|
import type { OutputMode } from "../../outfmt/outfmt.js";
|
|
3
3
|
import { type CalendarResponse } from "../../googleapi/calendar.js";
|
|
4
|
+
import type { PaginatedResult, PaginationOptions } from "../../types/pagination.js";
|
|
4
5
|
export type CalendarEventSummary = {
|
|
5
6
|
id: string;
|
|
6
7
|
summary: string;
|
|
@@ -39,7 +40,7 @@ export type CalendarCommandDeps = {
|
|
|
39
40
|
listEvents?: (query: {
|
|
40
41
|
from?: string;
|
|
41
42
|
to?: string;
|
|
42
|
-
}) => Promise<CalendarEventSummary
|
|
43
|
+
}, options?: PaginationOptions) => Promise<PaginatedResult<CalendarEventSummary>>;
|
|
43
44
|
createEvent?: (input: {
|
|
44
45
|
summary: string;
|
|
45
46
|
start: string;
|
|
@@ -53,6 +54,6 @@ export type CalendarCommandDeps = {
|
|
|
53
54
|
}) => Promise<CalendarConflict[]>;
|
|
54
55
|
};
|
|
55
56
|
export declare function formatCalendarConflicts(conflicts: CalendarConflict[], mode: OutputMode): string;
|
|
56
|
-
export declare function formatCalendarEvents(
|
|
57
|
+
export declare function formatCalendarEvents(result: PaginatedResult<CalendarEventSummary>, mode: OutputMode): string;
|
|
57
58
|
export declare function registerCalendarCommands(calendarCommand: Command, deps?: CalendarCommandDeps): void;
|
|
58
59
|
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../src/cmd/calendar/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../src/cmd/calendar/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/F,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEpF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,gBAAgB,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,KAAK,OAAO,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACpI,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACxG,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC5E,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC/E,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;CACxF,CAAC;AAUF,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAc/F;AAUD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAkB5G;AAED,wBAAgB,wBAAwB,CAAC,eAAe,EAAE,OAAO,EAAE,IAAI,GAAE,mBAAwB,GAAG,IAAI,CA4IvG"}
|
|
@@ -2,7 +2,7 @@ import { normalizeCalendarResponse } from "../../googleapi/calendar.js";
|
|
|
2
2
|
import { toCliApiErrorMessage } from "../../googleapi/errors.js";
|
|
3
3
|
import { buildExecutionContext } from "../execution-context.js";
|
|
4
4
|
const defaultDeps = {
|
|
5
|
-
listEvents: async () => [],
|
|
5
|
+
listEvents: async () => ({ items: [] }),
|
|
6
6
|
createEvent: async () => ({ id: "", created: false }),
|
|
7
7
|
updateEvent: async (input) => ({ id: input.id, updated: false }),
|
|
8
8
|
respondEvent: async (input) => ({ id: input.id, response: input.response, applied: false }),
|
|
@@ -29,17 +29,21 @@ async function runWithStableApiError(service, call) {
|
|
|
29
29
|
throw new Error(toCliApiErrorMessage(service, error), { cause: error });
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
export function formatCalendarEvents(
|
|
32
|
+
export function formatCalendarEvents(result, mode) {
|
|
33
33
|
if (mode === "json") {
|
|
34
|
-
return JSON.stringify(
|
|
34
|
+
return JSON.stringify(result, null, 2);
|
|
35
35
|
}
|
|
36
|
-
if (
|
|
36
|
+
if (result.items.length === 0) {
|
|
37
37
|
return "No events found";
|
|
38
38
|
}
|
|
39
39
|
const lines = ["ID\tSTART\tSUMMARY"];
|
|
40
|
-
for (const event of
|
|
40
|
+
for (const event of result.items) {
|
|
41
41
|
lines.push(`${event.id}\t${event.start}\t${event.summary}`);
|
|
42
42
|
}
|
|
43
|
+
if (result.nextPageToken) {
|
|
44
|
+
lines.push("---");
|
|
45
|
+
lines.push(`Next page token: ${result.nextPageToken}`);
|
|
46
|
+
}
|
|
43
47
|
return lines.join("\n");
|
|
44
48
|
}
|
|
45
49
|
export function registerCalendarCommands(calendarCommand, deps = {}) {
|
|
@@ -53,6 +57,8 @@ export function registerCalendarCommands(calendarCommand, deps = {}) {
|
|
|
53
57
|
.description("List calendar events")
|
|
54
58
|
.option("--from <datetime>", "Start of search window")
|
|
55
59
|
.option("--to <datetime>", "End of search window")
|
|
60
|
+
.option("--page-size <number>", "Number of events per page", parseInt)
|
|
61
|
+
.option("--page-token <token>", "Token for the next page")
|
|
56
62
|
.action(async function actionEvents() {
|
|
57
63
|
const rootOptions = this.optsWithGlobals();
|
|
58
64
|
const ctx = buildExecutionContext(rootOptions);
|
|
@@ -64,8 +70,13 @@ export function registerCalendarCommands(calendarCommand, deps = {}) {
|
|
|
64
70
|
if (opts.to !== undefined) {
|
|
65
71
|
query.to = opts.to;
|
|
66
72
|
}
|
|
67
|
-
const
|
|
68
|
-
|
|
73
|
+
const paginationOpts = {};
|
|
74
|
+
if (opts.pageSize !== undefined)
|
|
75
|
+
paginationOpts.pageSize = opts.pageSize;
|
|
76
|
+
if (opts.pageToken !== undefined)
|
|
77
|
+
paginationOpts.pageToken = opts.pageToken;
|
|
78
|
+
const result = await runWithStableApiError("calendar", () => resolvedDeps.listEvents(query, paginationOpts));
|
|
79
|
+
process.stdout.write(`${formatCalendarEvents(result, ctx.output.mode)}\n`);
|
|
69
80
|
});
|
|
70
81
|
calendarCommand
|
|
71
82
|
.command("create")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../src/cmd/calendar/commands.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAyB,MAAM,6BAA6B,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAoB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../src/cmd/calendar/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/cmd/calendar/runtime.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/cmd/calendar/runtime.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAI7F,OAAO,KAAK,EACV,mBAAmB,EAGpB,MAAM,eAAe,CAAC;AAevB,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,qBAAqB,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CA2MtG"}
|
|
@@ -16,15 +16,18 @@ function toResponseStatus(response) {
|
|
|
16
16
|
export function buildCalendarCommandDeps(options) {
|
|
17
17
|
const runtime = new ServiceRuntime(options);
|
|
18
18
|
return {
|
|
19
|
-
listEvents: async (query) => {
|
|
19
|
+
listEvents: async (query, options) => {
|
|
20
20
|
const auth = await runtime.getClient(scopes("calendar"));
|
|
21
21
|
const calendar = google.calendar({ version: "v3", auth });
|
|
22
22
|
const params = {
|
|
23
23
|
calendarId: "primary",
|
|
24
24
|
singleEvents: true,
|
|
25
25
|
orderBy: "startTime",
|
|
26
|
-
maxResults: 250,
|
|
26
|
+
maxResults: options?.pageSize ?? 250,
|
|
27
27
|
};
|
|
28
|
+
if (options?.pageToken !== undefined) {
|
|
29
|
+
params.pageToken = options.pageToken;
|
|
30
|
+
}
|
|
28
31
|
if (query.from !== undefined) {
|
|
29
32
|
params.timeMin = query.from;
|
|
30
33
|
}
|
|
@@ -33,11 +36,17 @@ export function buildCalendarCommandDeps(options) {
|
|
|
33
36
|
}
|
|
34
37
|
const response = await calendar.events.list(params);
|
|
35
38
|
const items = response.data.items ?? [];
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
const result = {
|
|
40
|
+
items: items.map((event) => ({
|
|
41
|
+
id: event.id ?? "",
|
|
42
|
+
summary: event.summary ?? "(no title)",
|
|
43
|
+
start: event.start?.dateTime ?? event.start?.date ?? "",
|
|
44
|
+
})),
|
|
45
|
+
};
|
|
46
|
+
if (response.data.nextPageToken) {
|
|
47
|
+
result.nextPageToken = response.data.nextPageToken;
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
41
50
|
},
|
|
42
51
|
createEvent: async (input) => {
|
|
43
52
|
const auth = await runtime.getClient(scopes("calendar"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/cmd/calendar/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,cAAc,EAA8B,MAAM,iCAAiC,CAAC;AAC7F,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/cmd/calendar/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
2
|
import type { OutputMode } from "../../outfmt/outfmt.js";
|
|
3
|
+
import type { PaginatedResult, PaginationOptions } from "../../types/pagination.js";
|
|
3
4
|
export type ContactSummary = {
|
|
4
5
|
resourceName: string;
|
|
5
6
|
email: string;
|
|
6
7
|
};
|
|
7
8
|
export type ContactsCommandDeps = {
|
|
8
|
-
listContacts?: () => Promise<ContactSummary
|
|
9
|
+
listContacts?: (options?: PaginationOptions) => Promise<PaginatedResult<ContactSummary>>;
|
|
9
10
|
searchContacts?: (query: string) => Promise<ContactSummary[]>;
|
|
10
11
|
getContact?: (resourceName: string) => Promise<ContactSummary>;
|
|
11
12
|
updateContact?: (resourceName: string, email: string) => Promise<{
|
|
@@ -13,6 +14,6 @@ export type ContactsCommandDeps = {
|
|
|
13
14
|
updated: boolean;
|
|
14
15
|
}>;
|
|
15
16
|
};
|
|
16
|
-
export declare function formatContactsList(
|
|
17
|
+
export declare function formatContactsList(result: PaginatedResult<ContactSummary>, mode: OutputMode): string;
|
|
17
18
|
export declare function registerContactsCommands(contactsCommand: Command, deps?: ContactsCommandDeps): void;
|
|
18
19
|
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../src/cmd/contacts/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../src/cmd/contacts/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEpF,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,iBAAiB,KAAK,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC;IACzF,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC9D,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/D,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC9G,CAAC;AAqBF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAcpG;AAED,wBAAgB,wBAAwB,CAAC,eAAe,EAAE,OAAO,EAAE,IAAI,GAAE,mBAAwB,GAAG,IAAI,CAgEvG"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { toCliApiErrorMessage } from "../../googleapi/errors.js";
|
|
2
2
|
import { buildExecutionContext } from "../execution-context.js";
|
|
3
3
|
const defaultDeps = {
|
|
4
|
-
listContacts: async () => [],
|
|
4
|
+
listContacts: async () => ({ items: [] }),
|
|
5
5
|
searchContacts: async () => [],
|
|
6
6
|
getContact: async (resourceName) => ({ resourceName, email: "" }),
|
|
7
7
|
updateContact: async (resourceName) => ({ resourceName, updated: false }),
|
|
@@ -14,14 +14,23 @@ async function runWithStableApiError(service, call) {
|
|
|
14
14
|
throw new Error(toCliApiErrorMessage(service, error), { cause: error });
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
-
|
|
17
|
+
function asPaginatedResult(items) {
|
|
18
|
+
return { items };
|
|
19
|
+
}
|
|
20
|
+
export function formatContactsList(result, mode) {
|
|
18
21
|
if (mode === "json") {
|
|
19
|
-
return JSON.stringify(
|
|
22
|
+
return JSON.stringify(result, null, 2);
|
|
20
23
|
}
|
|
24
|
+
const contacts = result.items;
|
|
21
25
|
if (contacts.length === 0) {
|
|
22
26
|
return "No contacts found";
|
|
23
27
|
}
|
|
24
|
-
|
|
28
|
+
const lines = contacts.map((contact) => `${contact.resourceName}\t${contact.email}`);
|
|
29
|
+
if (result.nextPageToken) {
|
|
30
|
+
lines.push("---");
|
|
31
|
+
lines.push(`Next page token: ${result.nextPageToken}`);
|
|
32
|
+
}
|
|
33
|
+
return lines.join("\n");
|
|
25
34
|
}
|
|
26
35
|
export function registerContactsCommands(contactsCommand, deps = {}) {
|
|
27
36
|
const resolvedDeps = {
|
|
@@ -31,11 +40,19 @@ export function registerContactsCommands(contactsCommand, deps = {}) {
|
|
|
31
40
|
contactsCommand
|
|
32
41
|
.command("list")
|
|
33
42
|
.description("List contacts")
|
|
43
|
+
.option("--page-size <number>", "Number of contacts per page", parseInt)
|
|
44
|
+
.option("--page-token <token>", "Token for the next page")
|
|
34
45
|
.action(async function actionList() {
|
|
35
46
|
const rootOptions = this.optsWithGlobals();
|
|
36
47
|
const ctx = buildExecutionContext(rootOptions);
|
|
37
|
-
const
|
|
38
|
-
|
|
48
|
+
const opts = this.opts();
|
|
49
|
+
const paginationOpts = {};
|
|
50
|
+
if (opts.pageSize !== undefined)
|
|
51
|
+
paginationOpts.pageSize = opts.pageSize;
|
|
52
|
+
if (opts.pageToken !== undefined)
|
|
53
|
+
paginationOpts.pageToken = opts.pageToken;
|
|
54
|
+
const result = await runWithStableApiError("contacts", () => resolvedDeps.listContacts(paginationOpts));
|
|
55
|
+
process.stdout.write(`${formatContactsList(result, ctx.output.mode)}\n`);
|
|
39
56
|
});
|
|
40
57
|
contactsCommand
|
|
41
58
|
.command("search")
|
|
@@ -46,7 +63,7 @@ export function registerContactsCommands(contactsCommand, deps = {}) {
|
|
|
46
63
|
const ctx = buildExecutionContext(rootOptions);
|
|
47
64
|
const opts = this.opts();
|
|
48
65
|
const contacts = await runWithStableApiError("contacts", () => resolvedDeps.searchContacts(opts.query));
|
|
49
|
-
process.stdout.write(`${formatContactsList(contacts, ctx.output.mode)}\n`);
|
|
66
|
+
process.stdout.write(`${formatContactsList(asPaginatedResult(contacts), ctx.output.mode)}\n`);
|
|
50
67
|
});
|
|
51
68
|
contactsCommand
|
|
52
69
|
.command("get")
|
|
@@ -57,7 +74,7 @@ export function registerContactsCommands(contactsCommand, deps = {}) {
|
|
|
57
74
|
const ctx = buildExecutionContext(rootOptions);
|
|
58
75
|
const opts = this.opts();
|
|
59
76
|
const contact = await runWithStableApiError("contacts", () => resolvedDeps.getContact(opts.resource));
|
|
60
|
-
process.stdout.write(`${formatContactsList([contact], ctx.output.mode)}\n`);
|
|
77
|
+
process.stdout.write(`${formatContactsList(asPaginatedResult([contact]), ctx.output.mode)}\n`);
|
|
61
78
|
});
|
|
62
79
|
contactsCommand
|
|
63
80
|
.command("update")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../src/cmd/contacts/commands.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAoB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../src/cmd/contacts/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/cmd/contacts/runtime.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/cmd/contacts/runtime.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAG7F,OAAO,KAAK,EAAE,mBAAmB,EAAkB,MAAM,eAAe,CAAC;AAEzE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,qBAAqB,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAsFtG"}
|
|
@@ -4,19 +4,29 @@ import { scopes } from "../../googleauth/service.js";
|
|
|
4
4
|
export function buildContactsCommandDeps(options) {
|
|
5
5
|
const runtime = new ServiceRuntime(options);
|
|
6
6
|
return {
|
|
7
|
-
listContacts: async () => {
|
|
7
|
+
listContacts: async (options) => {
|
|
8
8
|
const auth = await runtime.getClient(scopes("contacts"));
|
|
9
9
|
const people = google.people({ version: "v1", auth });
|
|
10
|
-
const
|
|
10
|
+
const params = {
|
|
11
11
|
resourceName: "people/me",
|
|
12
12
|
personFields: "emailAddresses",
|
|
13
|
-
pageSize: 100,
|
|
14
|
-
}
|
|
13
|
+
pageSize: options?.pageSize ?? 100,
|
|
14
|
+
};
|
|
15
|
+
if (options?.pageToken !== undefined) {
|
|
16
|
+
params.pageToken = options.pageToken;
|
|
17
|
+
}
|
|
18
|
+
const response = await people.people.connections.list(params);
|
|
15
19
|
const connections = response.data.connections ?? [];
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
const result = {
|
|
21
|
+
items: connections.map((person) => ({
|
|
22
|
+
resourceName: person.resourceName ?? "",
|
|
23
|
+
email: person.emailAddresses?.[0]?.value ?? "",
|
|
24
|
+
})),
|
|
25
|
+
};
|
|
26
|
+
if (response.data.nextPageToken) {
|
|
27
|
+
result.nextPageToken = response.data.nextPageToken;
|
|
28
|
+
}
|
|
29
|
+
return result;
|
|
20
30
|
},
|
|
21
31
|
searchContacts: async (query) => {
|
|
22
32
|
const auth = await runtime.getClient(scopes("contacts"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/cmd/contacts/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,cAAc,EAA8B,MAAM,iCAAiC,CAAC;AAC7F,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/cmd/contacts/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
2
|
import type { OutputMode } from "../../outfmt/outfmt.js";
|
|
3
|
+
import type { PaginatedResult, PaginationOptions } from "../../types/pagination.js";
|
|
3
4
|
export type DriveFileSummary = {
|
|
4
5
|
id: string;
|
|
5
6
|
name: string;
|
|
@@ -70,8 +71,8 @@ export type DriveRevision = {
|
|
|
70
71
|
keepForever: boolean;
|
|
71
72
|
};
|
|
72
73
|
export type DriveCommandDeps = {
|
|
73
|
-
listFiles?: () => Promise<DriveFileSummary
|
|
74
|
-
searchFiles?: (query: string) => Promise<DriveFileSummary
|
|
74
|
+
listFiles?: (options?: PaginationOptions) => Promise<PaginatedResult<DriveFileSummary>>;
|
|
75
|
+
searchFiles?: (query: string, options?: PaginationOptions) => Promise<PaginatedResult<DriveFileSummary>>;
|
|
75
76
|
downloadFile?: (id: string, out?: string) => Promise<{
|
|
76
77
|
id: string;
|
|
77
78
|
path: string;
|
|
@@ -102,7 +103,7 @@ export type DriveCommandDeps = {
|
|
|
102
103
|
applied: boolean;
|
|
103
104
|
}>;
|
|
104
105
|
};
|
|
105
|
-
export declare function formatDriveFiles(
|
|
106
|
+
export declare function formatDriveFiles(result: PaginatedResult<DriveFileSummary>, mode: OutputMode): string;
|
|
106
107
|
export declare function formatDriveFileInfo(file: DriveFileInfo, mode: OutputMode): string;
|
|
107
108
|
export declare function formatDrivePermissions(permissions: DrivePermission[], mode: OutputMode): string;
|
|
108
109
|
export declare function formatDriveComments(comments: DriveComment[], mode: OutputMode): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../src/cmd/drive/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../src/cmd/drive/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@ import { resolveDriveDownloadPath, normalizeDriveSearchQuery } from "../../googl
|
|
|
2
2
|
import { toCliApiErrorMessage } from "../../googleapi/errors.js";
|
|
3
3
|
import { buildExecutionContext } from "../execution-context.js";
|
|
4
4
|
const defaultDeps = {
|
|
5
|
-
listFiles: async () => [],
|
|
6
|
-
searchFiles: async () => [],
|
|
5
|
+
listFiles: async () => ({ items: [] }),
|
|
6
|
+
searchFiles: async () => ({ items: [] }),
|
|
7
7
|
downloadFile: async (id, out) => ({ id, path: out ?? "", downloaded: false }),
|
|
8
8
|
uploadFile: async (path) => ({ id: "", name: path, uploaded: false }),
|
|
9
9
|
deleteFile: async (id, permanent) => ({ id, deleted: false, permanent }),
|
|
@@ -33,17 +33,21 @@ async function runWithStableApiError(service, call) {
|
|
|
33
33
|
throw new Error(toCliApiErrorMessage(service, error), { cause: error });
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
export function formatDriveFiles(
|
|
36
|
+
export function formatDriveFiles(result, mode) {
|
|
37
37
|
if (mode === "json") {
|
|
38
|
-
return JSON.stringify(
|
|
38
|
+
return JSON.stringify(result, null, 2);
|
|
39
39
|
}
|
|
40
|
-
if (
|
|
40
|
+
if (result.items.length === 0) {
|
|
41
41
|
return "No files found";
|
|
42
42
|
}
|
|
43
43
|
const lines = ["ID\tNAME\tMIME"];
|
|
44
|
-
for (const file of
|
|
44
|
+
for (const file of result.items) {
|
|
45
45
|
lines.push(`${file.id}\t${file.name}\t${file.mimeType}`);
|
|
46
46
|
}
|
|
47
|
+
if (result.nextPageToken) {
|
|
48
|
+
lines.push("---");
|
|
49
|
+
lines.push(`Next page token: ${result.nextPageToken}`);
|
|
50
|
+
}
|
|
47
51
|
return lines.join("\n");
|
|
48
52
|
}
|
|
49
53
|
export function formatDriveFileInfo(file, mode) {
|
|
@@ -135,23 +139,38 @@ export function registerDriveCommands(driveCommand, deps = {}) {
|
|
|
135
139
|
.command("ls")
|
|
136
140
|
.aliases(["list"])
|
|
137
141
|
.description("List drive files")
|
|
142
|
+
.option("--page-size <number>", "Number of files per page", parseInt)
|
|
143
|
+
.option("--page-token <token>", "Token for the next page")
|
|
138
144
|
.action(async function actionLs() {
|
|
139
145
|
const rootOptions = this.optsWithGlobals();
|
|
140
146
|
const ctx = buildExecutionContext(rootOptions);
|
|
141
|
-
const
|
|
142
|
-
|
|
147
|
+
const opts = this.opts();
|
|
148
|
+
const paginationOpts = {};
|
|
149
|
+
if (opts.pageSize !== undefined)
|
|
150
|
+
paginationOpts.pageSize = opts.pageSize;
|
|
151
|
+
if (opts.pageToken !== undefined)
|
|
152
|
+
paginationOpts.pageToken = opts.pageToken;
|
|
153
|
+
const result = await runWithStableApiError("drive", () => resolvedDeps.listFiles(paginationOpts));
|
|
154
|
+
process.stdout.write(`${formatDriveFiles(result, ctx.output.mode)}\n`);
|
|
143
155
|
});
|
|
144
156
|
driveCommand
|
|
145
157
|
.command("search")
|
|
146
158
|
.aliases(["find"])
|
|
147
159
|
.description("Search drive files")
|
|
148
160
|
.requiredOption("--query <query>", "Drive search query")
|
|
161
|
+
.option("--page-size <number>", "Number of files per page", parseInt)
|
|
162
|
+
.option("--page-token <token>", "Token for the next page")
|
|
149
163
|
.action(async function actionSearch() {
|
|
150
164
|
const rootOptions = this.optsWithGlobals();
|
|
151
165
|
const ctx = buildExecutionContext(rootOptions);
|
|
152
166
|
const opts = this.opts();
|
|
153
|
-
const
|
|
154
|
-
|
|
167
|
+
const paginationOpts = {};
|
|
168
|
+
if (opts.pageSize !== undefined)
|
|
169
|
+
paginationOpts.pageSize = opts.pageSize;
|
|
170
|
+
if (opts.pageToken !== undefined)
|
|
171
|
+
paginationOpts.pageToken = opts.pageToken;
|
|
172
|
+
const result = await runWithStableApiError("drive", () => resolvedDeps.searchFiles(normalizeDriveSearchQuery(opts.query), paginationOpts));
|
|
173
|
+
process.stdout.write(`${formatDriveFiles(result, ctx.output.mode)}\n`);
|
|
155
174
|
});
|
|
156
175
|
driveCommand
|
|
157
176
|
.command("download")
|