blob: 123fb5b871c060adc0f0ee8f950e8c5777fba73b [file] [log] [blame]
#!/bin/bash
# Copyright 2017 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
### create and publish a package from a given directory
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"/lib/vars.sh
fx-config-read
# See usage for publish, this does the same thing, but for an individual
# package.
function main {
local pkg_name
for pkg_name; do : ; done;
local build_dir="${FUCHSIA_BUILD_DIR}"
local stg_dir
local update_repo
local key_path
local gen_key=1
while (( "$#" )); do
case $1 in
"--update-repo")
shift
update_repo=$1
;;
"--far-dir")
shift
stg_dir=$1
;;
"--far-key")
shift
key_path=$1
gen_key=0
;;
"--build-dir")
shift
build_dir=$1
;;
esac
shift
done
if [[ -z $stg_dir ]]; then
stg_dir="${build_dir}/fars/${pkg_name}"
fi
if [[ -z $update_repo ]]; then
local update_repo="${build_dir}/amber-files"
fi
local arch_dir="${stg_dir}/archive"
if [[ "$key_path" == "" ]]; then
key_path="${stg_dir}/key"
fi
rm -r "${stg_dir}"/* >/dev/null 2>&1
mkdir -p "${arch_dir}"
local pm_cmd="${build_dir}/host_x64/pm"
local amber_cmd="${build_dir}/host_x64/amber-publish"
local mani_path=""
for try_path in ${build_dir}/package/${pkg_name}/{boot,system}_manifest; do
if [[ -s "$try_path" ]]; then
mani_path="$try_path"
fi
done
if [[ "$mani_path" == "" ]]; then
echo "WARNING: manifest not found for ${pkg_name}, no package published."
return 0
fi
if [[ "$gen_key" -eq 1 ]]; then
"${pm_cmd}" "-o" "${arch_dir}" "-k" "${key_path}" "genkey" || return $?
fi
"${pm_cmd}" "-o" "${arch_dir}" "-n" "${pkg_name}" "init" || return $?
"${pm_cmd}" "-o" "${arch_dir}" "-k" "${key_path}" "-m" "$mani_path" "build" || return $?
"${amber_cmd}" "-r" "${update_repo}" "-p" "-f" "${arch_dir}/meta.far" "-n" "${pkg_name}.far" || return $?
"${amber_cmd}" "-r" "${update_repo}" "-m" "-f" "${mani_path}" >/dev/null || return $?
}
main "$@"