5 script_path="$( cd -P "$( dirname "$(readlink -f "$0")" )" && cd .. && pwd )"
13 echo "usage ${0} [options] [command]"
15 echo "Scripts that perform locale-related processing "
17 echo " General command:"
18 echo " check [name] Determine if the locale is available"
19 echo " show Shows a list of available locales"
20 echo " get [name] Prints the specified locale settings"
21 echo " help This help message"
23 echo " General options:"
24 echo " -a | --arch [arch] Specify the architecture"
25 echo " -c | --channel Specify the channel"
26 echo " -s | --script Enable script mode"
27 echo " -h | --help This help message"
29 echo " Script mode usage:"
30 echo " check Returns 0 if the check was successful, 1 otherwise."
31 printf ' get eval $(%s -s -a <arch> -c <channel> get <locale>)\n' "$(basename ${0})"
34 # Usage: getclm <number>
35 # 標準入力から値を受けとり、引数で指定された列を抽出します。
36 getclm() { cut -d " " -f "${1}"; }
40 "${script_path}/tools/msg.sh" -s 6 -a "locale.sh" error "${1}"
44 if [[ -z "${arch}" ]]; then
45 msg_error "No architecture specified."
48 if [[ ! -f "${script_path}/system/locale-${arch}" ]]; then
49 msg_error "Missing architecture ${arch}"
53 for _locale in $(grep -h -v ^'#' "${script_path}/system/locale-${arch}" | grep -v ^$ | getclm 1); do
54 localelist+=("${_locale}")
60 if [[ ! "${#}" = "1" ]]; then
64 if [[ $(printf '%s\n' "${localelist[@]}" | grep -qx "${1}"; echo -n ${?} ) -eq 0 ]]; then
75 if (( "${#localelist[*]}" > 0)); then
76 echo "${localelist[*]}"
82 if [[ ! "${#}" = "1" ]]; then
88 local _get_locale_line_number _locale_config_file _locale_name_list _locale_line_number _locale_config_line
90 # 選択されたロケールの設定が描かれた行番号を取得
91 _locale_config_file="${script_path}/system/locale-${arch}"
92 readarray -t _locale_name_list < <(grep -h -v ^'#' "${_locale_config_file}" | grep -v ^$ | awk '{print $1}')
93 _get_locale_line_number() {
95 for _lang in "${_locale_name_list[@]}"; do
96 _count=$(( _count + 1 ))
97 if [[ "${_lang}" = "${1}" ]]; then echo "${_count}"; return 0; fi
101 _locale_line_number="$(_get_locale_line_number "${@}")"
104 if [[ "${_locale_line_number}" = "failed" ]]; then
105 msg_error "${1} is not a valid language."
106 if [[ "${script}" = true ]]; then
112 # ロケール設定ファイルから該当の行を抽出
113 readarray -t _locale_config_line < <(grep -h -v ^'#' "${_locale_config_file}" | grep -v ^$ | head -n "${_locale_line_number}" | tail -n 1 | tail -n 1 | sed -e 's/ */ /g' | tr " " "\n")
115 # 抽出された行に書かれた設定をそれぞれの変数に代入
116 # ここで定義された変数のみがグローバル変数
118 locale_name="${_locale_config_line[0]}"
119 locale_gen_name="${_locale_config_line[1]}"
120 locale_version="${_locale_config_line[2]}"
121 locale_time="${_locale_config_line[3]}"
122 locale_fullname="${_locale_config_line[4]}"
128 OPTL="arch:,channel:,help,script"
129 if ! OPT=$(getopt -o ${OPTS} -l ${OPTL} -- "${@}"); then
161 if [[ -z "${1}" ]]; then
170 "check" ) check "${@}" ;;
172 "get" ) get "${@}" ;;
173 "help" ) _help; exit 0 ;;