first pass of merging in warp (doesn't build)
This commit is contained in:
+166
-4
@@ -1,13 +1,175 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail
|
||||
|
||||
# Bootstrap dispatches to the platform-specific install scripts. Each step
|
||||
# that needs root sources `script/warp_sudo` and asks for confirmation
|
||||
# before running. Pass -y / --yes (or set WARP_SKIP_SUDO_PROMPT=1) to skip
|
||||
# the prompts in unattended environments.
|
||||
|
||||
OS_TYPE="$(uname -s)"
|
||||
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")"/.. && pwd)"
|
||||
INSTALL_COMMON_SKILLS=1
|
||||
COMMON_SKILLS_TARGET="${WARP_COMMON_SKILLS_INSTALL_TARGET:-}"
|
||||
PLATFORM_ARGS=()
|
||||
|
||||
cd "${REPO_ROOT}"
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Usage: ./script/bootstrap [options]
|
||||
|
||||
Prepare this checkout for Warp development by running the platform-specific bootstrap steps.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help message.
|
||||
--install-common-skills Install or update common agent skills from skills-lock.json (default).
|
||||
--install-common-skills-in-repo
|
||||
Install or update common agent skills in this checkout's .agents/skills.
|
||||
--install-common-skills-globally
|
||||
Install or update common agent skills in ~/.agents/skills.
|
||||
--skip-common-skills Skip installing common agent skills.
|
||||
|
||||
Environment:
|
||||
WARP_SKIP_COMMON_SKILLS_INSTALL=1
|
||||
Skip installing common agent skills, even when --install-common-skills is provided.
|
||||
WARP_COMMON_SKILLS_INSTALL_TARGET=project|global
|
||||
Choose the install target when no explicit prompt answer is provided.
|
||||
Target prompting and duplicate checks are delegated to
|
||||
warpdotdev/common-skills/scripts/install_common_skills.
|
||||
WARP_COMMON_SKILLS_SCRIPTS_DIR=/path/to/common-skills/scripts
|
||||
Override where common-skills management scripts are loaded from.
|
||||
If unset, ./script/resolve_common_skills executes the raw script from
|
||||
warpdotdev/common-skills.
|
||||
WARP_COMMON_SKILLS_REF=<git-ref>
|
||||
Override the remote warpdotdev/common-skills ref for raw script fallback.
|
||||
EOF
|
||||
}
|
||||
|
||||
print_bootstrap_preview() {
|
||||
local platform="$1"
|
||||
|
||||
echo "Warp bootstrap is starting for ${platform}."
|
||||
echo "It will:"
|
||||
|
||||
if [[ "${platform}" = "macOS" ]]; then
|
||||
echo " - Configure Xcode as the active developer directory."
|
||||
echo " - Install or update Cargo, Homebrew, PowerShell, Docker, gcloud, and related development tools."
|
||||
echo " - Add the aarch64-apple-darwin Rust target."
|
||||
elif [[ "${platform}" = "Linux" ]]; then
|
||||
echo " - Update apt package metadata."
|
||||
echo " - Install dependencies needed to build, run, and test Warp."
|
||||
echo " - Install linuxdeploy and check gcloud authentication."
|
||||
fi
|
||||
|
||||
if [[ "${INSTALL_COMMON_SKILLS}" -eq 0 ]]; then
|
||||
echo " - Skip common agent skills because --skip-common-skills was provided."
|
||||
elif [[ "${WARP_SKIP_COMMON_SKILLS_INSTALL:-}" = "1" ]]; then
|
||||
echo " - Skip common agent skills because WARP_SKIP_COMMON_SKILLS_INSTALL=1."
|
||||
elif [[ "${COMMON_SKILLS_TARGET}" = "global" ]]; then
|
||||
echo " - Install or update common agent skills in ~/.agents/skills if needed."
|
||||
elif [[ "${COMMON_SKILLS_TARGET}" = "project" ]]; then
|
||||
echo " - Install or update common agent skills in this checkout's .agents/skills if needed."
|
||||
else
|
||||
echo " - Prompt for where common agent skills should be installed before installing or updating them."
|
||||
fi
|
||||
if [[ "${INSTALL_COMMON_SKILLS}" -eq 1 && "${WARP_SKIP_COMMON_SKILLS_INSTALL:-}" != "1" ]]; then
|
||||
echo " - Verify installed common skills match skills-lock.json."
|
||||
fi
|
||||
echo "Run ./script/bootstrap --help to see options and environment overrides."
|
||||
echo
|
||||
}
|
||||
|
||||
|
||||
for arg in "$@"; do
|
||||
case "${arg}" in
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
-y|--yes)
|
||||
export WARP_SKIP_SUDO_PROMPT=1
|
||||
if [[ ! "$OS_TYPE" =~ ^(MINGW64_NT|MSYS_NT) ]]; then
|
||||
PLATFORM_ARGS+=("${arg}")
|
||||
fi
|
||||
;;
|
||||
--install-common-skills)
|
||||
INSTALL_COMMON_SKILLS=1
|
||||
;;
|
||||
--install-common-skills-in-repo)
|
||||
INSTALL_COMMON_SKILLS=1
|
||||
COMMON_SKILLS_TARGET="project"
|
||||
;;
|
||||
--install-common-skills-globally)
|
||||
INSTALL_COMMON_SKILLS=1
|
||||
COMMON_SKILLS_TARGET="global"
|
||||
;;
|
||||
--skip-common-skills)
|
||||
INSTALL_COMMON_SKILLS=0
|
||||
;;
|
||||
*)
|
||||
PLATFORM_ARGS+=("${arg}")
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
maybe_install_common_skills() {
|
||||
if [[ "${INSTALL_COMMON_SKILLS}" -eq 1 ]]; then
|
||||
local target_args=()
|
||||
if [[ "${WARP_SKIP_COMMON_SKILLS_INSTALL:-}" = "1" ]]; then
|
||||
return
|
||||
fi
|
||||
if [[ "${COMMON_SKILLS_TARGET}" = "project" || "${COMMON_SKILLS_TARGET}" = "global" ]]; then
|
||||
target_args=("--${COMMON_SKILLS_TARGET}")
|
||||
if ! ./script/resolve_common_skills install_common_skills -- --repo-root "${REPO_ROOT}" "${target_args[@]}" --if-needed; then
|
||||
echo "error: unable to install common skills; continuing without them." >&2
|
||||
fi
|
||||
else
|
||||
if ! ./script/resolve_common_skills install_common_skills -- --repo-root "${REPO_ROOT}" --if-needed --prompt-for-target; then
|
||||
echo "error: unable to install common skills; continuing without them." >&2
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# This repository requires Git LFS; ensure it is installed and initialized
|
||||
# for this checkout.
|
||||
ensure_git_lfs() {
|
||||
if ! command -v git-lfs >/dev/null 2>&1; then
|
||||
echo
|
||||
echo "warning: git-lfs is not installed. Install it before continuing:"
|
||||
case "${OS_TYPE}" in
|
||||
Darwin) echo " brew install git-lfs" ;;
|
||||
Linux) echo " sudo apt-get install -y git-lfs # or your distro's package manager" ;;
|
||||
MINGW64_NT*|MSYS_NT*) echo " choco install git-lfs # or: winget install GitHub.GitLFS" ;;
|
||||
*) echo " See https://git-lfs.com for install instructions." ;;
|
||||
esac
|
||||
echo "After installing, re-run ./script/bootstrap."
|
||||
return 1
|
||||
fi
|
||||
git lfs install --local >/dev/null
|
||||
git lfs pull
|
||||
}
|
||||
|
||||
ensure_git_lfs
|
||||
|
||||
if [[ "$OS_TYPE" = "Darwin" ]]; then
|
||||
./script/macos/bootstrap "$@"
|
||||
print_bootstrap_preview "macOS"
|
||||
./script/macos/bootstrap "${PLATFORM_ARGS[@]}"
|
||||
maybe_install_common_skills
|
||||
elif [[ "$OS_TYPE" = "Linux" ]]; then
|
||||
./script/linux/bootstrap "$@"
|
||||
elif [[ "$OS_TYPE" =~ ^[MINGW64_NT|MSYS_NT] ]]; then
|
||||
./script/windows/bootstrap.ps1 "$@"
|
||||
print_bootstrap_preview "Linux"
|
||||
./script/linux/bootstrap "${PLATFORM_ARGS[@]}"
|
||||
maybe_install_common_skills
|
||||
elif [[ "$OS_TYPE" =~ ^(MINGW64_NT|MSYS_NT) ]]; then
|
||||
if [[ "${INSTALL_COMMON_SKILLS}" -eq 1 ]]; then
|
||||
if [[ -n "${COMMON_SKILLS_TARGET}" ]]; then
|
||||
./script/windows/bootstrap.ps1 "${PLATFORM_ARGS[@]}" -InstallCommonSkills -CommonSkillsTarget "${COMMON_SKILLS_TARGET}"
|
||||
else
|
||||
./script/windows/bootstrap.ps1 "${PLATFORM_ARGS[@]}" -InstallCommonSkills
|
||||
fi
|
||||
else
|
||||
./script/windows/bootstrap.ps1 "${PLATFORM_ARGS[@]}"
|
||||
fi
|
||||
else
|
||||
echo "No bootstrap script defined for the current platform!"
|
||||
exit 1
|
||||
|
||||
Reference in New Issue
Block a user