#!/usr/bin/env bash

# Copyright (c) 2013 The CoreOS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

SCRIPT_ROOT=$(dirname $(readlink -f "$0"))
# We have to simple-mindedly set GCLIENT_ROOT in case we're running from
# au-generator.zip because common.sh will fail while auto-detect it.
export GCLIENT_ROOT=$(readlink -f "${SCRIPT_ROOT}/../../")
. "${SCRIPT_ROOT}/common.sh" || exit 1

DEFINE_string board "amd64-usr" \
    "Board type of the image"
DEFINE_string payload "coreos_production_update.gz" \
    "Path to the update payload"
DEFINE_string version "${FLATCAR_VERSION}" \
    "Version number of this build."
DEFINE_string app_id "e96281a6-d1af-4bde-9a0a-97b76e56dc57" \
    "CoreOS AppId in roller."

DEFINE_string user "" \
    "User for roller."
DEFINE_string api_key "" \
    "API key for roller."
DEFINE_string endpoint "https://public.update.core-os.net" \
    "Roller endpoint to update."
DEFINE_string storage "gs://coreos-update" \
    "Google Storage location to host the payload."
DEFINE_string download "https://update.release.core-os.net" \
    "HTTPS location users will download payload from."

FLAGS_HELPS="usage: $SCRIPTNAME [flags]

Setting everything up for use\n

1) Run 'gsutil config' and use project id coreos-net-storage\n
2) Ensure updateservicectl is installed in your path\n
"

# Parse flags
FLAGS "$@" || exit 1
eval set -- "${FLAGS_ARGV}"
switch_to_strict_mode

[[ -z "${FLAGS_api_key}" ]] && die "--api_key is required"
[[ -z "${FLAGS_user}" ]] && die "--user is required"

# Ensure GS URL doesn't have a trailing /
FLAGS_storage="${FLAGS_storage%%/}"

GS_URL="${FLAGS_storage}/${FLAGS_board}/${FLAGS_version}/update.gz"
HTTP_URL="${FLAGS_download}/${FLAGS_board}/${FLAGS_version}/update.gz"
gsutil cp "${FLAGS_payload}" "${GS_URL}"

updateservicectl \
        --server="${FLAGS_endpoint}" \
        --user="${FLAGS_user}" \
        --key="${FLAGS_api_key}" \
        package create \
        --app-id="${FLAGS_app_id}" \
        --file="${FLAGS_payload}" \
        --url="${HTTP_URL}" \
        --version="${FLAGS_version}"
