| #!/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 "$@" |