const packageJson = require("../package.json")
const { execSync } = require("child_process")
const fs = require("fs")

const TO_SYNC = "dist/"
const BUCKET_LOCATION = "s3://prod-budi-app-assets/assets"
const BASE_PROFILE = "budibase"
const S3_COMP_DIR = "@budibase/standard-components/dist"
const MANIFEST = "componentlibrary-latest.json"

function buildS3Path() {
  return `${BUCKET_LOCATION}/componentlibrary-${packageJson.version}/${S3_COMP_DIR}`
}

async function run() {
  let profile = process.env.AWS_PROFILE
  if (profile == null) {
    profile = BASE_PROFILE
  }
  // basic manifest file describing the latest
  fs.writeFileSync(
    MANIFEST,
    JSON.stringify({
      version: packageJson.version,
      dir: S3_COMP_DIR,
    })
  )
  execSync(`aws s3 sync ${TO_SYNC} ${buildS3Path()} --profile ${profile}`)
  execSync(
    `aws s3 cp ${MANIFEST} ${BUCKET_LOCATION}/${MANIFEST} --profile ${profile}`
  )
  fs.unlinkSync(MANIFEST)
}

run()
  .then(() => {
    console.log(`Deployment complete, version ${packageJson.version}`)
  })
  .catch(err => {
    console.error(err)
  })