Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions src/cli/delete/widgetTemplateDelete.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/usr/bin/env node

import { existsSync } from 'fs';
import path from 'path';

import { Command } from 'commander';

import deleteWidgetTemplate from '../../services/widgetTemplate/delete';
import { log, messages } from '../../messages';
import checkCredentials from '../../services/auth/checkAuth';
import AUTH_CONFIG from '../../services/auth/authConfig';

const widgetTemplateDelete = () => {
const program = new Command('delete');

return program
.arguments('<widget-template>')
.description('Delete the widget template on the store belonging to the env config')
.usage('<widget-template>')
.action((widgetTemplate) => {
const widgetTemplateDir = path.resolve(`./${widgetTemplate}`);
if (!checkCredentials(AUTH_CONFIG)) {
process.exit(1);
}

if (!widgetTemplate) {
log.error(messages.widgetRelease.invalidName);
return;
}

if (!existsSync(widgetTemplateDir)) {
log.error('Widget Template doesn\'t exist');
return;
}

deleteWidgetTemplate(widgetTemplate, widgetTemplateDir);
});
};

export default widgetTemplateDelete;
4 changes: 3 additions & 1 deletion src/cli/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { Command } from 'commander';
import createStarterTemplate from './create/starterTemplate';
import start from './run/start';
import widgetTemplatePublish from './deployment/widgetTemplatePublish';
import widgetTemplateDelete from './delete/widgetTemplateDelete';
import validateCommands from './run/validate';
import init from './run/init';

Expand All @@ -18,6 +19,7 @@ cli
.addCommand(start())
.addCommand(validateCommands())
.addCommand(createStarterTemplate())
.addCommand(widgetTemplatePublish());
.addCommand(widgetTemplatePublish())
.addCommand(widgetTemplateDelete());

cli.parse(process.argv);
5 changes: 5 additions & 0 deletions src/messages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,5 +52,10 @@ export const messages = {
failure: 'Unable to generate data to release, please check the widget template config or template data',
invalidName: 'Please provide a valid widget-template',
},
widgetTemplateDelete: {
success: (widgetName: string) => `${widgetName} successfully deleted!`,
failure: 'Unable to delete the widget, please check template yml',
invalidUuid: 'Please provide a valid widget-template UUID',
},
};
/* eslint-enable max-len */
20 changes: 20 additions & 0 deletions src/services/api/widget.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ interface WidgetPreviewRenderResponse {
};
}

interface widgetBuilderDeleteResponse {
data: {};
}

export interface WidgetPreviewRenderRequest {
widget_configuration: object;
widget_template: string;
Expand Down Expand Up @@ -64,3 +68,19 @@ export const publishWidget = (
.then(({ data: { data } }) => resolve(data))
.catch(error => reject(error));
});

export const deleteWidget = (
uuid: string | null,
): Promise<widgetBuilderDeleteResponse> => new Promise((resolve, reject) => {
Axios({
method: 'delete',
headers: {
Accept: 'application/json',
'X-Auth-Client': AUTH_CONFIG.authId,
'X-Auth-Token': AUTH_CONFIG.authToken,
},
url: `${widgetApi.widgetTemplatePublish}${`/${uuid}`}`,
})
.then(({ data: { data } }) => resolve(data))
.catch(error => reject(error));
});
17 changes: 17 additions & 0 deletions src/services/widgetTemplate/delete.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { log, messages } from '../../messages';
import { deleteWidget } from '../api/widget';
import track from './track';

const deleteWidgetTemplate = async (widgetName: string, widgetTemplateDir: string) => {
const widgetTemplateUuid = track.isTracked(widgetTemplateDir);

try {
await deleteWidget(widgetTemplateUuid);
log.success(messages.widgetTemplateDelete.success(widgetName));

} catch {
log.error(messages.widgetTemplateDelete.failure);
}
};

export default deleteWidgetTemplate;