#!/bin/sh set -eu install_dir=${YSH_INSTALL_DIR:-/usr/local/bin} release_url=https://github.com/azohra/yaml.sh/releases/download/v1.18.1/ysh release_version=${release_url##*/download/v} release_version=${release_version%/ysh} if ! command -v curl >/dev/null 2>&1; then printf '%s\n' 'YAML.sh requires curl to download the release.' >&2 exit 1 fi if ! mkdir -p "${install_dir}" 2>/dev/null || [ ! -w "${install_dir}" ]; then printf '%s\n' "YAML.sh cannot write to ${install_dir}; re-run with sudo or set YSH_INSTALL_DIR to a writable directory." >&2 exit 1 fi temporary_file=$(mktemp "${TMPDIR:-/tmp}/ysh.XXXXXX") trap 'rm -f "${temporary_file}"' 0 HUP INT TERM expected_sha256=2c486cc7ba37f94cd91694774ff88abd2fc21cafea7fd0ad962a5bd3941e8bcb curl -fsSL "${release_url}" -o "${temporary_file}" if command -v sha256sum >/dev/null 2>&1; then actual_sha256=$(sha256sum "${temporary_file}") actual_sha256=${actual_sha256%% *} elif command -v shasum >/dev/null 2>&1; then actual_sha256=$(shasum -a 256 "${temporary_file}") actual_sha256=${actual_sha256%% *} elif command -v openssl >/dev/null 2>&1; then actual_sha256=$(openssl dgst -sha256 "${temporary_file}") actual_sha256=${actual_sha256##* } else printf '%s\n' 'YAML.sh requires sha256sum, shasum, or openssl to verify the download.' >&2 exit 1 fi if [ "${actual_sha256}" != "${expected_sha256}" ]; then printf '%s\n' 'YAML.sh checksum verification failed; refusing to install.' >&2 exit 1 fi cp "${temporary_file}" "${install_dir}/ysh" chmod 755 "${install_dir}/ysh" printf 'Installed ysh v%s to %s\n' "${release_version}" "${install_dir}" case ":${PATH}:" in *:"${install_dir}":*) ;; *) printf 'Note: %s is not on your PATH.\n' "${install_dir}" >&2 ;; esac