This is an automated email from the ASF dual-hosted git repository. yiconghuang pushed a commit to branch feat/add-some-helper-scripts in repository https://gitbox.apache.org/repos/asf/texera.git
commit 3e64e4153f8bcfb330d08802ac431a5fd2f44bc1 Author: Yicong Huang <[email protected]> AuthorDate: Mon Oct 13 00:25:38 2025 -0700 feat: add a script to resolve TEXERA_HOME --- bin/utils/resolve-texera-home.sh | 83 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/bin/utils/resolve-texera-home.sh b/bin/utils/resolve-texera-home.sh new file mode 100755 index 0000000000..ccc736c7b4 --- /dev/null +++ b/bin/utils/resolve-texera-home.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +# ------------------------------------------------------------- +# resolve-texera-home.sh +# ------------------------------------------------------------- +# Determines TEXERA_HOME using the following priority: +# 1. TEXERA_HOME environment variable (if already set) +# 2. git repository root (if inside a git repo) +# 3. parent directory if current dir is 'bin' +# 4. current working directory (.) +# +# Prints the resolved TEXERA_HOME to stdout. +# Logs human-readable messages via texera-logging.sh. +# +# Intended usage: +# TEXERA_HOME="$(bin/resolve-texera-home.sh)" +# +# Exits with code 1 if resolution fails. +# ------------------------------------------------------------- + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# --- Load logging helper --- +# shellcheck source=bin/texera-logging.sh +source "$SCRIPT_DIR/texera-logging.sh" + +resolve_texera_home() { + # 1. TEXERA_HOME environment variable + if [[ -n "${TEXERA_HOME:-}" ]]; then + tx_info "TEXERA_HOME found in environment: $TEXERA_HOME" + echo "$TEXERA_HOME" + return 0 + fi + + # 2. Git repository root (if any) + if git -C . rev-parse --show-toplevel >/dev/null 2>&1; then + local root + root="$(git rev-parse --show-toplevel)" + tx_info "TEXERA_HOME resolved via git repository root: $root" + echo "$root" + return 0 + fi + + # 3. Parent directory if current folder is 'bin' + local cwd cwd_basename + cwd="$(pwd)" + cwd_basename="$(basename "$cwd")" + if [[ "$cwd_basename" == "bin" ]]; then + local parent + parent="$(dirname "$cwd")" + tx_info "TEXERA_HOME resolved as parent of bin/: $parent" + echo "$parent" + return 0 + fi + + # 4. Fallback to current working directory + tx_warn "Falling back to current working directory as TEXERA_HOME: $cwd" + echo "$cwd" +} + +# --- Main execution --- +if ! resolve_texera_home; then + tx_error "Failed to resolve TEXERA_HOME." + exit 1 +fi \ No newline at end of file
