#!/bin/bash

set -e

# Parse arguments

spec_path=''
source_path=''
resource_path=''
language=''
generated_types_package=''
infra_package=''
while [[ "$#" -gt 0 ]]; do case $1 in
  --spec-path) spec_path="$2"; shift;;
  --source-path) source_path="$2"; shift;;
  --resource-path) resource_path="$2"; shift;;
  --language) language="$2"; shift;;
  --generated-types-package) generated_types_package="$2"; shift;;
  --infra-package) infra_package="$2"; shift;;
esac; shift; done

echo "Generating $language CDK Construct"

working_dir=$(pwd)
script_dir="$( cd -- "$( dirname -- "${BASH_SOURCE[0]:-$0}"; )" &> /dev/null && pwd 2> /dev/null; )";

# load common package manager helper functions
. "$script_dir/../../../common/common.sh"

# Create a temporary directory
tmp_dir=$(mktemp -d "${TMPDIR:-/tmp/}generate-cdk-infra-$language.XXXXXXXXX")
cd $tmp_dir

log "generate-type-safe-cdk-construct :: tmp_dir :: $tmp_dir"

# Copy the specific generator directory into the temp directory
cp -r $script_dir/* .

# Install dependencies
install_packages \
  typescript@4.7.2 \
  @types/node@14.14.20 \
  ts-node@10.8.1 \
  ts-command-line-args@2.3.1 \
  projen@0.67.46

# Run the generate script
run_command "ts-node generate-type-safe-cdk-construct.ts --generatedTypesPackage=$generated_types_package --resourcePath=$script_dir/$resource_path --infraPackage=$infra_package --language=$language --specPath=$script_dir/$spec_path --sourcePath=$script_dir/$source_path"

echo "Generated $language CDK Construct"

# Clean up
cd $working_dir
rm -rf $tmp_dir
