Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/JAVA/Openclaw/scripts/e2e/lib/   (KI Agentensystem Version 22©)  Datei vom 26.3.2026 mit Größe 4 kB image not shown  

Quelle  parallels-macos-common.sh

  Sprache: Shell
 

#!/usr/bin/env bash

parallels_macos_resolve_desktop_user() {
  local vm_name="$1"
  local user
  user="$(prlctl exec "$vm_name" /usr/bin/stat -f '%Su' /dev/console 2>/dev/null | tr -d '\r' | tail -n 1 || true)"
  if [[ "$user" =~ ^[A-Za-z0-9._-]+$ && "$user" != "root" && "$user" != "loginwindow" ]]; then
    printf '%s\n' "$user"
    return 0
  fi
  prlctl exec "$vm_name" /usr/bin/dscl . -list /Users NFSHomeDirectory 2>/dev/null \
    | tr -d '\r' \
    | awk '$2 ~ /^\/Users\// && $1 !~ /^_/ && $1 != "Shared" && $1 != ".localized" { print $1; exit }'
}

parallels_macos_resolve_desktop_home() {
  local vm_name="$1"
  local user="$2"
  local home
  home="$(
    prlctl exec "$vm_name" /usr/bin/dscl . -read "/Users/$user" NFSHomeDirectory 2>/dev/null \
      | tr -d '\r' \
      | awk '/NFSHomeDirectory:/ { print $2; exit }'
  )"
  if [[ -n "$home" ]]; then
    printf '%s\n' "$home"
  else
    printf '/Users/%s\n' "$user"
  fi
}

parallels_macos_current_user_available() {
  local vm_name="$1"
  prlctl exec "$vm_name" --current-user /usr/bin/whoami >/dev/null 2>&1
}

parallels_macos_desktop_user_exec_with_secret_file() {
  local vm_name="$1"
  local user_flag="$2"
  local user_name="$3"
  local home="$4"
  local path_value="$5"
  local api_key_env="$6"
  local api_key_value="$7"
  shift 7

  local secret_path
  secret_path="/tmp/openclaw-secret-${api_key_env:-env}-$RANDOM-$RANDOM"

  if [[ -n "$api_key_env" && -n "$api_key_value" ]]; then
    if [[ "$user_flag" == "current-user" ]]; then
      printf '%s' "$api_key_value" | /usr/bin/base64 | prlctl exec "$vm_name" \
        --current-user /usr/bin/base64 -D -o "$secret_path"
    else
      printf '%s' "$api_key_value" | /usr/bin/base64 | prlctl exec "$vm_name" \
        /usr/bin/sudo -H -u "$user_name" /usr/bin/base64 -D -o "$secret_path"
    fi
  fi

  local wrapper
  local wrapper_path
  wrapper_path="/tmp/openclaw-secret-env-wrapper-$RANDOM-$RANDOM.sh"
  wrapper='#!/bin/bash
set -e
cleanup() {
  rm -f "${OPENCLAW_WRAPPER_FILE:-}"
}
trap cleanup EXIT
if [ -n "${OPENCLAW_SECRET_ENV_NAME:-}" ] && [ -n "${OPENCLAW_SECRET_FILE:-}" ] && [ -f "$OPENCLAW_SECRET_FILE" ]; then
  secret_value="$(cat "$OPENCLAW_SECRET_FILE")"
  rm -f "$OPENCLAW_SECRET_FILE"
  export "${OPENCLAW_SECRET_ENV_NAME}=${secret_value}"
fi
"$@"
'

  if [[ "$user_flag" == "current-user" ]]; then
    printf '%s' "$wrapper" | /usr/bin/base64 | prlctl exec "$vm_name" \
      --current-user /usr/bin/base64 -D -o "$wrapper_path"
  else
    printf '%s' "$wrapper" | /usr/bin/base64 | prlctl exec "$vm_name" \
      /usr/bin/sudo -H -u "$user_name" /usr/bin/base64 -D -o "$wrapper_path"
  fi

  if [[ "$user_flag" == "current-user" ]]; then
    prlctl exec "$vm_name" --current-user /usr/bin/env \
      "PATH=$path_value" \
      "OPENCLAW_SECRET_ENV_NAME=$api_key_env" \
      "OPENCLAW_SECRET_FILE=$secret_path" \
      "OPENCLAW_WRAPPER_FILE=$wrapper_path" \
      /bin/bash "$wrapper_path" "$@"
    return
  fi

  prlctl exec "$vm_name" /usr/bin/sudo -H -u "$user_name" /usr/bin/env \
    "HOME=$home" \
    "USER=$user_name" \
    "LOGNAME=$user_name" \
    "PATH=$path_value" \
    "OPENCLAW_SECRET_ENV_NAME=$api_key_env" \
    "OPENCLAW_SECRET_FILE=$secret_path" \
    "OPENCLAW_WRAPPER_FILE=$wrapper_path" \
    /bin/bash "$wrapper_path" "$@"
}

parallels_macos_desktop_user_exec() {
  local vm_name="$1"
  local api_key_env="$2"
  local api_key_value="$3"
  shift 3

  if parallels_macos_current_user_available "$vm_name"then
    parallels_macos_desktop_user_exec_with_secret_file \
      "$vm_name" \
      "current-user" \
      "" \
      "" \
      "/opt/homebrew/bin:/opt/homebrew/opt/node/bin:/opt/homebrew/sbin:/usr/bin:/bin:/usr/sbin:/sbin" \
      "$api_key_env" \
      "$api_key_value" \
      "$@"
    return
  fi

  local user home
  user="$(parallels_macos_resolve_desktop_user "$vm_name")"
  [[ -n "$user" ]] || {
    printf 'unable to resolve macOS desktop user for sudo fallback\n' >&2
    return 1
  }
  home="$(parallels_macos_resolve_desktop_home "$vm_name" "$user")"
  printf 'warn: macOS --current-user unavailable; using root sudo fallback for %s\n' "$user" >&2
  parallels_macos_desktop_user_exec_with_secret_file \
    "$vm_name" \
    "sudo" \
    "$user" \
    "$home" \
    "/opt/homebrew/bin:/opt/homebrew/opt/node/bin:/opt/homebrew/sbin:/usr/bin:/bin:/usr/sbin:/sbin" \
    "$api_key_env" \
    "$api_key_value" \
    "$@"
}

Messung V0.5 in Prozent
C=95 H=94 G=94

¤ Dauer der Verarbeitung: 0.16 Sekunden  (vorverarbeitet am  2026-04-27) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.