Skip to content

Commit b707216

Browse files
authored
fix: allow command without loading plugin file (#30)
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
1 parent 609727e commit b707216

25 files changed

+332
-275
lines changed

src/commands/info.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { readdir, stat } from 'node:fs/promises';
22
import { join } from 'node:path';
33
import { z } from 'zod';
44
import { loadPluginsConfig } from '../config/loader';
5-
import { DirectoryNotFoundError, isNodeError, PluginNotFoundError } from '../errors';
5+
import { DirectoryNotFoundError, isFileNotFoundError, PluginNotFoundError } from '../errors';
66
import { resolveMarketplacePath } from '../helpers/git';
77
import { defaultIO } from '../helpers/io';
88
import { getMarketplaceType, getPluginSourcePath, loadMarketplaceManifest } from '../helpers/marketplace';
@@ -19,9 +19,9 @@ export async function info(options: unknown): Promise<void> {
1919
const cwd = cmd.cwd || process.cwd();
2020

2121
try {
22-
const config = await loadPluginsConfig(cwd);
22+
const { config, sources } = await loadPluginsConfig(cwd);
2323

24-
if (!config) {
24+
if (!sources.project) {
2525
defaultIO.logError("No plugins.json found. Run 'aipm init' first.");
2626
return;
2727
}
@@ -59,7 +59,7 @@ export async function info(options: unknown): Promise<void> {
5959
try {
6060
pluginStats = await stat(pluginPath);
6161
} catch (error: unknown) {
62-
if (isNodeError(error) && error.code === 'ENOENT') {
62+
if (isFileNotFoundError(error)) {
6363
throw new PluginNotFoundError(pluginName, marketplaceName, { cause: error });
6464
}
6565
throw error;
@@ -126,7 +126,7 @@ export async function info(options: unknown): Promise<void> {
126126
}
127127
}
128128
} catch (error: unknown) {
129-
if (isNodeError(error) && error.code === 'ENOENT') {
129+
if (isFileNotFoundError(error)) {
130130
// No commands directory - that's ok
131131
} else {
132132
throw new DirectoryNotFoundError(commandsPath, { cause: error });

src/commands/list.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ export async function list(options: ListOptions = {}): Promise<void> {
1414
const cwd = cmd.cwd || process.cwd();
1515

1616
try {
17-
const config = await loadPluginsConfig(cwd);
17+
const { config, sources } = await loadPluginsConfig(cwd);
1818

19-
if (!config) {
19+
if (!sources.project) {
2020
defaultIO.logError("No plugins.json found. Run 'aipm init' first.");
2121
return;
2222
}

src/commands/marketplace-add.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,7 @@ export async function marketplaceAdd(options: unknown): Promise<void> {
2828
return;
2929
}
3030

31-
const config = await loadPluginsConfig(cwd);
32-
if (!config) {
33-
defaultIO.logError('Failed to load config');
34-
return;
35-
}
31+
const { config } = await loadPluginsConfig(cwd);
3632

3733
if (config.marketplaces[cmd.name]) {
3834
defaultIO.logError(`Marketplace '${cmd.name}' already exists`);

src/commands/marketplace-remove.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,7 @@ export async function marketplaceRemove(options: unknown): Promise<void> {
2626
return;
2727
}
2828

29-
const config = await loadPluginsConfig(cwd);
30-
if (!config) {
31-
defaultIO.logError('Failed to load config');
32-
return;
33-
}
29+
const { config } = await loadPluginsConfig(cwd);
3430

3531
if (!config.marketplaces[cmd.name]) {
3632
defaultIO.logError(`Marketplace '${cmd.name}' not found`);

src/commands/marketplace-update.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,7 @@ export async function marketplaceUpdate(options: unknown): Promise<void> {
2323
throw error;
2424
}
2525

26-
const config = await loadPluginsConfig(cwd);
27-
if (!config) {
28-
const error = new Error('Failed to load config');
29-
defaultIO.logError(error.message);
30-
throw error;
31-
}
26+
const { config } = await loadPluginsConfig(cwd);
3227

3328
const marketplace = config.marketplaces[cmd.name];
3429

src/commands/plugin-disable.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,7 @@ export async function pluginDisable(options: unknown): Promise<void> {
2626
return;
2727
}
2828

29-
const config = await loadPluginsConfig(cwd);
30-
if (!config) {
31-
defaultIO.logError('Failed to load config');
32-
return;
33-
}
29+
const { config } = await loadPluginsConfig(cwd);
3430

3531
const plugin = config.plugins[cmd.pluginId];
3632

src/commands/plugin-enable.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,7 @@ export async function pluginEnable(options: unknown): Promise<void> {
2626
return;
2727
}
2828

29-
const config = await loadPluginsConfig(cwd);
30-
if (!config) {
31-
defaultIO.logError('Failed to load config');
32-
return;
33-
}
29+
const { config } = await loadPluginsConfig(cwd);
3430

3531
if (!config.plugins[cmd.pluginId]) {
3632
defaultIO.logInfo(`Plugin '${cmd.pluginId}' not found, adding it as enabled`);

src/commands/plugin-install.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,7 @@ export async function pluginInstall(options: unknown): Promise<void> {
3939
throw error;
4040
}
4141

42-
const config = await loadPluginsConfig(cwd);
43-
if (!config) {
44-
const error = new Error('Failed to load config');
45-
defaultIO.logError(error.message);
46-
throw error;
47-
}
42+
const { config } = await loadPluginsConfig(cwd);
4843

4944
const [pluginName, marketplaceName] = cmd.pluginId.split('@');
5045

src/commands/plugin-search.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,7 @@ export async function pluginSearch(options: unknown): Promise<void> {
3131
throw error;
3232
}
3333

34-
const config = await loadPluginsConfig(cwd);
35-
if (!config) {
36-
const error = new Error('Failed to load config');
37-
defaultIO.logError(error.message);
38-
throw error;
39-
}
34+
const { config } = await loadPluginsConfig(cwd);
4035

4136
const allPlugins: PluginInfo[] = [];
4237

src/commands/plugin-uninstall.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,7 @@ export async function pluginUninstall(options: unknown): Promise<void> {
3131
throw error;
3232
}
3333

34-
const config = await loadPluginsConfig(cwd);
35-
if (!config) {
36-
const error = new Error('Failed to load config');
37-
defaultIO.logError(error.message);
38-
throw error;
39-
}
34+
const { config } = await loadPluginsConfig(cwd);
4035

4136
if (!config.plugins[cmd.pluginId]) {
4237
const error = new Error(`Plugin '${cmd.pluginId}' is not installed`);

0 commit comments

Comments
 (0)