gagoar/alohomora

View on GitHub
src/actions/deleteParameter.ts

Summary

Maintainability
A
0 mins
Test Coverage
import SSM from 'aws-sdk/clients/ssm';
import { AWSError } from 'aws-sdk/lib/core';
import ora from 'ora';

import { Actions } from '../types';
import { REGION, API_VERSION, Environment, SUCCESS_SYMBOL } from '../utils/constants';
import { getGlobalOptions, Command } from '../utils/getGlobalOptions';
import { setAWSCredentials } from '../utils/setAWSCredentials';


interface Input extends Actions {
  name: string;

};

export const deleteParameter = async ({ name, prefix, region = REGION, environment = Environment.all }: Input): Promise<void> => {

  const loader = ora(`deleting key ${name} with prefix /${prefix} (${region})`).start();

  const ssm = new SSM({ apiVersion: API_VERSION, region });

  const keyName = `/${prefix}/${environment}/${name}`;

  const params = {
    Name: keyName,
  }

  try {
    await ssm.deleteParameter(params).promise();
    loader.stopAndPersist({ text: `deleted ${keyName} (${region})`, symbol: SUCCESS_SYMBOL });
  } catch (e) {
    if ((e as AWSError).code === 'ParameterNotFound') {
      loader.stopAndPersist({ text: `parameter ${keyName} not found (${region})`, symbol: SUCCESS_SYMBOL });
    } else {
      loader.fail(`Something went wrong deleting the key ${keyName}, ${e}`);
    }
  }
}


export const command = async (name: string, command: Command): Promise<void> => {

  const { params, credentials } = await getGlobalOptions(command);

  setAWSCredentials(credentials);
  await deleteParameter({ ...params, name });
}