| #!/bin/bash |
| # Copyright 2020 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. |
| # |
| #### CATEGORY=Device management |
| ### Sets configuration properties persistently so |
| ### they can be used as reasonable defaults for other commands. |
| |
| set -eu |
| |
| # Source common functions |
| SCRIPT_SRC_DIR="$(cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd)" |
| |
| # Fuchsia command common functions. |
| # shellcheck disable=SC1090 |
| source "${SCRIPT_SRC_DIR}/fuchsia-common.sh" || exit $? |
| |
| function usage { |
| cat << EOF |
| usage: fconfig.sh [set|get|default|list] propname [value] |
| Sets or gets the property values used as defaults for commands. |
| |
| set: Sets the property to the given value. |
| get: Prints the value of the property or empty string if not found. |
| default: Restores the given property to the default value, or unsets. |
| list: Lists prop=value one per line. |
| |
| propname: One of the predefined properties: $(get-fuchsia-property-names)). |
| value: if using setting, the value to set to the property. Otherwise ignored. |
| EOF |
| } |
| |
| function _do_set { |
| if is-valid-fuchsia-property "$1"; then |
| set-fuchsia-property "$1" "$2" |
| else |
| fx-error "Invalid property name: $1" |
| return 1 |
| fi |
| } |
| |
| function _do_get { |
| if is-valid-fuchsia-property "$1"; then |
| get-fuchsia-property "$1" |
| else |
| fx-error "Invalid property name: $1" |
| return 1 |
| fi |
| } |
| |
| function _do_list { |
| for p in $(get-fuchsia-property-names); do |
| echo "${p}=$(get-fuchsia-property "$p")" |
| done |
| } |
| |
| CMD="" |
| PROPNAME="" |
| VALUE="" |
| |
| if (( "$#" >= 1 )); then |
| CMD="${1}" |
| else |
| usage |
| exit 1 |
| fi |
| shift |
| |
| if [[ "${CMD}" == "set" ]]; then |
| if (( "$#" >= 2 )); then |
| PROPNAME="${1}" |
| shift |
| VALUE="$*" |
| else |
| usage |
| exit 1 |
| fi |
| _do_set "${PROPNAME}" "${VALUE}" |
| elif [[ "${CMD}" == "get" ]]; then |
| if (( "$#" == 1 )); then |
| PROPNAME="${1}" |
| else |
| usage |
| exit 1 |
| fi |
| _do_get "${PROPNAME}" |
| elif [[ "${CMD}" == "default" ]]; then |
| if (( "$#" == 1 )); then |
| PROPNAME="${1}" |
| else |
| usage |
| exit 1 |
| fi |
| _do_set "${PROPNAME}" "" |
| elif [[ "${CMD}" == "list" ]]; then |
| if (( "$#" != 0 )); then |
| usage |
| exit 1 |
| fi |
| _do_list |
| else |
| usage |
| exit 1 |
| fi |