@hesed/gchat 0.2.1 → 0.3.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 CHANGED
@@ -26,7 +26,7 @@ $ npm install -g @hesed/gchat
26
26
  $ gchat COMMAND
27
27
  running command...
28
28
  $ gchat (--version)
29
- @hesed/gchat/0.2.1 linux-x64 node-v22.22.0
29
+ @hesed/gchat/0.3.0 linux-x64 node-v24.18.0
30
30
  $ gchat --help [COMMAND]
31
31
  USAGE
32
32
  $ gchat COMMAND
@@ -37,51 +37,55 @@ USAGE
37
37
  # Commands
38
38
 
39
39
  <!-- commands -->
40
- * [`gchat gchat config add-token SPACEID TOKEN`](#gchat-gchat-config-add-token-spaceid-token)
41
- * [`gchat gchat config set-key KEY`](#gchat-gchat-config-set-key-key)
40
+ * [`gchat gchat config add-token PROFILE SPACEID TOKEN`](#gchat-gchat-config-add-token-profile-spaceid-token)
41
+ * [`gchat gchat config set-key PROFILE KEY`](#gchat-gchat-config-set-key-profile-key)
42
42
  * [`gchat gchat create-message SPACEID MESSAGE`](#gchat-gchat-create-message-spaceid-message)
43
43
  * [`gchat gchat reply-message THREADNAME MESSAGE`](#gchat-gchat-reply-message-threadname-message)
44
44
 
45
- ## `gchat gchat config add-token SPACEID TOKEN`
45
+ ## `gchat gchat config add-token PROFILE SPACEID TOKEN`
46
46
 
47
- Add or update an API token for a Google Chat space
47
+ Add or update an API token for a Google Chat space within a profile
48
48
 
49
49
  ```
50
50
  USAGE
51
- $ gchat gchat config add-token SPACEID TOKEN
51
+ $ gchat gchat config add-token PROFILE SPACEID TOKEN
52
52
 
53
53
  ARGUMENTS
54
+ PROFILE Config profile name
54
55
  SPACEID Google Chat space ID
55
56
  TOKEN API token for this space
56
57
 
57
58
  DESCRIPTION
58
- Add or update an API token for a Google Chat space
59
+ Add or update an API token for a Google Chat space within a profile
59
60
 
60
61
  EXAMPLES
61
- $ gchat gchat config add-token AAQAKA6hsFw your-space-token
62
+ $ gchat gchat config add-token default AAQAKA6hsFw your-space-token
62
63
  ```
63
64
 
64
- _See code: [src/commands/gchat/config/add-token.ts](https://github.com/hesedcasa/gchat/blob/v0.2.1/src/commands/gchat/config/add-token.ts)_
65
+ _See code: [src/commands/gchat/config/add-token.ts](https://github.com/hesedcasa/gchat/blob/v0.3.0/src/commands/gchat/config/add-token.ts)_
65
66
 
66
- ## `gchat gchat config set-key KEY`
67
+ ## `gchat gchat config set-key PROFILE KEY`
67
68
 
68
- Set the Google Chat API key in the config file
69
+ Set the Google Chat API key for a profile
69
70
 
70
71
  ```
71
72
  USAGE
72
- $ gchat gchat config set-key KEY
73
+ $ gchat gchat config set-key PROFILE KEY
73
74
 
74
75
  ARGUMENTS
75
- KEY Google Chat API key
76
+ PROFILE Config profile name
77
+ KEY Google Chat API key
76
78
 
77
79
  DESCRIPTION
78
- Set the Google Chat API key in the config file
80
+ Set the Google Chat API key for a profile
79
81
 
80
82
  EXAMPLES
81
- $ gchat gchat config set-key your-api-key
83
+ $ gchat gchat config set-key default your-api-key
84
+
85
+ $ gchat gchat config set-key work your-work-api-key
82
86
  ```
83
87
 
84
- _See code: [src/commands/gchat/config/set-key.ts](https://github.com/hesedcasa/gchat/blob/v0.2.1/src/commands/gchat/config/set-key.ts)_
88
+ _See code: [src/commands/gchat/config/set-key.ts](https://github.com/hesedcasa/gchat/blob/v0.3.0/src/commands/gchat/config/set-key.ts)_
85
89
 
86
90
  ## `gchat gchat create-message SPACEID MESSAGE`
87
91
 
@@ -89,15 +93,16 @@ Send a message to a Google Chat space
89
93
 
90
94
  ```
91
95
  USAGE
92
- $ gchat gchat create-message SPACEID MESSAGE [-f] [--toon]
96
+ $ gchat gchat create-message SPACEID MESSAGE [-f] [-p <value>] [--toon]
93
97
 
94
98
  ARGUMENTS
95
99
  SPACEID Google Chat space ID
96
100
  MESSAGE Message text to send
97
101
 
98
102
  FLAGS
99
- -f, --formatted Enable formatted text (bold, italic, links)
100
- --toon Format output as toon
103
+ -f, --formatted Enable formatted text (bold, italic, links)
104
+ -p, --profile=<value> [default: default] Config profile to use
105
+ --toon Format output as toon
101
106
 
102
107
  DESCRIPTION
103
108
  Send a message to a Google Chat space
@@ -105,10 +110,14 @@ DESCRIPTION
105
110
  EXAMPLES
106
111
  $ gchat gchat create-message AAQAKA6hsFw "Hello team"
107
112
 
113
+ $ gchat gchat create-message AAQAKA6hsFw "Hello work" --profile work
114
+
108
115
  $ gchat gchat create-message AAQAKA6hsFw "*Bold message*" --formatted
116
+
117
+ $ gchat gchat create-message AAQAKA6hsFw "<https://example.com|Click here>" -f
109
118
  ```
110
119
 
111
- _See code: [src/commands/gchat/create-message.ts](https://github.com/hesedcasa/gchat/blob/v0.2.1/src/commands/gchat/create-message.ts)_
120
+ _See code: [src/commands/gchat/create-message.ts](https://github.com/hesedcasa/gchat/blob/v0.3.0/src/commands/gchat/create-message.ts)_
112
121
 
113
122
  ## `gchat gchat reply-message THREADNAME MESSAGE`
114
123
 
@@ -116,15 +125,16 @@ Reply to a message thread in Google Chat
116
125
 
117
126
  ```
118
127
  USAGE
119
- $ gchat gchat reply-message THREADNAME MESSAGE [-f] [--toon]
128
+ $ gchat gchat reply-message THREADNAME MESSAGE [-f] [-p <value>] [--toon]
120
129
 
121
130
  ARGUMENTS
122
131
  THREADNAME Thread name (e.g. spaces/SPACE_ID/threads/THREAD_ID)
123
132
  MESSAGE Message text to send
124
133
 
125
134
  FLAGS
126
- -f, --formatted Enable formatted text (bold, italic, links)
127
- --toon Format output as toon
135
+ -f, --formatted Enable formatted text (bold, italic, links)
136
+ -p, --profile=<value> [default: default] Config profile to use
137
+ --toon Format output as toon
128
138
 
129
139
  DESCRIPTION
130
140
  Reply to a message thread in Google Chat
@@ -132,8 +142,10 @@ DESCRIPTION
132
142
  EXAMPLES
133
143
  $ gchat gchat reply-message spaces/AAQAKA6hsFw/threads/D1NI3W2B6vA "Reply here"
134
144
 
145
+ $ gchat gchat reply-message spaces/AAQAKA6hsFw/threads/D1NI3W2B6vA "Reply here" --profile work
146
+
135
147
  $ gchat gchat reply-message spaces/AAQAKA6hsFw/threads/D1NI3W2B6vA "*Bold reply*" --formatted
136
148
  ```
137
149
 
138
- _See code: [src/commands/gchat/reply-message.ts](https://github.com/hesedcasa/gchat/blob/v0.2.1/src/commands/gchat/reply-message.ts)_
150
+ _See code: [src/commands/gchat/reply-message.ts](https://github.com/hesedcasa/gchat/blob/v0.3.0/src/commands/gchat/reply-message.ts)_
139
151
  <!-- commandsstop -->
@@ -1,6 +1,7 @@
1
1
  import { Command } from '@oclif/core';
2
2
  export default class ConfigAddToken extends Command {
3
3
  static args: {
4
+ profile: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
4
5
  spaceId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
5
6
  token: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
7
  };
@@ -2,16 +2,19 @@ import { Args, Command } from '@oclif/core';
2
2
  import { readConfigOrEmpty, writeConfig } from '../../../config.js';
3
3
  export default class ConfigAddToken extends Command {
4
4
  static args = {
5
+ profile: Args.string({ description: 'Config profile name', required: true }),
5
6
  spaceId: Args.string({ description: 'Google Chat space ID', required: true }),
6
7
  token: Args.string({ description: 'API token for this space', required: true }),
7
8
  };
8
- static description = 'Add or update an API token for a Google Chat space';
9
- static examples = ['<%= config.bin %> <%= command.id %> AAQAKA6hsFw your-space-token'];
9
+ static description = 'Add or update an API token for a Google Chat space within a profile';
10
+ static examples = ['<%= config.bin %> <%= command.id %> default AAQAKA6hsFw your-space-token'];
10
11
  async run() {
11
12
  const { args } = await this.parse(ConfigAddToken);
12
13
  const config = await readConfigOrEmpty(this.config.configDir);
13
- config.auth.tokens[args.spaceId] = args.token;
14
+ const profile = config.profiles[args.profile] ?? { key: '', tokens: {} };
15
+ profile.tokens[args.spaceId] = args.token;
16
+ config.profiles[args.profile] = profile;
14
17
  await writeConfig(this.config.configDir, config);
15
- this.log(`Token for space ${args.spaceId} updated successfully.`);
18
+ this.log(`Token for space ${args.spaceId} in profile '${args.profile}' updated successfully.`);
16
19
  }
17
20
  }
@@ -1,6 +1,7 @@
1
1
  import { Command } from '@oclif/core';
2
2
  export default class ConfigSetKey extends Command {
3
3
  static args: {
4
+ profile: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
4
5
  key: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
5
6
  };
6
7
  static description: string;
@@ -1,16 +1,24 @@
1
1
  import { Args, Command } from '@oclif/core';
2
2
  import { readConfigOrEmpty, writeConfig } from '../../../config.js';
3
3
  export default class ConfigSetKey extends Command {
4
+ /* eslint-disable perfectionist/sort-objects */
4
5
  static args = {
6
+ profile: Args.string({ description: 'Config profile name', required: true }),
5
7
  key: Args.string({ description: 'Google Chat API key', required: true }),
6
8
  };
7
- static description = 'Set the Google Chat API key in the config file';
8
- static examples = ['<%= config.bin %> <%= command.id %> your-api-key'];
9
+ /* eslint-enable perfectionist/sort-objects */
10
+ static description = 'Set the Google Chat API key for a profile';
11
+ static examples = [
12
+ '<%= config.bin %> <%= command.id %> default your-api-key',
13
+ '<%= config.bin %> <%= command.id %> work your-work-api-key',
14
+ ];
9
15
  async run() {
10
16
  const { args } = await this.parse(ConfigSetKey);
11
17
  const config = await readConfigOrEmpty(this.config.configDir);
12
- config.auth.key = args.key;
18
+ const profile = config.profiles[args.profile] ?? { key: '', tokens: {} };
19
+ profile.key = args.key;
20
+ config.profiles[args.profile] = profile;
13
21
  await writeConfig(this.config.configDir, config);
14
- this.log('API key updated successfully.');
22
+ this.log(`API key for profile '${args.profile}' updated successfully.`);
15
23
  }
16
24
  }
@@ -8,6 +8,7 @@ export default class GChatCreateMessage extends Command {
8
8
  static examples: string[];
9
9
  static flags: {
10
10
  formatted: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ profile: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
12
  toon: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
13
  };
13
14
  run(): Promise<void>;
@@ -1,5 +1,5 @@
1
1
  import { Args, Command, Flags } from '@oclif/core';
2
- import { readConfig } from '../../config.js';
2
+ import { DEFAULT_PROFILE, readConfig, resolveProfile } from '../../config.js';
3
3
  import { formatAsToon } from '../../format.js';
4
4
  import { clearClients, newMessage } from '../../gchat/gchat-client.js';
5
5
  export default class GChatCreateMessage extends Command {
@@ -12,10 +12,18 @@ export default class GChatCreateMessage extends Command {
12
12
  static description = 'Send a message to a Google Chat space';
13
13
  static examples = [
14
14
  '<%= config.bin %> <%= command.id %> AAQAKA6hsFw "Hello team"',
15
+ '<%= config.bin %> <%= command.id %> AAQAKA6hsFw "Hello work" --profile work',
15
16
  '<%= config.bin %> <%= command.id %> AAQAKA6hsFw "*Bold message*" --formatted',
17
+ '<%= config.bin %> <%= command.id %> AAQAKA6hsFw "<https://example.com|Click here>" -f',
16
18
  ];
17
19
  static flags = {
18
20
  formatted: Flags.boolean({ char: 'f', description: 'Enable formatted text (bold, italic, links)', required: false }),
21
+ profile: Flags.string({
22
+ char: 'p',
23
+ default: DEFAULT_PROFILE,
24
+ description: 'Config profile to use',
25
+ required: false,
26
+ }),
19
27
  toon: Flags.boolean({ description: 'Format output as toon', required: false }),
20
28
  };
21
29
  async run() {
@@ -23,8 +31,11 @@ export default class GChatCreateMessage extends Command {
23
31
  const config = await readConfig(this.config.configDir, this.log.bind(this));
24
32
  if (!config)
25
33
  return;
34
+ const auth = resolveProfile(config, flags.profile, this.log.bind(this));
35
+ if (!auth)
36
+ return;
26
37
  // eslint-disable-next-line unicorn/prefer-string-replace-all
27
- const result = await newMessage(config.auth, args.spaceId, args.message.replace(/\\n/g, '\n'), flags.formatted);
38
+ const result = await newMessage(auth, args.spaceId, args.message.replace(/\\n/g, '\n'), flags.formatted);
28
39
  clearClients();
29
40
  if (flags.toon) {
30
41
  this.log(formatAsToon(result));
@@ -8,6 +8,7 @@ export default class GChatReplyMessage extends Command {
8
8
  static examples: string[];
9
9
  static flags: {
10
10
  formatted: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ profile: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
12
  toon: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
13
  };
13
14
  run(): Promise<void>;
@@ -1,5 +1,5 @@
1
1
  import { Args, Command, Flags } from '@oclif/core';
2
- import { readConfig } from '../../config.js';
2
+ import { DEFAULT_PROFILE, readConfig, resolveProfile } from '../../config.js';
3
3
  import { formatAsToon } from '../../format.js';
4
4
  import { clearClients, replyMessage } from '../../gchat/gchat-client.js';
5
5
  export default class GChatReplyMessage extends Command {
@@ -15,10 +15,17 @@ export default class GChatReplyMessage extends Command {
15
15
  static description = 'Reply to a message thread in Google Chat';
16
16
  static examples = [
17
17
  '<%= config.bin %> <%= command.id %> spaces/AAQAKA6hsFw/threads/D1NI3W2B6vA "Reply here"',
18
+ '<%= config.bin %> <%= command.id %> spaces/AAQAKA6hsFw/threads/D1NI3W2B6vA "Reply here" --profile work',
18
19
  '<%= config.bin %> <%= command.id %> spaces/AAQAKA6hsFw/threads/D1NI3W2B6vA "*Bold reply*" --formatted',
19
20
  ];
20
21
  static flags = {
21
22
  formatted: Flags.boolean({ char: 'f', description: 'Enable formatted text (bold, italic, links)', required: false }),
23
+ profile: Flags.string({
24
+ char: 'p',
25
+ default: DEFAULT_PROFILE,
26
+ description: 'Config profile to use',
27
+ required: false,
28
+ }),
22
29
  toon: Flags.boolean({ description: 'Format output as toon', required: false }),
23
30
  };
24
31
  async run() {
@@ -26,8 +33,11 @@ export default class GChatReplyMessage extends Command {
26
33
  const config = await readConfig(this.config.configDir, this.log.bind(this));
27
34
  if (!config)
28
35
  return;
36
+ const auth = resolveProfile(config, flags.profile, this.log.bind(this));
37
+ if (!auth)
38
+ return;
29
39
  // eslint-disable-next-line unicorn/prefer-string-replace-all
30
- const result = await replyMessage(config.auth, args.threadName, args.message.replace(/\\n/g, '\n'), flags.formatted);
40
+ const result = await replyMessage(auth, args.threadName, args.message.replace(/\\n/g, '\n'), flags.formatted);
31
41
  clearClients();
32
42
  if (flags.toon) {
33
43
  this.log(formatAsToon(result));
package/dist/config.d.ts CHANGED
@@ -1,11 +1,12 @@
1
+ export declare const DEFAULT_PROFILE = "default";
1
2
  export interface GChatAuth {
2
3
  key: string;
3
4
  tokens: Record<string, string>;
4
5
  }
5
- interface GChatConfig {
6
- auth: GChatAuth;
6
+ export interface GChatConfig {
7
+ profiles: Record<string, GChatAuth>;
7
8
  }
8
9
  export declare function readConfigOrEmpty(configDir: string): Promise<GChatConfig>;
9
10
  export declare function writeConfig(configDir: string, config: GChatConfig): Promise<void>;
10
11
  export declare function readConfig(configDir: string, log: (msg: string) => void): Promise<GChatConfig | null>;
11
- export {};
12
+ export declare function resolveProfile(config: GChatConfig, profile: string, log: (msg: string) => void): GChatAuth | null;
package/dist/config.js CHANGED
@@ -1,25 +1,37 @@
1
1
  import { mkdir, readFile, writeFile } from 'node:fs/promises';
2
2
  import { join } from 'node:path';
3
+ export const DEFAULT_PROFILE = 'default';
4
+ function parseProfiles(raw) {
5
+ if (raw.profiles && typeof raw.profiles === 'object') {
6
+ const profiles = {};
7
+ for (const [name, profile] of Object.entries(raw.profiles)) {
8
+ profiles[name] = { key: profile.key ?? '', tokens: profile.tokens ?? {} };
9
+ }
10
+ return profiles;
11
+ }
12
+ // Legacy single-profile config: promote top-level key/tokens to the default profile.
13
+ return { [DEFAULT_PROFILE]: { key: raw.key ?? '', tokens: raw.tokens ?? {} } };
14
+ }
3
15
  export async function readConfigOrEmpty(configDir) {
4
16
  const configPath = join(configDir, 'gchat-config.json');
5
17
  try {
6
18
  const raw = JSON.parse(await readFile(configPath, 'utf8'));
7
- return { auth: { key: raw.key ?? '', tokens: raw.tokens ?? {} } };
19
+ return { profiles: parseProfiles(raw) };
8
20
  }
9
21
  catch {
10
- return { auth: { key: '', tokens: {} } };
22
+ return { profiles: {} };
11
23
  }
12
24
  }
13
25
  export async function writeConfig(configDir, config) {
14
26
  const configPath = join(configDir, 'gchat-config.json');
15
27
  await mkdir(configDir, { recursive: true });
16
- await writeFile(configPath, JSON.stringify(config.auth, null, 2));
28
+ await writeFile(configPath, JSON.stringify({ profiles: config.profiles }, null, 2));
17
29
  }
18
30
  export async function readConfig(configDir, log) {
19
31
  const configPath = join(configDir, 'gchat-config.json');
20
32
  try {
21
33
  const raw = JSON.parse(await readFile(configPath, 'utf8'));
22
- return { auth: { key: raw.key, tokens: raw.tokens ?? {} } };
34
+ return { profiles: parseProfiles(raw) };
23
35
  }
24
36
  catch {
25
37
  log(`Error: Could not read config from ${configPath}`);
@@ -27,3 +39,11 @@ export async function readConfig(configDir, log) {
27
39
  return null;
28
40
  }
29
41
  }
42
+ export function resolveProfile(config, profile, log) {
43
+ const auth = config.profiles[profile];
44
+ if (!auth) {
45
+ log(`Error: Profile '${profile}' not found. Run 'gchat gchat config set-key ${profile} <key>' to create it.`);
46
+ return null;
47
+ }
48
+ return auth;
49
+ }
@@ -17,7 +17,9 @@
17
17
  "description": "Send a message to a Google Chat space",
18
18
  "examples": [
19
19
  "<%= config.bin %> <%= command.id %> AAQAKA6hsFw \"Hello team\"",
20
- "<%= config.bin %> <%= command.id %> AAQAKA6hsFw \"*Bold message*\" --formatted"
20
+ "<%= config.bin %> <%= command.id %> AAQAKA6hsFw \"Hello work\" --profile work",
21
+ "<%= config.bin %> <%= command.id %> AAQAKA6hsFw \"*Bold message*\" --formatted",
22
+ "<%= config.bin %> <%= command.id %> AAQAKA6hsFw \"<https://example.com|Click here>\" -f"
21
23
  ],
22
24
  "flags": {
23
25
  "formatted": {
@@ -28,6 +30,16 @@
28
30
  "allowNo": false,
29
31
  "type": "boolean"
30
32
  },
33
+ "profile": {
34
+ "char": "p",
35
+ "description": "Config profile to use",
36
+ "name": "profile",
37
+ "required": false,
38
+ "default": "default",
39
+ "hasDynamicHelp": false,
40
+ "multiple": false,
41
+ "type": "option"
42
+ },
31
43
  "toon": {
32
44
  "description": "Format output as toon",
33
45
  "name": "toon",
@@ -69,6 +81,7 @@
69
81
  "description": "Reply to a message thread in Google Chat",
70
82
  "examples": [
71
83
  "<%= config.bin %> <%= command.id %> spaces/AAQAKA6hsFw/threads/D1NI3W2B6vA \"Reply here\"",
84
+ "<%= config.bin %> <%= command.id %> spaces/AAQAKA6hsFw/threads/D1NI3W2B6vA \"Reply here\" --profile work",
72
85
  "<%= config.bin %> <%= command.id %> spaces/AAQAKA6hsFw/threads/D1NI3W2B6vA \"*Bold reply*\" --formatted"
73
86
  ],
74
87
  "flags": {
@@ -80,6 +93,16 @@
80
93
  "allowNo": false,
81
94
  "type": "boolean"
82
95
  },
96
+ "profile": {
97
+ "char": "p",
98
+ "description": "Config profile to use",
99
+ "name": "profile",
100
+ "required": false,
101
+ "default": "default",
102
+ "hasDynamicHelp": false,
103
+ "multiple": false,
104
+ "type": "option"
105
+ },
83
106
  "toon": {
84
107
  "description": "Format output as toon",
85
108
  "name": "toon",
@@ -107,6 +130,11 @@
107
130
  "gchat:config:add-token": {
108
131
  "aliases": [],
109
132
  "args": {
133
+ "profile": {
134
+ "description": "Config profile name",
135
+ "name": "profile",
136
+ "required": true
137
+ },
110
138
  "spaceId": {
111
139
  "description": "Google Chat space ID",
112
140
  "name": "spaceId",
@@ -118,9 +146,9 @@
118
146
  "required": true
119
147
  }
120
148
  },
121
- "description": "Add or update an API token for a Google Chat space",
149
+ "description": "Add or update an API token for a Google Chat space within a profile",
122
150
  "examples": [
123
- "<%= config.bin %> <%= command.id %> AAQAKA6hsFw your-space-token"
151
+ "<%= config.bin %> <%= command.id %> default AAQAKA6hsFw your-space-token"
124
152
  ],
125
153
  "flags": {},
126
154
  "hasDynamicHelp": false,
@@ -143,15 +171,21 @@
143
171
  "gchat:config:set-key": {
144
172
  "aliases": [],
145
173
  "args": {
174
+ "profile": {
175
+ "description": "Config profile name",
176
+ "name": "profile",
177
+ "required": true
178
+ },
146
179
  "key": {
147
180
  "description": "Google Chat API key",
148
181
  "name": "key",
149
182
  "required": true
150
183
  }
151
184
  },
152
- "description": "Set the Google Chat API key in the config file",
185
+ "description": "Set the Google Chat API key for a profile",
153
186
  "examples": [
154
- "<%= config.bin %> <%= command.id %> your-api-key"
187
+ "<%= config.bin %> <%= command.id %> default your-api-key",
188
+ "<%= config.bin %> <%= command.id %> work your-work-api-key"
155
189
  ],
156
190
  "flags": {},
157
191
  "hasDynamicHelp": false,
@@ -172,5 +206,5 @@
172
206
  ]
173
207
  }
174
208
  },
175
- "version": "0.2.1"
209
+ "version": "0.3.0"
176
210
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hesed/gchat",
3
3
  "description": "CLI for Google Chat API interaction",
4
- "version": "0.2.1",
4
+ "version": "0.3.0",
5
5
  "author": "Hesed",
6
6
  "bin": {
7
7
  "gchat": "./bin/run.js"
@@ -20,7 +20,7 @@
20
20
  "@types/chai": "^5",
21
21
  "@types/fs-extra": "^11.0.4",
22
22
  "@types/mocha": "^10",
23
- "@types/node": "^25",
23
+ "@types/node": "^26",
24
24
  "@types/sinon": "^21.0.0",
25
25
  "c8": "^11.0.0",
26
26
  "chai": "^6",
@@ -32,7 +32,7 @@
32
32
  "oclif": "^4",
33
33
  "prettier": "^3.8.1",
34
34
  "shx": "^0.4.0",
35
- "sinon": "^21.0.1",
35
+ "sinon": "^22.0.0",
36
36
  "ts-node": "^10",
37
37
  "ts-prune": "^0.10.3",
38
38
  "typescript": "^5"