@sendly/cli 3.13.1 → 3.15.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/dist/commands/teams/create.d.ts +12 -0
- package/dist/commands/teams/create.js +58 -0
- package/dist/commands/teams/current.d.ts +10 -0
- package/dist/commands/teams/current.js +33 -0
- package/dist/commands/teams/invite.d.ts +14 -0
- package/dist/commands/teams/invite.js +48 -0
- package/dist/commands/teams/list.d.ts +10 -0
- package/dist/commands/teams/list.js +71 -0
- package/dist/commands/teams/members.d.ts +10 -0
- package/dist/commands/teams/members.js +66 -0
- package/dist/commands/teams/switch.d.ts +13 -0
- package/dist/commands/teams/switch.js +86 -0
- package/dist/commands/whoami.js +7 -2
- package/dist/lib/api-client.js +5 -1
- package/dist/lib/config.d.ts +11 -0
- package/dist/lib/config.js +25 -1
- package/oclif.manifest.json +420 -148
- package/package.json +4 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class TeamsCreate extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
name: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
7
|
+
description: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
8
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
9
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
10
|
+
};
|
|
11
|
+
run(): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Flags } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
4
|
+
import { success, json, colors, isJsonMode, } from "../../lib/output.js";
|
|
5
|
+
import { setCurrentOrg } from "../../lib/config.js";
|
|
6
|
+
import { isCI } from "../../lib/config.js";
|
|
7
|
+
export default class TeamsCreate extends AuthenticatedCommand {
|
|
8
|
+
static description = "Create a new team";
|
|
9
|
+
static examples = [
|
|
10
|
+
'<%= config.bin %> teams create --name "Acme Corp"',
|
|
11
|
+
'<%= config.bin %> teams create --name "Acme Corp" --description "Our main team"',
|
|
12
|
+
];
|
|
13
|
+
static flags = {
|
|
14
|
+
...AuthenticatedCommand.baseFlags,
|
|
15
|
+
name: Flags.string({
|
|
16
|
+
char: "n",
|
|
17
|
+
description: "Team name",
|
|
18
|
+
required: true,
|
|
19
|
+
}),
|
|
20
|
+
description: Flags.string({
|
|
21
|
+
char: "d",
|
|
22
|
+
description: "Team description",
|
|
23
|
+
}),
|
|
24
|
+
};
|
|
25
|
+
async run() {
|
|
26
|
+
const { flags } = await this.parse(TeamsCreate);
|
|
27
|
+
const body = { name: flags.name };
|
|
28
|
+
if (flags.description)
|
|
29
|
+
body.description = flags.description;
|
|
30
|
+
const response = await apiClient.post("/api/organizations", body);
|
|
31
|
+
if (isJsonMode()) {
|
|
32
|
+
json(response);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
success("Team created", {
|
|
36
|
+
Name: response.name,
|
|
37
|
+
ID: colors.dim(response.id),
|
|
38
|
+
Slug: colors.dim(response.slug),
|
|
39
|
+
});
|
|
40
|
+
if (!isCI()) {
|
|
41
|
+
const { default: inquirer } = await import("inquirer");
|
|
42
|
+
const { switchNow } = await inquirer.prompt([
|
|
43
|
+
{
|
|
44
|
+
type: "confirm",
|
|
45
|
+
name: "switchNow",
|
|
46
|
+
message: "Switch to this team now?",
|
|
47
|
+
default: true,
|
|
48
|
+
},
|
|
49
|
+
]);
|
|
50
|
+
if (switchNow) {
|
|
51
|
+
setCurrentOrg(response.id, response.name, response.slug);
|
|
52
|
+
console.log();
|
|
53
|
+
success(`Switched to ${colors.primary(response.name)}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3RlYW1zL2NyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsT0FBTyxFQUNQLElBQUksRUFDSixNQUFNLEVBQ04sVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVUzQyxNQUFNLENBQUMsT0FBTyxPQUFPLFdBQVksU0FBUSxvQkFBb0I7SUFDM0QsTUFBTSxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQztJQUV6QyxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLG1EQUFtRDtRQUNuRCxpRkFBaUY7S0FDbEYsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLG9CQUFvQixDQUFDLFNBQVM7UUFDakMsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsV0FBVztZQUN4QixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7UUFDRixXQUFXLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN4QixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSxrQkFBa0I7U0FDaEMsQ0FBQztLQUNILENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFaEQsTUFBTSxJQUFJLEdBQTRCLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzRCxJQUFJLEtBQUssQ0FBQyxXQUFXO1lBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBRTVELE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FDbkMsb0JBQW9CLEVBQ3BCLElBQUksQ0FDTCxDQUFDO1FBRUYsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNmLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxDQUFDLGNBQWMsRUFBRTtZQUN0QixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7WUFDbkIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMzQixJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1NBQ2hDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ1osTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN2RCxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUMxQztvQkFDRSxJQUFJLEVBQUUsU0FBUztvQkFDZixJQUFJLEVBQUUsV0FBVztvQkFDakIsT0FBTyxFQUFFLDBCQUEwQjtvQkFDbkMsT0FBTyxFQUFFLElBQUk7aUJBQ2Q7YUFDRixDQUFDLENBQUM7WUFFSCxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN6RCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2QsT0FBTyxDQUFDLGVBQWUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7XG4gIHN1Y2Nlc3MsXG4gIGpzb24sXG4gIGNvbG9ycyxcbiAgaXNKc29uTW9kZSxcbn0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcbmltcG9ydCB7IHNldEN1cnJlbnRPcmcgfSBmcm9tIFwiLi4vLi4vbGliL2NvbmZpZy5qc1wiO1xuaW1wb3J0IHsgaXNDSSB9IGZyb20gXCIuLi8uLi9saWIvY29uZmlnLmpzXCI7XG5cbmludGVyZmFjZSBDcmVhdGVPcmdSZXNwb25zZSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgc2x1Zzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlYW1zQ3JlYXRlIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIkNyZWF0ZSBhIG5ldyB0ZWFtXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICc8JT0gY29uZmlnLmJpbiAlPiB0ZWFtcyBjcmVhdGUgLS1uYW1lIFwiQWNtZSBDb3JwXCInLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiB0ZWFtcyBjcmVhdGUgLS1uYW1lIFwiQWNtZSBDb3JwXCIgLS1kZXNjcmlwdGlvbiBcIk91ciBtYWluIHRlYW1cIicsXG4gIF07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgICBuYW1lOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJuXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUZWFtIG5hbWVcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICAgIGRlc2NyaXB0aW9uOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJkXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUZWFtIGRlc2NyaXB0aW9uXCIsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoVGVhbXNDcmVhdGUpO1xuXG4gICAgY29uc3QgYm9keTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7IG5hbWU6IGZsYWdzLm5hbWUgfTtcbiAgICBpZiAoZmxhZ3MuZGVzY3JpcHRpb24pIGJvZHkuZGVzY3JpcHRpb24gPSBmbGFncy5kZXNjcmlwdGlvbjtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpQ2xpZW50LnBvc3Q8Q3JlYXRlT3JnUmVzcG9uc2U+KFxuICAgICAgXCIvYXBpL29yZ2FuaXphdGlvbnNcIixcbiAgICAgIGJvZHksXG4gICAgKTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24ocmVzcG9uc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN1Y2Nlc3MoXCJUZWFtIGNyZWF0ZWRcIiwge1xuICAgICAgTmFtZTogcmVzcG9uc2UubmFtZSxcbiAgICAgIElEOiBjb2xvcnMuZGltKHJlc3BvbnNlLmlkKSxcbiAgICAgIFNsdWc6IGNvbG9ycy5kaW0ocmVzcG9uc2Uuc2x1ZyksXG4gICAgfSk7XG5cbiAgICBpZiAoIWlzQ0koKSkge1xuICAgICAgY29uc3QgeyBkZWZhdWx0OiBpbnF1aXJlciB9ID0gYXdhaXQgaW1wb3J0KFwiaW5xdWlyZXJcIik7XG4gICAgICBjb25zdCB7IHN3aXRjaE5vdyB9ID0gYXdhaXQgaW5xdWlyZXIucHJvbXB0KFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiY29uZmlybVwiLFxuICAgICAgICAgIG5hbWU6IFwic3dpdGNoTm93XCIsXG4gICAgICAgICAgbWVzc2FnZTogXCJTd2l0Y2ggdG8gdGhpcyB0ZWFtIG5vdz9cIixcbiAgICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSk7XG5cbiAgICAgIGlmIChzd2l0Y2hOb3cpIHtcbiAgICAgICAgc2V0Q3VycmVudE9yZyhyZXNwb25zZS5pZCwgcmVzcG9uc2UubmFtZSwgcmVzcG9uc2Uuc2x1Zyk7XG4gICAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICAgIHN1Y2Nlc3MoYFN3aXRjaGVkIHRvICR7Y29sb3JzLnByaW1hcnkocmVzcG9uc2UubmFtZSl9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class TeamsCurrent extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
7
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
8
|
+
};
|
|
9
|
+
run(): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
import { json, info, keyValue, colors, isJsonMode } from "../../lib/output.js";
|
|
3
|
+
import { getCurrentOrg } from "../../lib/config.js";
|
|
4
|
+
export default class TeamsCurrent extends AuthenticatedCommand {
|
|
5
|
+
static description = "Show the currently active team";
|
|
6
|
+
static examples = [
|
|
7
|
+
"<%= config.bin %> teams current",
|
|
8
|
+
"<%= config.bin %> teams current --json",
|
|
9
|
+
];
|
|
10
|
+
static flags = {
|
|
11
|
+
...AuthenticatedCommand.baseFlags,
|
|
12
|
+
};
|
|
13
|
+
async run() {
|
|
14
|
+
const org = getCurrentOrg();
|
|
15
|
+
if (isJsonMode()) {
|
|
16
|
+
json(org || { message: "No active team" });
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (!org) {
|
|
20
|
+
info("No active team set");
|
|
21
|
+
console.log();
|
|
22
|
+
console.log(` Run ${colors.code("sendly teams switch")} to select a team`);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
console.log();
|
|
26
|
+
keyValue({
|
|
27
|
+
Team: colors.primary(org.name),
|
|
28
|
+
ID: colors.dim(org.id),
|
|
29
|
+
...(org.slug ? { Slug: colors.dim(org.slug) } : {}),
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy90ZWFtcy9jdXJyZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXBELE1BQU0sQ0FBQyxPQUFPLE9BQU8sWUFBYSxTQUFRLG9CQUFvQjtJQUM1RCxNQUFNLENBQUMsV0FBVyxHQUFHLGdDQUFnQyxDQUFDO0lBRXRELE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsaUNBQWlDO1FBQ2pDLHdDQUF3QztLQUN6QyxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztLQUNsQyxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEdBQUcsR0FBRyxhQUFhLEVBQUUsQ0FBQztRQUU1QixJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDM0MsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUMzQixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxPQUFPLENBQUMsR0FBRyxDQUNULFNBQVMsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FDL0QsQ0FBQztZQUNGLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2QsUUFBUSxDQUFDO1lBQ1AsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUM5QixFQUFFLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RCLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDcEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGpzb24sIGluZm8sIGtleVZhbHVlLCBjb2xvcnMsIGlzSnNvbk1vZGUgfSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuaW1wb3J0IHsgZ2V0Q3VycmVudE9yZyB9IGZyb20gXCIuLi8uLi9saWIvY29uZmlnLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlYW1zQ3VycmVudCBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJTaG93IHRoZSBjdXJyZW50bHkgYWN0aXZlIHRlYW1cIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiB0ZWFtcyBjdXJyZW50XCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiB0ZWFtcyBjdXJyZW50IC0tanNvblwiLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG9yZyA9IGdldEN1cnJlbnRPcmcoKTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24ob3JnIHx8IHsgbWVzc2FnZTogXCJObyBhY3RpdmUgdGVhbVwiIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghb3JnKSB7XG4gICAgICBpbmZvKFwiTm8gYWN0aXZlIHRlYW0gc2V0XCIpO1xuICAgICAgY29uc29sZS5sb2coKTtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgICBSdW4gJHtjb2xvcnMuY29kZShcInNlbmRseSB0ZWFtcyBzd2l0Y2hcIil9IHRvIHNlbGVjdCBhIHRlYW1gLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygpO1xuICAgIGtleVZhbHVlKHtcbiAgICAgIFRlYW06IGNvbG9ycy5wcmltYXJ5KG9yZy5uYW1lKSxcbiAgICAgIElEOiBjb2xvcnMuZGltKG9yZy5pZCksXG4gICAgICAuLi4ob3JnLnNsdWcgPyB7IFNsdWc6IGNvbG9ycy5kaW0ob3JnLnNsdWcpIH0gOiB7fSksXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class TeamsInvite extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
email: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
role: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
10
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
11
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Args, Flags } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
4
|
+
import { success, json, colors, isJsonMode } from "../../lib/output.js";
|
|
5
|
+
import { getCurrentOrg } from "../../lib/config.js";
|
|
6
|
+
export default class TeamsInvite extends AuthenticatedCommand {
|
|
7
|
+
static description = "Invite a member to the current team";
|
|
8
|
+
static examples = [
|
|
9
|
+
"<%= config.bin %> teams invite user@example.com",
|
|
10
|
+
"<%= config.bin %> teams invite user@example.com --role admin",
|
|
11
|
+
];
|
|
12
|
+
static args = {
|
|
13
|
+
email: Args.string({
|
|
14
|
+
description: "Email address to invite",
|
|
15
|
+
required: true,
|
|
16
|
+
}),
|
|
17
|
+
};
|
|
18
|
+
static flags = {
|
|
19
|
+
...AuthenticatedCommand.baseFlags,
|
|
20
|
+
role: Flags.string({
|
|
21
|
+
char: "r",
|
|
22
|
+
description: "Role to assign (admin, member, viewer)",
|
|
23
|
+
options: ["admin", "member", "viewer"],
|
|
24
|
+
default: "member",
|
|
25
|
+
}),
|
|
26
|
+
};
|
|
27
|
+
async run() {
|
|
28
|
+
const { args, flags } = await this.parse(TeamsInvite);
|
|
29
|
+
const org = getCurrentOrg();
|
|
30
|
+
if (!org) {
|
|
31
|
+
this.error("No active team. Run 'sendly teams switch' to select one.");
|
|
32
|
+
}
|
|
33
|
+
const response = await apiClient.post(`/api/organizations/${org.id}/invitations`, {
|
|
34
|
+
email: args.email,
|
|
35
|
+
role: flags.role,
|
|
36
|
+
});
|
|
37
|
+
if (isJsonMode()) {
|
|
38
|
+
json(response);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
success(`Invitation sent to ${colors.primary(args.email)}`, {
|
|
42
|
+
Team: org.name,
|
|
43
|
+
Role: flags.role,
|
|
44
|
+
Expires: new Date(response.expiresAt).toLocaleDateString(),
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52aXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3RlYW1zL2ludml0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVdwRCxNQUFNLENBQUMsT0FBTyxPQUFPLFdBQVksU0FBUSxvQkFBb0I7SUFDM0QsTUFBTSxDQUFDLFdBQVcsR0FBRyxxQ0FBcUMsQ0FBQztJQUUzRCxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLGlEQUFpRDtRQUNqRCw4REFBOEQ7S0FDL0QsQ0FBQztJQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDWixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNqQixXQUFXLEVBQUUseUJBQXlCO1lBQ3RDLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztLQUNILENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO1FBQ2pDLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2pCLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLHdDQUF3QztZQUNyRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQztZQUN0QyxPQUFPLEVBQUUsUUFBUTtTQUNsQixDQUFDO0tBQ0gsQ0FBQztJQUVGLEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFdEQsTUFBTSxHQUFHLEdBQUcsYUFBYSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLEtBQUssQ0FDUiwwREFBMEQsQ0FDM0QsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQ25DLHNCQUFzQixHQUFHLENBQUMsRUFBRSxjQUFjLEVBQzFDO1lBQ0UsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtTQUNqQixDQUNGLENBQUM7UUFFRixJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2YsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLENBQUMsc0JBQXNCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDMUQsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1lBQ2QsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFLO1lBQ2pCLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsa0JBQWtCLEVBQUU7U0FDM0QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZ3MsIEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7IHN1Y2Nlc3MsIGpzb24sIGNvbG9ycywgaXNKc29uTW9kZSB9IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5pbXBvcnQgeyBnZXRDdXJyZW50T3JnIH0gZnJvbSBcIi4uLy4uL2xpYi9jb25maWcuanNcIjtcblxuaW50ZXJmYWNlIEludml0YXRpb25SZXNwb25zZSB7XG4gIGlkOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHJvbGU6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIGV4cGlyZXNBdDogc3RyaW5nO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVhbXNJbnZpdGUgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9IFwiSW52aXRlIGEgbWVtYmVyIHRvIHRoZSBjdXJyZW50IHRlYW1cIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiB0ZWFtcyBpbnZpdGUgdXNlckBleGFtcGxlLmNvbVwiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gdGVhbXMgaW52aXRlIHVzZXJAZXhhbXBsZS5jb20gLS1yb2xlIGFkbWluXCIsXG4gIF07XG5cbiAgc3RhdGljIGFyZ3MgPSB7XG4gICAgZW1haWw6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkVtYWlsIGFkZHJlc3MgdG8gaW52aXRlXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgfTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIHJvbGU6IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcInJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlJvbGUgdG8gYXNzaWduIChhZG1pbiwgbWVtYmVyLCB2aWV3ZXIpXCIsXG4gICAgICBvcHRpb25zOiBbXCJhZG1pblwiLCBcIm1lbWJlclwiLCBcInZpZXdlclwiXSxcbiAgICAgIGRlZmF1bHQ6IFwibWVtYmVyXCIsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncywgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoVGVhbXNJbnZpdGUpO1xuXG4gICAgY29uc3Qgb3JnID0gZ2V0Q3VycmVudE9yZygpO1xuICAgIGlmICghb3JnKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBcIk5vIGFjdGl2ZSB0ZWFtLiBSdW4gJ3NlbmRseSB0ZWFtcyBzd2l0Y2gnIHRvIHNlbGVjdCBvbmUuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpQ2xpZW50LnBvc3Q8SW52aXRhdGlvblJlc3BvbnNlPihcbiAgICAgIGAvYXBpL29yZ2FuaXphdGlvbnMvJHtvcmcuaWR9L2ludml0YXRpb25zYCxcbiAgICAgIHtcbiAgICAgICAgZW1haWw6IGFyZ3MuZW1haWwsXG4gICAgICAgIHJvbGU6IGZsYWdzLnJvbGUsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICBqc29uKHJlc3BvbnNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdWNjZXNzKGBJbnZpdGF0aW9uIHNlbnQgdG8gJHtjb2xvcnMucHJpbWFyeShhcmdzLmVtYWlsKX1gLCB7XG4gICAgICBUZWFtOiBvcmcubmFtZSxcbiAgICAgIFJvbGU6IGZsYWdzLnJvbGUhLFxuICAgICAgRXhwaXJlczogbmV3IERhdGUocmVzcG9uc2UuZXhwaXJlc0F0KS50b0xvY2FsZURhdGVTdHJpbmcoKSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class TeamsList extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
7
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
8
|
+
};
|
|
9
|
+
run(): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
3
|
+
import { table, json, info, colors, isJsonMode, formatRelativeTime, } from "../../lib/output.js";
|
|
4
|
+
import { getCurrentOrg } from "../../lib/config.js";
|
|
5
|
+
export default class TeamsList extends AuthenticatedCommand {
|
|
6
|
+
static description = "List your teams";
|
|
7
|
+
static examples = [
|
|
8
|
+
"<%= config.bin %> teams list",
|
|
9
|
+
"<%= config.bin %> teams list --json",
|
|
10
|
+
];
|
|
11
|
+
static flags = {
|
|
12
|
+
...AuthenticatedCommand.baseFlags,
|
|
13
|
+
};
|
|
14
|
+
async run() {
|
|
15
|
+
const orgs = await apiClient.get("/api/organizations");
|
|
16
|
+
if (isJsonMode()) {
|
|
17
|
+
json(orgs);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (orgs.length === 0) {
|
|
21
|
+
info("No teams found");
|
|
22
|
+
console.log();
|
|
23
|
+
console.log(` Create one with ${colors.code("sendly teams create --name \"My Team\"")}`);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const currentOrg = getCurrentOrg();
|
|
27
|
+
console.log();
|
|
28
|
+
table(orgs.map((org) => ({
|
|
29
|
+
...org,
|
|
30
|
+
isCurrent: currentOrg?.id === org.id,
|
|
31
|
+
})), [
|
|
32
|
+
{
|
|
33
|
+
header: "",
|
|
34
|
+
key: "isCurrent",
|
|
35
|
+
width: 3,
|
|
36
|
+
formatter: (v) => (v ? colors.primary("→") : " "),
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
header: "Name",
|
|
40
|
+
key: "name",
|
|
41
|
+
width: 24,
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
header: "Role",
|
|
45
|
+
key: "role",
|
|
46
|
+
width: 10,
|
|
47
|
+
formatter: (v) => {
|
|
48
|
+
const role = String(v);
|
|
49
|
+
if (role === "owner")
|
|
50
|
+
return colors.warning(role);
|
|
51
|
+
if (role === "admin")
|
|
52
|
+
return colors.info(role);
|
|
53
|
+
return role;
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
header: "Members",
|
|
58
|
+
key: "memberCount",
|
|
59
|
+
width: 10,
|
|
60
|
+
formatter: (v) => (v != null ? String(v) : colors.dim("-")),
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
header: "Created",
|
|
64
|
+
key: "createdAt",
|
|
65
|
+
width: 14,
|
|
66
|
+
formatter: (v) => (v ? formatRelativeTime(String(v)) : colors.dim("-")),
|
|
67
|
+
},
|
|
68
|
+
]);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy90ZWFtcy9saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsS0FBSyxFQUNMLElBQUksRUFDSixJQUFJLEVBQ0osTUFBTSxFQUNOLFVBQVUsRUFDVixrQkFBa0IsR0FDbkIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFhcEQsTUFBTSxDQUFDLE9BQU8sT0FBTyxTQUFVLFNBQVEsb0JBQW9CO0lBQ3pELE1BQU0sQ0FBQyxXQUFXLEdBQUcsaUJBQWlCLENBQUM7SUFFdkMsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQiw4QkFBOEI7UUFDOUIscUNBQXFDO0tBQ3RDLENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO0tBQ2xDLENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sSUFBSSxHQUFHLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FBaUIsb0JBQW9CLENBQUMsQ0FBQztRQUV2RSxJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ1gsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDdkIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FDVCxxQkFBcUIsTUFBTSxDQUFDLElBQUksQ0FBQyx3Q0FBd0MsQ0FBQyxFQUFFLENBQzdFLENBQUM7WUFDRixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLGFBQWEsRUFBRSxDQUFDO1FBRW5DLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVkLEtBQUssQ0FDSCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pCLEdBQUcsR0FBRztZQUNOLFNBQVMsRUFBRSxVQUFVLEVBQUUsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1NBQ3JDLENBQUMsQ0FBQyxFQUNIO1lBQ0U7Z0JBQ0UsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsR0FBRyxFQUFFLFdBQVc7Z0JBQ2hCLEtBQUssRUFBRSxDQUFDO2dCQUNSLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQzthQUNsRDtZQUNEO2dCQUNFLE1BQU0sRUFBRSxNQUFNO2dCQUNkLEdBQUcsRUFBRSxNQUFNO2dCQUNYLEtBQUssRUFBRSxFQUFFO2FBQ1Y7WUFDRDtnQkFDRSxNQUFNLEVBQUUsTUFBTTtnQkFDZCxHQUFHLEVBQUUsTUFBTTtnQkFDWCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDZixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZCLElBQUksSUFBSSxLQUFLLE9BQU87d0JBQUUsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNsRCxJQUFJLElBQUksS0FBSyxPQUFPO3dCQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDL0MsT0FBTyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQzthQUNGO1lBQ0Q7Z0JBQ0UsTUFBTSxFQUFFLFNBQVM7Z0JBQ2pCLEdBQUcsRUFBRSxhQUFhO2dCQUNsQixLQUFLLEVBQUUsRUFBRTtnQkFDVCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzVEO1lBQ0Q7Z0JBQ0UsTUFBTSxFQUFFLFNBQVM7Z0JBQ2pCLEdBQUcsRUFBRSxXQUFXO2dCQUNoQixLQUFLLEVBQUUsRUFBRTtnQkFDVCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN4RTtTQUNGLENBQ0YsQ0FBQztJQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7XG4gIHRhYmxlLFxuICBqc29uLFxuICBpbmZvLFxuICBjb2xvcnMsXG4gIGlzSnNvbk1vZGUsXG4gIGZvcm1hdFJlbGF0aXZlVGltZSxcbn0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcbmltcG9ydCB7IGdldEN1cnJlbnRPcmcgfSBmcm9tIFwiLi4vLi4vbGliL2NvbmZpZy5qc1wiO1xuXG5pbnRlcmZhY2UgT3JnYW5pemF0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBzbHVnOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBpc1BlcnNvbmFsOiBib29sZWFuO1xuICByb2xlOiBzdHJpbmc7XG4gIG1lbWJlckNvdW50PzogbnVtYmVyO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVhbXNMaXN0IGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIkxpc3QgeW91ciB0ZWFtc1wiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICBcIjwlPSBjb25maWcuYmluICU+IHRlYW1zIGxpc3RcIixcbiAgICBcIjwlPSBjb25maWcuYmluICU+IHRlYW1zIGxpc3QgLS1qc29uXCIsXG4gIF07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb3JncyA9IGF3YWl0IGFwaUNsaWVudC5nZXQ8T3JnYW5pemF0aW9uW10+KFwiL2FwaS9vcmdhbml6YXRpb25zXCIpO1xuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihvcmdzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAob3Jncy5sZW5ndGggPT09IDApIHtcbiAgICAgIGluZm8oXCJObyB0ZWFtcyBmb3VuZFwiKTtcbiAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYCAgQ3JlYXRlIG9uZSB3aXRoICR7Y29sb3JzLmNvZGUoXCJzZW5kbHkgdGVhbXMgY3JlYXRlIC0tbmFtZSBcXFwiTXkgVGVhbVxcXCJcIil9YCxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudE9yZyA9IGdldEN1cnJlbnRPcmcoKTtcblxuICAgIGNvbnNvbGUubG9nKCk7XG5cbiAgICB0YWJsZShcbiAgICAgIG9yZ3MubWFwKChvcmcpID0+ICh7XG4gICAgICAgIC4uLm9yZyxcbiAgICAgICAgaXNDdXJyZW50OiBjdXJyZW50T3JnPy5pZCA9PT0gb3JnLmlkLFxuICAgICAgfSkpLFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyOiBcIlwiLFxuICAgICAgICAgIGtleTogXCJpc0N1cnJlbnRcIixcbiAgICAgICAgICB3aWR0aDogMyxcbiAgICAgICAgICBmb3JtYXR0ZXI6ICh2KSA9PiAodiA/IGNvbG9ycy5wcmltYXJ5KFwi4oaSXCIpIDogXCIgXCIpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyOiBcIk5hbWVcIixcbiAgICAgICAgICBrZXk6IFwibmFtZVwiLFxuICAgICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcjogXCJSb2xlXCIsXG4gICAgICAgICAga2V5OiBcInJvbGVcIixcbiAgICAgICAgICB3aWR0aDogMTAsXG4gICAgICAgICAgZm9ybWF0dGVyOiAodikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgcm9sZSA9IFN0cmluZyh2KTtcbiAgICAgICAgICAgIGlmIChyb2xlID09PSBcIm93bmVyXCIpIHJldHVybiBjb2xvcnMud2FybmluZyhyb2xlKTtcbiAgICAgICAgICAgIGlmIChyb2xlID09PSBcImFkbWluXCIpIHJldHVybiBjb2xvcnMuaW5mbyhyb2xlKTtcbiAgICAgICAgICAgIHJldHVybiByb2xlO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXI6IFwiTWVtYmVyc1wiLFxuICAgICAgICAgIGtleTogXCJtZW1iZXJDb3VudFwiLFxuICAgICAgICAgIHdpZHRoOiAxMCxcbiAgICAgICAgICBmb3JtYXR0ZXI6ICh2KSA9PiAodiAhPSBudWxsID8gU3RyaW5nKHYpIDogY29sb3JzLmRpbShcIi1cIikpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyOiBcIkNyZWF0ZWRcIixcbiAgICAgICAgICBrZXk6IFwiY3JlYXRlZEF0XCIsXG4gICAgICAgICAgd2lkdGg6IDE0LFxuICAgICAgICAgIGZvcm1hdHRlcjogKHYpID0+ICh2ID8gZm9ybWF0UmVsYXRpdmVUaW1lKFN0cmluZyh2KSkgOiBjb2xvcnMuZGltKFwiLVwiKSksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class TeamsMembers extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
7
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
8
|
+
};
|
|
9
|
+
run(): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
3
|
+
import { table, json, info, colors, isJsonMode, formatRelativeTime, } from "../../lib/output.js";
|
|
4
|
+
import { getCurrentOrg } from "../../lib/config.js";
|
|
5
|
+
export default class TeamsMembers extends AuthenticatedCommand {
|
|
6
|
+
static description = "List members of the current team";
|
|
7
|
+
static examples = [
|
|
8
|
+
"<%= config.bin %> teams members",
|
|
9
|
+
"<%= config.bin %> teams members --json",
|
|
10
|
+
];
|
|
11
|
+
static flags = {
|
|
12
|
+
...AuthenticatedCommand.baseFlags,
|
|
13
|
+
};
|
|
14
|
+
async run() {
|
|
15
|
+
const org = getCurrentOrg();
|
|
16
|
+
if (!org) {
|
|
17
|
+
this.error("No active team. Run 'sendly teams switch' to select one.");
|
|
18
|
+
}
|
|
19
|
+
const members = await apiClient.get(`/api/organizations/${org.id}/members`);
|
|
20
|
+
if (isJsonMode()) {
|
|
21
|
+
json(members);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (members.length === 0) {
|
|
25
|
+
info("No members found");
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
console.log();
|
|
29
|
+
info(`${colors.primary(org.name)} — ${members.length} member${members.length === 1 ? "" : "s"}`);
|
|
30
|
+
console.log();
|
|
31
|
+
table(members, [
|
|
32
|
+
{
|
|
33
|
+
header: "Name",
|
|
34
|
+
key: "userName",
|
|
35
|
+
width: 22,
|
|
36
|
+
formatter: (v) => String(v || "Unknown"),
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
header: "Email",
|
|
40
|
+
key: "userEmail",
|
|
41
|
+
width: 28,
|
|
42
|
+
formatter: (v) => (v ? colors.dim(String(v)) : colors.dim("-")),
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
header: "Role",
|
|
46
|
+
key: "role",
|
|
47
|
+
width: 10,
|
|
48
|
+
formatter: (v) => {
|
|
49
|
+
const role = String(v);
|
|
50
|
+
if (role === "owner")
|
|
51
|
+
return colors.warning(role);
|
|
52
|
+
if (role === "admin")
|
|
53
|
+
return colors.info(role);
|
|
54
|
+
return role;
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
header: "Joined",
|
|
59
|
+
key: "joinedAt",
|
|
60
|
+
width: 14,
|
|
61
|
+
formatter: (v) => (v ? formatRelativeTime(String(v)) : colors.dim("-")),
|
|
62
|
+
},
|
|
63
|
+
]);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy90ZWFtcy9tZW1iZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsS0FBSyxFQUNMLElBQUksRUFDSixJQUFJLEVBQ0osTUFBTSxFQUNOLFVBQVUsRUFDVixrQkFBa0IsR0FDbkIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFXcEQsTUFBTSxDQUFDLE9BQU8sT0FBTyxZQUFhLFNBQVEsb0JBQW9CO0lBQzVELE1BQU0sQ0FBQyxXQUFXLEdBQUcsa0NBQWtDLENBQUM7SUFFeEQsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQixpQ0FBaUM7UUFDakMsd0NBQXdDO0tBQ3pDLENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO0tBQ2xDLENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sR0FBRyxHQUFHLGFBQWEsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxLQUFLLENBQ1IsMERBQTBELENBQzNELENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxTQUFTLENBQUMsR0FBRyxDQUNqQyxzQkFBc0IsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUN2QyxDQUFDO1FBRUYsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNkLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3pCLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sT0FBTyxDQUFDLE1BQU0sVUFBVSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2pHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVkLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDYjtnQkFDRSxNQUFNLEVBQUUsTUFBTTtnQkFDZCxHQUFHLEVBQUUsVUFBVTtnQkFDZixLQUFLLEVBQUUsRUFBRTtnQkFDVCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDO2FBQ3pDO1lBQ0Q7Z0JBQ0UsTUFBTSxFQUFFLE9BQU87Z0JBQ2YsR0FBRyxFQUFFLFdBQVc7Z0JBQ2hCLEtBQUssRUFBRSxFQUFFO2dCQUNULFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDaEU7WUFDRDtnQkFDRSxNQUFNLEVBQUUsTUFBTTtnQkFDZCxHQUFHLEVBQUUsTUFBTTtnQkFDWCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDZixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZCLElBQUksSUFBSSxLQUFLLE9BQU87d0JBQUUsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNsRCxJQUFJLElBQUksS0FBSyxPQUFPO3dCQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDL0MsT0FBTyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQzthQUNGO1lBQ0Q7Z0JBQ0UsTUFBTSxFQUFFLFFBQVE7Z0JBQ2hCLEdBQUcsRUFBRSxVQUFVO2dCQUNmLEtBQUssRUFBRSxFQUFFO2dCQUNULFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3hFO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgdGFibGUsXG4gIGpzb24sXG4gIGluZm8sXG4gIGNvbG9ycyxcbiAgaXNKc29uTW9kZSxcbiAgZm9ybWF0UmVsYXRpdmVUaW1lLFxufSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuaW1wb3J0IHsgZ2V0Q3VycmVudE9yZyB9IGZyb20gXCIuLi8uLi9saWIvY29uZmlnLmpzXCI7XG5cbmludGVyZmFjZSBNZW1iZXIge1xuICBpZDogc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbiAgcm9sZTogc3RyaW5nO1xuICBqb2luZWRBdDogc3RyaW5nO1xuICB1c2VyTmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgdXNlckVtYWlsOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWFtc01lbWJlcnMgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9IFwiTGlzdCBtZW1iZXJzIG9mIHRoZSBjdXJyZW50IHRlYW1cIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiB0ZWFtcyBtZW1iZXJzXCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiB0ZWFtcyBtZW1iZXJzIC0tanNvblwiLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG9yZyA9IGdldEN1cnJlbnRPcmcoKTtcbiAgICBpZiAoIW9yZykge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgXCJObyBhY3RpdmUgdGVhbS4gUnVuICdzZW5kbHkgdGVhbXMgc3dpdGNoJyB0byBzZWxlY3Qgb25lLlwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZW1iZXJzID0gYXdhaXQgYXBpQ2xpZW50LmdldDxNZW1iZXJbXT4oXG4gICAgICBgL2FwaS9vcmdhbml6YXRpb25zLyR7b3JnLmlkfS9tZW1iZXJzYCxcbiAgICApO1xuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihtZW1iZXJzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobWVtYmVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIGluZm8oXCJObyBtZW1iZXJzIGZvdW5kXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgaW5mbyhgJHtjb2xvcnMucHJpbWFyeShvcmcubmFtZSl9IOKAlCAke21lbWJlcnMubGVuZ3RofSBtZW1iZXIke21lbWJlcnMubGVuZ3RoID09PSAxID8gXCJcIiA6IFwic1wifWApO1xuICAgIGNvbnNvbGUubG9nKCk7XG5cbiAgICB0YWJsZShtZW1iZXJzLCBbXG4gICAgICB7XG4gICAgICAgIGhlYWRlcjogXCJOYW1lXCIsXG4gICAgICAgIGtleTogXCJ1c2VyTmFtZVwiLFxuICAgICAgICB3aWR0aDogMjIsXG4gICAgICAgIGZvcm1hdHRlcjogKHYpID0+IFN0cmluZyh2IHx8IFwiVW5rbm93blwiKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGhlYWRlcjogXCJFbWFpbFwiLFxuICAgICAgICBrZXk6IFwidXNlckVtYWlsXCIsXG4gICAgICAgIHdpZHRoOiAyOCxcbiAgICAgICAgZm9ybWF0dGVyOiAodikgPT4gKHYgPyBjb2xvcnMuZGltKFN0cmluZyh2KSkgOiBjb2xvcnMuZGltKFwiLVwiKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBoZWFkZXI6IFwiUm9sZVwiLFxuICAgICAgICBrZXk6IFwicm9sZVwiLFxuICAgICAgICB3aWR0aDogMTAsXG4gICAgICAgIGZvcm1hdHRlcjogKHYpID0+IHtcbiAgICAgICAgICBjb25zdCByb2xlID0gU3RyaW5nKHYpO1xuICAgICAgICAgIGlmIChyb2xlID09PSBcIm93bmVyXCIpIHJldHVybiBjb2xvcnMud2FybmluZyhyb2xlKTtcbiAgICAgICAgICBpZiAocm9sZSA9PT0gXCJhZG1pblwiKSByZXR1cm4gY29sb3JzLmluZm8ocm9sZSk7XG4gICAgICAgICAgcmV0dXJuIHJvbGU7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBoZWFkZXI6IFwiSm9pbmVkXCIsXG4gICAgICAgIGtleTogXCJqb2luZWRBdFwiLFxuICAgICAgICB3aWR0aDogMTQsXG4gICAgICAgIGZvcm1hdHRlcjogKHYpID0+ICh2ID8gZm9ybWF0UmVsYXRpdmVUaW1lKFN0cmluZyh2KSkgOiBjb2xvcnMuZGltKFwiLVwiKSksXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class TeamsSwitch extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
org: import("@oclif/core/lib/interfaces/parser.js").Arg<string | undefined, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
10
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Args } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
4
|
+
import { success, json, colors, isJsonMode, } from "../../lib/output.js";
|
|
5
|
+
import { setCurrentOrg, clearCurrentOrg, getCurrentOrg } from "../../lib/config.js";
|
|
6
|
+
import { isCI } from "../../lib/config.js";
|
|
7
|
+
export default class TeamsSwitch extends AuthenticatedCommand {
|
|
8
|
+
static description = "Switch the active team";
|
|
9
|
+
static examples = [
|
|
10
|
+
"<%= config.bin %> teams switch",
|
|
11
|
+
"<%= config.bin %> teams switch <org-id-or-slug>",
|
|
12
|
+
"<%= config.bin %> teams switch --clear",
|
|
13
|
+
];
|
|
14
|
+
static args = {
|
|
15
|
+
org: Args.string({
|
|
16
|
+
description: "Organization ID or slug to switch to",
|
|
17
|
+
required: false,
|
|
18
|
+
}),
|
|
19
|
+
};
|
|
20
|
+
static flags = {
|
|
21
|
+
...AuthenticatedCommand.baseFlags,
|
|
22
|
+
};
|
|
23
|
+
async run() {
|
|
24
|
+
const { args } = await this.parse(TeamsSwitch);
|
|
25
|
+
if (args.org === "clear" || args.org === "none" || args.org === "personal") {
|
|
26
|
+
clearCurrentOrg();
|
|
27
|
+
if (isJsonMode()) {
|
|
28
|
+
json({ cleared: true });
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
success("Switched to personal account");
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const orgs = await apiClient.get("/api/organizations");
|
|
35
|
+
if (args.org) {
|
|
36
|
+
const match = orgs.find((o) => o.id === args.org ||
|
|
37
|
+
o.slug === args.org ||
|
|
38
|
+
o.name.toLowerCase() === args.org.toLowerCase());
|
|
39
|
+
if (!match) {
|
|
40
|
+
this.error(`Team not found: ${args.org}`);
|
|
41
|
+
}
|
|
42
|
+
setCurrentOrg(match.id, match.name, match.slug);
|
|
43
|
+
if (isJsonMode()) {
|
|
44
|
+
json({ id: match.id, name: match.name, slug: match.slug });
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
success(`Switched to ${colors.primary(match.name)}`);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (isCI()) {
|
|
51
|
+
this.error("Interactive mode not available in CI. Pass an org ID or slug as argument.");
|
|
52
|
+
}
|
|
53
|
+
const { default: inquirer } = await import("inquirer");
|
|
54
|
+
const currentOrg = getCurrentOrg();
|
|
55
|
+
const choices = orgs.map((o) => ({
|
|
56
|
+
name: `${o.name}${o.role ? ` (${o.role})` : ""}${o.isPersonal ? " — personal" : ""}`,
|
|
57
|
+
value: o.id,
|
|
58
|
+
}));
|
|
59
|
+
const { orgId } = await inquirer.prompt([
|
|
60
|
+
{
|
|
61
|
+
type: "list",
|
|
62
|
+
name: "orgId",
|
|
63
|
+
message: "Select a team:",
|
|
64
|
+
choices,
|
|
65
|
+
default: currentOrg?.id,
|
|
66
|
+
},
|
|
67
|
+
]);
|
|
68
|
+
const selected = orgs.find((o) => o.id === orgId);
|
|
69
|
+
if (selected.isPersonal) {
|
|
70
|
+
clearCurrentOrg();
|
|
71
|
+
if (isJsonMode()) {
|
|
72
|
+
json({ cleared: true });
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
success("Switched to personal account");
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
setCurrentOrg(selected.id, selected.name, selected.slug);
|
|
79
|
+
if (isJsonMode()) {
|
|
80
|
+
json({ id: selected.id, name: selected.name, slug: selected.slug });
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
success(`Switched to ${colors.primary(selected.name)}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3RlYW1zL3N3aXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsT0FBTyxFQUNQLElBQUksRUFFSixNQUFNLEVBQ04sVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBVTNDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sV0FBWSxTQUFRLG9CQUFvQjtJQUMzRCxNQUFNLENBQUMsV0FBVyxHQUFHLHdCQUF3QixDQUFDO0lBRTlDLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsZ0NBQWdDO1FBQ2hDLGlEQUFpRDtRQUNqRCx3Q0FBd0M7S0FDekMsQ0FBQztJQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDWixHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNmLFdBQVcsRUFBRSxzQ0FBc0M7WUFDbkQsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQztLQUNILENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO0tBQ2xDLENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFL0MsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzNFLGVBQWUsRUFBRSxDQUFDO1lBQ2xCLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ3hCLE9BQU87WUFDVCxDQUFDO1lBQ0QsT0FBTyxDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFDeEMsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFNBQVMsQ0FBQyxHQUFHLENBQWlCLG9CQUFvQixDQUFDLENBQUM7UUFFdkUsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDYixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUNyQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0osQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRztnQkFDakIsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRztnQkFDbkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBSSxDQUFDLFdBQVcsRUFBRSxDQUNuRCxDQUFDO1lBQ0YsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLENBQUM7WUFDRCxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoRCxJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDM0QsT0FBTztZQUNULENBQUM7WUFDRCxPQUFPLENBQUMsZUFBZSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDckQsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsS0FBSyxDQUFDLDJFQUEyRSxDQUFDLENBQUM7UUFDMUYsQ0FBQztRQUVELE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdkQsTUFBTSxVQUFVLEdBQUcsYUFBYSxFQUFFLENBQUM7UUFDbkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMvQixJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDcEYsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFO1NBQ1osQ0FBQyxDQUFDLENBQUM7UUFFSixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3RDO2dCQUNFLElBQUksRUFBRSxNQUFNO2dCQUNaLElBQUksRUFBRSxPQUFPO2dCQUNiLE9BQU8sRUFBRSxnQkFBZ0I7Z0JBQ3pCLE9BQU87Z0JBQ1AsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFO2FBQ3hCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUUsQ0FBQztRQUVuRCxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN4QixlQUFlLEVBQUUsQ0FBQztZQUNsQixJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUN4QixPQUFPO1lBQ1QsQ0FBQztZQUNELE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1lBQ3hDLE9BQU87UUFDVCxDQUFDO1FBRUQsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekQsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNwRSxPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU8sQ0FBQyxlQUFlLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQge1xuICBzdWNjZXNzLFxuICBqc29uLFxuICBpbmZvLFxuICBjb2xvcnMsXG4gIGlzSnNvbk1vZGUsXG59IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5pbXBvcnQgeyBzZXRDdXJyZW50T3JnLCBjbGVhckN1cnJlbnRPcmcsIGdldEN1cnJlbnRPcmcgfSBmcm9tIFwiLi4vLi4vbGliL2NvbmZpZy5qc1wiO1xuaW1wb3J0IHsgaXNDSSB9IGZyb20gXCIuLi8uLi9saWIvY29uZmlnLmpzXCI7XG5cbmludGVyZmFjZSBPcmdhbml6YXRpb24ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNsdWc6IHN0cmluZztcbiAgcm9sZTogc3RyaW5nO1xuICBpc1BlcnNvbmFsOiBib29sZWFuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWFtc1N3aXRjaCBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJTd2l0Y2ggdGhlIGFjdGl2ZSB0ZWFtXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gdGVhbXMgc3dpdGNoXCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiB0ZWFtcyBzd2l0Y2ggPG9yZy1pZC1vci1zbHVnPlwiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gdGVhbXMgc3dpdGNoIC0tY2xlYXJcIixcbiAgXTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICBvcmc6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIk9yZ2FuaXphdGlvbiBJRCBvciBzbHVnIHRvIHN3aXRjaCB0b1wiLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShUZWFtc1N3aXRjaCk7XG5cbiAgICBpZiAoYXJncy5vcmcgPT09IFwiY2xlYXJcIiB8fCBhcmdzLm9yZyA9PT0gXCJub25lXCIgfHwgYXJncy5vcmcgPT09IFwicGVyc29uYWxcIikge1xuICAgICAgY2xlYXJDdXJyZW50T3JnKCk7XG4gICAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICAgIGpzb24oeyBjbGVhcmVkOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzdWNjZXNzKFwiU3dpdGNoZWQgdG8gcGVyc29uYWwgYWNjb3VudFwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcmdzID0gYXdhaXQgYXBpQ2xpZW50LmdldDxPcmdhbml6YXRpb25bXT4oXCIvYXBpL29yZ2FuaXphdGlvbnNcIik7XG5cbiAgICBpZiAoYXJncy5vcmcpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gb3Jncy5maW5kKFxuICAgICAgICAobykgPT5cbiAgICAgICAgICBvLmlkID09PSBhcmdzLm9yZyB8fFxuICAgICAgICAgIG8uc2x1ZyA9PT0gYXJncy5vcmcgfHxcbiAgICAgICAgICBvLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gYXJncy5vcmchLnRvTG93ZXJDYXNlKCksXG4gICAgICApO1xuICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICB0aGlzLmVycm9yKGBUZWFtIG5vdCBmb3VuZDogJHthcmdzLm9yZ31gKTtcbiAgICAgIH1cbiAgICAgIHNldEN1cnJlbnRPcmcobWF0Y2guaWQsIG1hdGNoLm5hbWUsIG1hdGNoLnNsdWcpO1xuICAgICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAgICBqc29uKHsgaWQ6IG1hdGNoLmlkLCBuYW1lOiBtYXRjaC5uYW1lLCBzbHVnOiBtYXRjaC5zbHVnIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzdWNjZXNzKGBTd2l0Y2hlZCB0byAke2NvbG9ycy5wcmltYXJ5KG1hdGNoLm5hbWUpfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc0NJKCkpIHtcbiAgICAgIHRoaXMuZXJyb3IoXCJJbnRlcmFjdGl2ZSBtb2RlIG5vdCBhdmFpbGFibGUgaW4gQ0kuIFBhc3MgYW4gb3JnIElEIG9yIHNsdWcgYXMgYXJndW1lbnQuXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZGVmYXVsdDogaW5xdWlyZXIgfSA9IGF3YWl0IGltcG9ydChcImlucXVpcmVyXCIpO1xuXG4gICAgY29uc3QgY3VycmVudE9yZyA9IGdldEN1cnJlbnRPcmcoKTtcbiAgICBjb25zdCBjaG9pY2VzID0gb3Jncy5tYXAoKG8pID0+ICh7XG4gICAgICBuYW1lOiBgJHtvLm5hbWV9JHtvLnJvbGUgPyBgICgke28ucm9sZX0pYCA6IFwiXCJ9JHtvLmlzUGVyc29uYWwgPyBcIiDigJQgcGVyc29uYWxcIiA6IFwiXCJ9YCxcbiAgICAgIHZhbHVlOiBvLmlkLFxuICAgIH0pKTtcblxuICAgIGNvbnN0IHsgb3JnSWQgfSA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwibGlzdFwiLFxuICAgICAgICBuYW1lOiBcIm9yZ0lkXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiU2VsZWN0IGEgdGVhbTpcIixcbiAgICAgICAgY2hvaWNlcyxcbiAgICAgICAgZGVmYXVsdDogY3VycmVudE9yZz8uaWQsXG4gICAgICB9LFxuICAgIF0pO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBvcmdzLmZpbmQoKG8pID0+IG8uaWQgPT09IG9yZ0lkKSE7XG5cbiAgICBpZiAoc2VsZWN0ZWQuaXNQZXJzb25hbCkge1xuICAgICAgY2xlYXJDdXJyZW50T3JnKCk7XG4gICAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICAgIGpzb24oeyBjbGVhcmVkOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzdWNjZXNzKFwiU3dpdGNoZWQgdG8gcGVyc29uYWwgYWNjb3VudFwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXRDdXJyZW50T3JnKHNlbGVjdGVkLmlkLCBzZWxlY3RlZC5uYW1lLCBzZWxlY3RlZC5zbHVnKTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24oeyBpZDogc2VsZWN0ZWQuaWQsIG5hbWU6IHNlbGVjdGVkLm5hbWUsIHNsdWc6IHNlbGVjdGVkLnNsdWcgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3VjY2VzcyhgU3dpdGNoZWQgdG8gJHtjb2xvcnMucHJpbWFyeShzZWxlY3RlZC5uYW1lKX1gKTtcbiAgfVxufVxuIl19
|
package/dist/commands/whoami.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BaseCommand } from "../lib/base-command.js";
|
|
2
2
|
import { getAuthInfo } from "../lib/auth.js";
|
|
3
3
|
import { success, info, keyValue, colors, json } from "../lib/output.js";
|
|
4
|
-
import { getConfigValue, getConfigPath } from "../lib/config.js";
|
|
4
|
+
import { getConfigValue, getConfigPath, getCurrentOrg } from "../lib/config.js";
|
|
5
5
|
export default class Whoami extends BaseCommand {
|
|
6
6
|
static description = "Show current authentication status";
|
|
7
7
|
static examples = ["<%= config.bin %> whoami"];
|
|
@@ -11,6 +11,7 @@ export default class Whoami extends BaseCommand {
|
|
|
11
11
|
async run() {
|
|
12
12
|
const { flags } = await this.parse(Whoami);
|
|
13
13
|
const authInfo = await getAuthInfo();
|
|
14
|
+
const org = getCurrentOrg();
|
|
14
15
|
if (flags.json) {
|
|
15
16
|
json({
|
|
16
17
|
authenticated: authInfo.authenticated,
|
|
@@ -19,6 +20,7 @@ export default class Whoami extends BaseCommand {
|
|
|
19
20
|
environment: authInfo.environment,
|
|
20
21
|
keyType: authInfo.keyType,
|
|
21
22
|
configPath: getConfigPath(),
|
|
23
|
+
organization: org ? { id: org.id, name: org.name, slug: org.slug } : null,
|
|
22
24
|
});
|
|
23
25
|
return;
|
|
24
26
|
}
|
|
@@ -48,8 +50,11 @@ export default class Whoami extends BaseCommand {
|
|
|
48
50
|
if (baseUrl && baseUrl !== "https://sendly.live") {
|
|
49
51
|
displayData["Server"] = colors.dim(baseUrl);
|
|
50
52
|
}
|
|
53
|
+
if (org) {
|
|
54
|
+
displayData["Team"] = colors.primary(org.name) + colors.dim(` (${org.id})`);
|
|
55
|
+
}
|
|
51
56
|
displayData["Config"] = colors.dim(getConfigPath());
|
|
52
57
|
keyValue(displayData);
|
|
53
58
|
}
|
|
54
59
|
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hvYW1pLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3dob2FtaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEYsTUFBTSxDQUFDLE9BQU8sT0FBTyxNQUFPLFNBQVEsV0FBVztJQUM3QyxNQUFNLENBQUMsV0FBVyxHQUFHLG9DQUFvQyxDQUFDO0lBRTFELE1BQU0sQ0FBQyxRQUFRLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBRS9DLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLFdBQVcsQ0FBQyxTQUFTO0tBQ3pCLENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFM0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxXQUFXLEVBQUUsQ0FBQztRQUVyQyxNQUFNLEdBQUcsR0FBRyxhQUFhLEVBQUUsQ0FBQztRQUU1QixJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQztnQkFDSCxhQUFhLEVBQUUsUUFBUSxDQUFDLGFBQWE7Z0JBQ3JDLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztnQkFDckIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNO2dCQUN2QixXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVc7Z0JBQ2pDLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztnQkFDekIsVUFBVSxFQUFFLGFBQWEsRUFBRTtnQkFDM0IsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO2FBQzFFLENBQUMsQ0FBQztZQUNILE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDdEIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDcEUsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRWQsTUFBTSxXQUFXLEdBQTJCLEVBQUUsQ0FBQztRQUUvQywrRUFBK0U7UUFDL0UsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQ3RELFdBQVcsQ0FBQyxVQUFVLENBQUM7WUFDckIsSUFBSSxLQUFLLE1BQU07Z0JBQ2IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQztnQkFDdEUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUzRCxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQixXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUN4QyxDQUFDO1FBRUQsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEIsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCx1Q0FBdUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFDLElBQUksT0FBTyxJQUFJLE9BQU8sS0FBSyxxQkFBcUIsRUFBRSxDQUFDO1lBQ2pELFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM5RSxDQUFDO1FBRUQsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUVwRCxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb21tYW5kIH0gZnJvbSBcIi4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGdldEF1dGhJbmZvIH0gZnJvbSBcIi4uL2xpYi9hdXRoLmpzXCI7XG5pbXBvcnQgeyBzdWNjZXNzLCBpbmZvLCBrZXlWYWx1ZSwgY29sb3JzLCBqc29uIH0gZnJvbSBcIi4uL2xpYi9vdXRwdXQuanNcIjtcbmltcG9ydCB7IGdldENvbmZpZ1ZhbHVlLCBnZXRDb25maWdQYXRoLCBnZXRDdXJyZW50T3JnIH0gZnJvbSBcIi4uL2xpYi9jb25maWcuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV2hvYW1pIGV4dGVuZHMgQmFzZUNvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIlNob3cgY3VycmVudCBhdXRoZW50aWNhdGlvbiBzdGF0dXNcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXCI8JT0gY29uZmlnLmJpbiAlPiB3aG9hbWlcIl07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkJhc2VDb21tYW5kLmJhc2VGbGFncyxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShXaG9hbWkpO1xuXG4gICAgY29uc3QgYXV0aEluZm8gPSBhd2FpdCBnZXRBdXRoSW5mbygpO1xuXG4gICAgY29uc3Qgb3JnID0gZ2V0Q3VycmVudE9yZygpO1xuXG4gICAgaWYgKGZsYWdzLmpzb24pIHtcbiAgICAgIGpzb24oe1xuICAgICAgICBhdXRoZW50aWNhdGVkOiBhdXRoSW5mby5hdXRoZW50aWNhdGVkLFxuICAgICAgICBlbWFpbDogYXV0aEluZm8uZW1haWwsXG4gICAgICAgIHVzZXJJZDogYXV0aEluZm8udXNlcklkLFxuICAgICAgICBlbnZpcm9ubWVudDogYXV0aEluZm8uZW52aXJvbm1lbnQsXG4gICAgICAgIGtleVR5cGU6IGF1dGhJbmZvLmtleVR5cGUsXG4gICAgICAgIGNvbmZpZ1BhdGg6IGdldENvbmZpZ1BhdGgoKSxcbiAgICAgICAgb3JnYW5pemF0aW9uOiBvcmcgPyB7IGlkOiBvcmcuaWQsIG5hbWU6IG9yZy5uYW1lLCBzbHVnOiBvcmcuc2x1ZyB9IDogbnVsbCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghYXV0aEluZm8uYXV0aGVudGljYXRlZCkge1xuICAgICAgaW5mbyhcIk5vdCBsb2dnZWQgaW5cIik7XG4gICAgICBjb25zb2xlLmxvZygpO1xuICAgICAgY29uc29sZS5sb2coYCAgUnVuICR7Y29sb3JzLmNvZGUoXCJzZW5kbHkgbG9naW5cIil9IHRvIGF1dGhlbnRpY2F0ZWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN1Y2Nlc3MoXCJBdXRoZW50aWNhdGVkXCIpO1xuICAgIGNvbnNvbGUubG9nKCk7XG5cbiAgICBjb25zdCBkaXNwbGF5RGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gICAgLy8gU2hvdyBBUEkgbW9kZSAodGVzdCB2cyBsaXZlKSAtIHRoaXMgZGV0ZXJtaW5lcyBpZiBtZXNzYWdlcyBhcmUgYWN0dWFsbHkgc2VudFxuICAgIGNvbnN0IG1vZGUgPSBhdXRoSW5mby5rZXlUeXBlIHx8IGF1dGhJbmZvLmVudmlyb25tZW50O1xuICAgIGRpc3BsYXlEYXRhW1wiQVBJIE1vZGVcIl0gPVxuICAgICAgbW9kZSA9PT0gXCJ0ZXN0XCJcbiAgICAgICAgPyBjb2xvcnMud2FybmluZyhcInRlc3RcIikgKyBjb2xvcnMuZGltKFwiIChzYW5kYm94IC0gbm8gcmVhbCBtZXNzYWdlcylcIilcbiAgICAgICAgOiBjb2xvcnMuc3VjY2VzcyhcImxpdmVcIikgKyBjb2xvcnMuZGltKFwiIChwcm9kdWN0aW9uKVwiKTtcblxuICAgIGlmIChhdXRoSW5mby5lbWFpbCkge1xuICAgICAgZGlzcGxheURhdGFbXCJFbWFpbFwiXSA9IGF1dGhJbmZvLmVtYWlsO1xuICAgIH1cblxuICAgIGlmIChhdXRoSW5mby51c2VySWQpIHtcbiAgICAgIGRpc3BsYXlEYXRhW1wiVXNlciBJRFwiXSA9IGNvbG9ycy5kaW0oYXV0aEluZm8udXNlcklkKTtcbiAgICB9XG5cbiAgICAvLyBTaG93IHdoaWNoIHNlcnZlciB3ZSdyZSBjb25uZWN0ZWQgdG9cbiAgICBjb25zdCBiYXNlVXJsID0gZ2V0Q29uZmlnVmFsdWUoXCJiYXNlVXJsXCIpO1xuICAgIGlmIChiYXNlVXJsICYmIGJhc2VVcmwgIT09IFwiaHR0cHM6Ly9zZW5kbHkubGl2ZVwiKSB7XG4gICAgICBkaXNwbGF5RGF0YVtcIlNlcnZlclwiXSA9IGNvbG9ycy5kaW0oYmFzZVVybCk7XG4gICAgfVxuXG4gICAgaWYgKG9yZykge1xuICAgICAgZGlzcGxheURhdGFbXCJUZWFtXCJdID0gY29sb3JzLnByaW1hcnkob3JnLm5hbWUpICsgY29sb3JzLmRpbShgICgke29yZy5pZH0pYCk7XG4gICAgfVxuXG4gICAgZGlzcGxheURhdGFbXCJDb25maWdcIl0gPSBjb2xvcnMuZGltKGdldENvbmZpZ1BhdGgoKSk7XG5cbiAgICBrZXlWYWx1ZShkaXNwbGF5RGF0YSk7XG4gIH1cbn1cbiJdfQ==
|