#!/usr/bin/env bash
#===--- toolchain-installer - Creates installer pkg for OS X ---------------===#
#
## This source file is part of the Swift.org open source project
##
## Copyright (c) 2014 - 2016 Apple Inc. and the Swift project authors
## Licensed under Apache License v2.0 with Runtime Library Exception
##
## See http://swift.org/LICENSE.txt for license information
## See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
#
#===------------------------------------------------------------------------===#

TOOLCHAIN_PREFIX=$1
DARWIN_BUNDLE_IDENTIFIER=$2
DARWIN_INSTALLER_CERT=$3
DARWIN_INSTALLER_PACKAGE=$4
DARWIN_TOOLCHAIN_INSTALL_LOCATION=$5
DARWIN_TOOLCHAIN_VERSION=$6
DARWIN_SCRIPTS=$7

pkgbuild --root "${TOOLCHAIN_PREFIX}" --install-location "${DARWIN_TOOLCHAIN_INSTALL_LOCATION}" "${DARWIN_INSTALLER_PACKAGE}" \
         --version "${DARWIN_TOOLCHAIN_VERSION}" --identifier "${DARWIN_BUNDLE_IDENTIFIER}" --sign "${DARWIN_INSTALLER_CERT}" \
         --scripts "${DARWIN_SCRIPTS}"
