export async function run()

in src/cw-build-status.ts [8:60]


export async function run() {
	try {
		const namespace = core.getInput("namespace", { required: true });
		const metricName = core.getInput("metric-name", { required: true });
		const metricValue = core.getInput("metric-value", { required: true });
		const metricDataPath = core.getInput("metric-data", { required: false });

		let metricData = [];
		if (metricDataPath) {
			const contents = fs.readFileSync(metricDataPath, 'utf8');
			metricData = JSON.parse(contents);
		} else {
			let metricValueAsFloat = 0.0;
			switch (metricValue) {
				case "true":
					metricValueAsFloat = 1.0;
					break;
				case "false":
					metricValueAsFloat = 0.0;
					break;
				default:
					metricValueAsFloat = Number(metricValue);
			}
			const metricDimensions = core.getInput("metric-dimensions", {
				required: true,
			});
			const metricDatum = {
				MetricName: metricName,
				Value: metricValueAsFloat,
				Dimensions: JSON.parse(metricDimensions),
			};
			metricData = [metricDatum];
		}

		core.info(
			`Publishing metrics ${JSON.stringify(
				metricData,
				null,
				2
			)} under namespace ${namespace}`
		);
		const cloudwatch = new CloudWatch();
		await cloudwatch
			.putMetricData({
				Namespace: namespace,
				MetricData: metricData,
			})
			.promise();
		core.info("Successfully published metrics");
	} catch (error) {
		core.setFailed(error.message);
	}
}