chore(home): mirror from kalinamall (c53704a) with papatramp URLs
This commit is contained in:
+143
@@ -0,0 +1,143 @@
|
||||
#!/usr/bin/env bash
|
||||
# Инициализация Cursor в текущем проекте; на новом хосте сначала настраивает git/SSH.
|
||||
|
||||
get_cursor_rules_dest() {
|
||||
printf '%s' "$HOME/CursorRules"
|
||||
}
|
||||
|
||||
get_cursor_bootstrap_root() {
|
||||
local rules_dest script_dir
|
||||
rules_dest="$(get_cursor_rules_dest)"
|
||||
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
if [[ -f "$script_dir/scripts/invoke-machine-bootstrap.sh" ]]; then
|
||||
printf '%s' "$script_dir"
|
||||
return 0
|
||||
fi
|
||||
if [[ -f "$rules_dest/local/git-ssh-hosts.conf" ]]; then
|
||||
printf '%s' "$rules_dest"
|
||||
return 0
|
||||
fi
|
||||
if [[ -f "$script_dir/local/git-ssh-hosts.conf" ]]; then
|
||||
printf '%s' "$script_dir"
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
initialize_cursor_rules_environment() {
|
||||
local update=0
|
||||
[[ "${1:-}" == '--update' ]] && update=1
|
||||
|
||||
local rules_dest bootstrap_root
|
||||
rules_dest="$(get_cursor_rules_dest)"
|
||||
bootstrap_root="$(get_cursor_bootstrap_root)" || {
|
||||
echo 'Error: CursorRules not found. Run install.sh from Gitea first:' >&2
|
||||
echo ' curl -fsSL https://git.papatramp.ru/PapaTramp/Rules/raw/branch/main/install.sh | bash' >&2
|
||||
return 1
|
||||
}
|
||||
|
||||
local skip_clone=0
|
||||
[[ -d "$rules_dest/.git" ]] && skip_clone=1
|
||||
|
||||
ROOT="$bootstrap_root" RULES_DEST="$rules_dest" SKIP_CLONE="$skip_clone" \
|
||||
bash "$bootstrap_root/scripts/invoke-machine-bootstrap.sh"
|
||||
|
||||
if [[ "$update" -eq 1 && -d "$rules_dest/.git" ]]; then
|
||||
echo '[*] Updating CursorRules from remote...'
|
||||
if git -C "$rules_dest" pull --ff-only; then
|
||||
echo '[+] CursorRules updated'
|
||||
else
|
||||
echo '[!] git pull failed in CursorRules' >&2
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
install_cursor_in_current_project() {
|
||||
local skip_git_remotes=0
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--skip-git-remotes) skip_git_remotes=1; shift ;;
|
||||
*) shift ;;
|
||||
esac
|
||||
done
|
||||
|
||||
local source rules_src scripts
|
||||
source="$(get_cursor_rules_dest)"
|
||||
rules_src="$source/.cursor/rules"
|
||||
scripts="$source/scripts"
|
||||
|
||||
if [[ -f "$source/.cursorignore" ]]; then
|
||||
cp -f "$source/.cursorignore" .
|
||||
echo '[+] .cursorignore copied'
|
||||
fi
|
||||
|
||||
if [[ -d "$rules_src" ]]; then
|
||||
mkdir -p ./.cursor/rules
|
||||
cp -f "$rules_src"/*.mdc ./.cursor/rules/
|
||||
echo '[+] .cursor/rules (*.mdc) copied'
|
||||
fi
|
||||
|
||||
if [[ -d .git ]]; then
|
||||
local gitignore='.gitignore' line
|
||||
for line in '.cursor/' '.cursorignore'; do
|
||||
if [[ ! -f "$gitignore" ]]; then
|
||||
printf '%s\n' "$line" > "$gitignore"
|
||||
echo "[+] .gitignore created ($line)"
|
||||
elif ! grep -Fxq "$line" "$gitignore" 2>/dev/null; then
|
||||
printf '%s\n' "$line" >> "$gitignore"
|
||||
echo "[+] .gitignore updated ($line)"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [[ "$skip_git_remotes" -eq 1 ]]; then
|
||||
echo '[!] Git remotes skipped'
|
||||
return 0
|
||||
fi
|
||||
|
||||
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
||||
echo '[!] Not a git repo - remotes skipped'
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [[ -f "$scripts/Set-GitRemotes.sh" ]]; then
|
||||
echo '[*] Configuring git remotes...'
|
||||
bash "$scripts/Set-GitRemotes.sh" || true
|
||||
fi
|
||||
|
||||
if [[ -f "$scripts/Ensure-GiteaHomeRepo.ps1" ]]; then
|
||||
local repo_name
|
||||
repo_name="$(basename "$(git rev-parse --show-toplevel)")"
|
||||
echo "[*] Ensuring home Gitea repo: $repo_name"
|
||||
if command -v pwsh >/dev/null 2>&1; then
|
||||
pwsh -NoProfile -File "$scripts/Ensure-GiteaHomeRepo.ps1" -RepoName "$repo_name" || true
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
init-cursor() {
|
||||
local update=0
|
||||
local skip_git_remotes=0
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
-Update|--update) update=1; shift ;;
|
||||
-SkipGitRemotes|--skip-git-remotes) skip_git_remotes=1; shift ;;
|
||||
*) shift ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ "$update" -eq 1 ]]; then
|
||||
initialize_cursor_rules_environment --update || return 1
|
||||
else
|
||||
initialize_cursor_rules_environment || return 1
|
||||
fi
|
||||
|
||||
if [[ "$skip_git_remotes" -eq 1 ]]; then
|
||||
install_cursor_in_current_project --skip-git-remotes
|
||||
else
|
||||
install_cursor_in_current_project
|
||||
fi
|
||||
echo '[i] Remotes policy: kalinamall=truth; home=Push-HomeMirror; github=Publish-GithubOrphan'
|
||||
echo '[+] init-cursor complete'
|
||||
}
|
||||
Reference in New Issue
Block a user