trello-cli-unofficial 0.11.5 → 0.11.6

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/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## [0.11.6](https://github.com/JaegerCaiser/trello-cli-unofficial/compare/v0.11.5...v0.11.6) (2025-11-14)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * Add debug logs to CommandController for Windows troubleshooting ([5c146a9](https://github.com/JaegerCaiser/trello-cli-unofficial/commit/5c146a9801502747c9eb1dee3f6db38fa9ad20ab))
7
+ * Implement lazy Commander initialization for Windows compatibility ([e08ca9f](https://github.com/JaegerCaiser/trello-cli-unofficial/commit/e08ca9f298fb15d9b29e4e3daa98584c5d6321ad))
8
+ * Improve Windows compatibility test script ([2b230d9](https://github.com/JaegerCaiser/trello-cli-unofficial/commit/2b230d9b36e0b0b4f2fec52bbd9200fd424b4de9))
9
+
1
10
  ## [0.11.5](https://github.com/JaegerCaiser/trello-cli-unofficial/compare/v0.11.4...v0.11.5) (2025-11-14)
2
11
 
3
12
 
package/dist/main.js CHANGED
@@ -31138,13 +31138,18 @@ class CommandController {
31138
31138
  authController;
31139
31139
  boardController;
31140
31140
  cardController;
31141
- program;
31141
+ program = null;
31142
31142
  outputFormatter;
31143
31143
  constructor() {
31144
31144
  const configRepository = new FileConfigRepository;
31145
31145
  this.authController = new AuthController(configRepository);
31146
31146
  this.outputFormatter = new OutputFormatter;
31147
- this.program = new Command;
31147
+ }
31148
+ getProgram() {
31149
+ if (!this.program) {
31150
+ this.program = new Command;
31151
+ }
31152
+ return this.program;
31148
31153
  }
31149
31154
  getVersion() {
31150
31155
  const cwdPackageJson = join(process.cwd(), "package.json");
@@ -31174,11 +31179,8 @@ class CommandController {
31174
31179
  this.cardController = new CardController(trelloRepository, this.boardController, this.outputFormatter);
31175
31180
  }
31176
31181
  async setupCommands() {
31177
- if (!this.program) {
31178
- throw new Error(t2("errors.programNotInitialized"));
31179
- }
31180
31182
  const version = this.getVersion();
31181
- this.program.name("trello-cli-unofficial").description(t2("commands.description")).version(version).option("-f, --format <format>", t2("commands.formatOption"), "table").option("-v", t2("commands.versionOption")).option("--verbose", t2("commands.verboseOption")).on("option:format", (format) => {
31183
+ this.getProgram().name("trello-cli-unofficial").description(t2("commands.description")).version(version).option("-f, --format <format>", t2("commands.formatOption"), "table").option("-v", t2("commands.versionOption")).option("--verbose", t2("commands.verboseOption")).on("option:format", (format) => {
31182
31184
  this.outputFormatter.setFormat(format);
31183
31185
  }).on("option:v", () => {
31184
31186
  console.log(version);
@@ -31186,15 +31188,15 @@ class CommandController {
31186
31188
  }).on("option:verbose", () => {
31187
31189
  process.env.VERBOSE_ERRORS = "true";
31188
31190
  });
31189
- this.program.command("interactive").alias("i").description(t2("commands.interactive.description")).action(async () => {
31191
+ this.getProgram().command("interactive").alias("i").description(t2("commands.interactive.description")).action(async () => {
31190
31192
  const configRepository = new FileConfigRepository;
31191
31193
  const cli = new (await Promise.resolve().then(() => (init_TrelloCliController(), exports_TrelloCliController))).TrelloCliController(configRepository, this.outputFormatter);
31192
31194
  await cli.run();
31193
31195
  });
31194
- this.program.command("setup").description(t2("commands.setup.description")).action(async () => {
31196
+ this.getProgram().command("setup").description(t2("commands.setup.description")).action(async () => {
31195
31197
  await this.authController.setupToken();
31196
31198
  });
31197
- const boardsCmd = this.program.command("boards").description(t2("commands.boards.manage"));
31199
+ const boardsCmd = this.getProgram().command("boards").description(t2("commands.boards.manage"));
31198
31200
  boardsCmd.command("list").description(t2("commands.boards.description")).option("-f, --format <format>", t2("commands.formatOption"), "table").action(async (options) => {
31199
31201
  try {
31200
31202
  await this.initializeTrelloControllers();
@@ -31225,7 +31227,7 @@ class CommandController {
31225
31227
  console.error("\u274C Erro:", error.message);
31226
31228
  }
31227
31229
  });
31228
- this.program.command("boards-legacy").description(t2("commands.deprecated.boardsLegacyDescription")).action(async () => {
31230
+ this.getProgram().command("boards-legacy").description(t2("commands.deprecated.boardsLegacyDescription")).action(async () => {
31229
31231
  console.warn(t2("commands.deprecated.boardsLegacyWarning"));
31230
31232
  try {
31231
31233
  await this.initializeTrelloControllers();
@@ -31234,7 +31236,7 @@ class CommandController {
31234
31236
  console.error(t2("commands.deprecated.boardsLegacyError"), error.message);
31235
31237
  }
31236
31238
  });
31237
- const listsCmd = this.program.command("lists").description(t2("commands.lists.description"));
31239
+ const listsCmd = this.getProgram().command("lists").description(t2("commands.lists.description"));
31238
31240
  listsCmd.command("list <boardId>").description(t2("commands.lists.list.description")).option("-f, --format <format>", t2("commands.formatOption"), "table").action(async (boardId, options) => {
31239
31241
  try {
31240
31242
  await this.initializeTrelloControllers();
@@ -31270,7 +31272,7 @@ class CommandController {
31270
31272
  console.error(t2("commands.commandErrors.genericError"), error.message);
31271
31273
  }
31272
31274
  });
31273
- this.program.command("lists-legacy <boardName>").description(t2("commands.deprecated.listsLegacyDescription")).action(async (boardName) => {
31275
+ this.getProgram().command("lists-legacy <boardName>").description(t2("commands.deprecated.listsLegacyDescription")).action(async (boardName) => {
31274
31276
  console.warn(t2("commands.deprecated.listsLegacyWarning"));
31275
31277
  try {
31276
31278
  await this.initializeTrelloControllers();
@@ -31279,7 +31281,7 @@ class CommandController {
31279
31281
  console.error(t2("commands.deprecated.listsLegacyError"), error.message);
31280
31282
  }
31281
31283
  });
31282
- const cardsCmd = this.program.command("cards").description(t2("commands.cards.manage"));
31284
+ const cardsCmd = this.getProgram().command("cards").description(t2("commands.cards.manage"));
31283
31285
  cardsCmd.command("list <listId>").description(t2("commands.cards.list.description")).option("-f, --format <format>", t2("commands.formatOption"), "table").action(async (listId, options) => {
31284
31286
  try {
31285
31287
  await this.initializeTrelloControllers();
@@ -31323,7 +31325,7 @@ class CommandController {
31323
31325
  console.error(t2("commands.commandErrors.genericError"), error.message);
31324
31326
  }
31325
31327
  });
31326
- this.program.command("cards-legacy <boardName> <listName>").description(t2("commands.deprecated.cardsLegacyDescription")).action(async (boardName, listName) => {
31328
+ this.getProgram().command("cards-legacy <boardName> <listName>").description(t2("commands.deprecated.cardsLegacyDescription")).action(async (boardName, listName) => {
31327
31329
  console.warn(t2("commands.deprecated.cardsLegacyWarning"));
31328
31330
  try {
31329
31331
  await this.initializeTrelloControllers();
@@ -31332,7 +31334,7 @@ class CommandController {
31332
31334
  console.error(t2("commands.deprecated.cardsLegacyError"), error.message);
31333
31335
  }
31334
31336
  });
31335
- this.program.command("create-card-legacy <boardName> <listName> <cardName>").description(t2("commands.deprecated.createCardLegacyDescription")).option("-d, --desc <description>", t2("commands.options.cardDescription")).action(async (boardName, listName, cardName, options) => {
31337
+ this.getProgram().command("create-card-legacy <boardName> <listName> <cardName>").description(t2("commands.deprecated.createCardLegacyDescription")).option("-d, --desc <description>", t2("commands.options.cardDescription")).action(async (boardName, listName, cardName, options) => {
31336
31338
  console.warn(t2("commands.deprecated.createCardLegacyWarning"));
31337
31339
  try {
31338
31340
  await this.initializeTrelloControllers();
@@ -31341,7 +31343,7 @@ class CommandController {
31341
31343
  console.error(t2("commands.commandErrors.genericError"), error.message);
31342
31344
  }
31343
31345
  });
31344
- this.program.command("move-card-legacy <cardId> <listName>").description(t2("commands.deprecated.moveCardLegacyDescription")).action(async (cardId, listName) => {
31346
+ this.getProgram().command("move-card-legacy <cardId> <listName>").description(t2("commands.deprecated.moveCardLegacyDescription")).action(async (cardId, listName) => {
31345
31347
  console.warn(t2("commands.deprecated.moveCardLegacyWarning"));
31346
31348
  try {
31347
31349
  await this.initializeTrelloControllers();
@@ -31350,7 +31352,7 @@ class CommandController {
31350
31352
  console.error(t2("commands.commandErrors.genericError"), error.message);
31351
31353
  }
31352
31354
  });
31353
- this.program.command("delete-card-legacy <cardId>").description(t2("commands.deprecated.deleteCardLegacyDescription")).action(async (cardId) => {
31355
+ this.getProgram().command("delete-card-legacy <cardId>").description(t2("commands.deprecated.deleteCardLegacyDescription")).action(async (cardId) => {
31354
31356
  console.warn(t2("commands.deprecated.deleteCardLegacyWarning"));
31355
31357
  try {
31356
31358
  await this.initializeTrelloControllers();
@@ -31367,7 +31369,7 @@ class CommandController {
31367
31369
  const cli = new (await Promise.resolve().then(() => (init_TrelloCliController(), exports_TrelloCliController))).TrelloCliController(configRepository, this.outputFormatter);
31368
31370
  await cli.run();
31369
31371
  } else {
31370
- await this.program.parseAsync();
31372
+ await this.getProgram().parseAsync();
31371
31373
  }
31372
31374
  }
31373
31375
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "trello-cli-unofficial",
3
3
  "type": "module",
4
- "version": "0.11.5",
4
+ "version": "0.11.6",
5
5
  "private": false,
6
6
  "description": "Unofficial Trello CLI using Power-Up authentication, built with Bun for maximum performance",
7
7
  "author": "Matheus Caiser <matheus.kaiser@gmail.com> (https://www.mrdeveloper.com.br/)",
@@ -19,15 +19,20 @@ export class CommandController {
19
19
  private authController: AuthController;
20
20
  private boardController!: BoardController;
21
21
  private cardController!: CardController;
22
- private program: Command;
22
+ private program: Command | null = null;
23
23
  private outputFormatter: OutputFormatter;
24
24
 
25
25
  constructor() {
26
26
  const configRepository = new FileConfigRepository();
27
27
  this.authController = new AuthController(configRepository);
28
28
  this.outputFormatter = new OutputFormatter();
29
- // Initialize Commander immediately in constructor
30
- this.program = new Command();
29
+ }
30
+
31
+ private getProgram(): Command {
32
+ if (!this.program) {
33
+ this.program = new Command();
34
+ }
35
+ return this.program;
31
36
  }
32
37
 
33
38
  private getVersion(): string {
@@ -84,15 +89,10 @@ export class CommandController {
84
89
  }
85
90
 
86
91
  private async setupCommands(): Promise<void> {
87
- // Program should be initialized by now
88
- if (!this.program) {
89
- throw new Error(t('errors.programNotInitialized'));
90
- }
91
-
92
92
  // Get version using robust method
93
93
  const version = this.getVersion();
94
94
 
95
- this.program
95
+ this.getProgram()
96
96
  .name('trello-cli-unofficial')
97
97
  .description(t('commands.description'))
98
98
  .version(version)
@@ -112,7 +112,7 @@ export class CommandController {
112
112
  });
113
113
 
114
114
  // Interactive mode
115
- this.program
115
+ this.getProgram()
116
116
  .command('interactive')
117
117
  .alias('i')
118
118
  .description(t('commands.interactive.description'))
@@ -125,7 +125,7 @@ export class CommandController {
125
125
  });
126
126
 
127
127
  // Setup command
128
- this.program
128
+ this.getProgram()
129
129
  .command('setup')
130
130
  .description(t('commands.setup.description'))
131
131
  .action(async () => {
@@ -133,7 +133,7 @@ export class CommandController {
133
133
  });
134
134
 
135
135
  // Boards subcommands
136
- const boardsCmd = this.program
136
+ const boardsCmd = this.getProgram()
137
137
  .command('boards')
138
138
  .description(t('commands.boards.manage'));
139
139
 
@@ -186,7 +186,7 @@ export class CommandController {
186
186
  });
187
187
 
188
188
  // Legacy boards command with deprecation warning
189
- this.program
189
+ this.getProgram()
190
190
  .command('boards-legacy')
191
191
  .description(t('commands.deprecated.boardsLegacyDescription'))
192
192
  .action(async () => {
@@ -203,7 +203,7 @@ export class CommandController {
203
203
  });
204
204
 
205
205
  // Lists subcommands
206
- const listsCmd = this.program
206
+ const listsCmd = this.getProgram()
207
207
  .command('lists')
208
208
  .description(t('commands.lists.description'));
209
209
 
@@ -272,7 +272,7 @@ export class CommandController {
272
272
  });
273
273
 
274
274
  // Legacy lists command with deprecation warning
275
- this.program
275
+ this.getProgram()
276
276
  .command('lists-legacy <boardName>')
277
277
  .description(t('commands.deprecated.listsLegacyDescription'))
278
278
  .action(async (boardName: string) => {
@@ -289,7 +289,7 @@ export class CommandController {
289
289
  });
290
290
 
291
291
  // Cards subcommands
292
- const cardsCmd = this.program
292
+ const cardsCmd = this.getProgram()
293
293
  .command('cards')
294
294
  .description(t('commands.cards.manage'));
295
295
 
@@ -389,7 +389,7 @@ export class CommandController {
389
389
  );
390
390
 
391
391
  // Legacy commands with deprecation warnings
392
- this.program
392
+ this.getProgram()
393
393
  .command('cards-legacy <boardName> <listName>')
394
394
  .description(t('commands.deprecated.cardsLegacyDescription'))
395
395
  .action(async (boardName: string, listName: string) => {
@@ -405,7 +405,7 @@ export class CommandController {
405
405
  }
406
406
  });
407
407
 
408
- this.program
408
+ this.getProgram()
409
409
  .command('create-card-legacy <boardName> <listName> <cardName>')
410
410
  .description(t('commands.deprecated.createCardLegacyDescription'))
411
411
  .option('-d, --desc <description>', t('commands.options.cardDescription'))
@@ -434,7 +434,7 @@ export class CommandController {
434
434
  },
435
435
  );
436
436
 
437
- this.program
437
+ this.getProgram()
438
438
  .command('move-card-legacy <cardId> <listName>')
439
439
  .description(t('commands.deprecated.moveCardLegacyDescription'))
440
440
  .action(async (cardId: string, listName: string) => {
@@ -450,7 +450,7 @@ export class CommandController {
450
450
  }
451
451
  });
452
452
 
453
- this.program
453
+ this.getProgram()
454
454
  .command('delete-card-legacy <cardId>')
455
455
  .description(t('commands.deprecated.deleteCardLegacyDescription'))
456
456
  .action(async (cardId: string) => {
@@ -478,7 +478,7 @@ export class CommandController {
478
478
  ).TrelloCliController(configRepository, this.outputFormatter);
479
479
  await cli.run();
480
480
  } else {
481
- await this.program.parseAsync();
481
+ await this.getProgram().parseAsync();
482
482
  }
483
483
  }
484
484
  }