README: краткая шпаргалка; install.sh как install.ps1 (SSH/HTTPS авто).
This commit is contained in:
@@ -1,81 +1,114 @@
|
|||||||
# Rules
|
# Rules
|
||||||
|
|
||||||
Правила и скрипты для настройки нового компьютера: SSH-ключи, Cursor rules, git remotes, home Gitea.
|
Скрипты для Cursor rules, SSH и git remotes (`kalinamall`, `home`, `github`).
|
||||||
|
|
||||||
## Один вызов: `init-cursor`
|
## Быстро: что запускать
|
||||||
|
|
||||||
| Состояние машины | Что делает `init-cursor` |
|
| Ситуация | Windows | Mac / Linux |
|
||||||
|------------------|--------------------------|
|
|----------|---------|-------------|
|
||||||
| Ничего не настроено | SSH-ключи, Gitea API, clone Rules в `$HOME/CursorRules`, профиль shell |
|
| **Новый комп** (ничего не настроено) | Скопировать `install.ps1` с рабочего ПК → запустить в каталоге проекта | То же с `install.sh` |
|
||||||
| Git уже настроен | Только копирует rules в текущий проект + remotes |
|
| **Комп уже настраивали** (`~/CursorRules` есть) | `init-cursor` в каталоге проекта | `init-cursor` |
|
||||||
|
| **Только обновить rules** | `init-cursor -Update` | `init-cursor --update` |
|
||||||
|
|
||||||
Источник правил — локальный клон `$HOME/CursorRules` (после bootstrap). Обновить: `init-cursor -Update`.
|
Скрипты **сами** проверяют SSH, clone, ключи и remotes. Вручную выбирать SSH/HTTPS не нужно.
|
||||||
|
|
||||||
## Новый Windows-ПК
|
---
|
||||||
|
|
||||||
Репозиторий **приватный** — `irm .../raw/.../install.ps1` без авторизации даст **404**.
|
## Новый компьютер
|
||||||
|
|
||||||
### Вариант A: SSH уже работает (этот ПК)
|
Нужен только **git**. Repo приватный — `curl`/`irm` по raw-URL **не работают**.
|
||||||
|
|
||||||
|
### 1. Скопировать один файл с рабочей машины
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
cd C:\Users\papat\Projects\your-repo
|
# Windows — с другого ПК (пример)
|
||||||
git clone --depth 1 ssh://git@git.kalinamall.ru:2222/PapaTramp/Rules.git $HOME\CursorRules
|
scp user@work-pc:CursorRules/install.ps1 $env:TEMP\
|
||||||
& $HOME\CursorRules\install.ps1
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Вариант B: SSH ещё нет (HTTPS, логин один раз)
|
```bash
|
||||||
|
# Mac — с другого ПК
|
||||||
```powershell
|
scp user@work-pc:CursorRules/install.sh /tmp/
|
||||||
git clone --depth 1 https://git.kalinamall.ru/PapaTramp/Rules.git $HOME\CursorRules
|
|
||||||
& $HOME\CursorRules\install.ps1
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Дальше в любом проекте:
|
USB, общая папка — тоже подходит.
|
||||||
|
|
||||||
|
### 2. Запустить в каталоге **вашего проекта**
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
|
# Windows
|
||||||
|
cd C:\path\to\your-repo
|
||||||
|
& $env:TEMP\install.ps1
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Mac
|
||||||
|
cd ~/projects/your-repo
|
||||||
|
bash /tmp/install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Скрипт сам:
|
||||||
|
1. Клонирует Rules в `~/CursorRules` (SSH → если не вышло, HTTPS с логином)
|
||||||
|
2. Настраивает SSH-ключи и Gitea API (если ещё нет)
|
||||||
|
3. Копирует rules в текущий проект, настраивает remotes
|
||||||
|
4. Добавляет `init-cursor` в профиль shell
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Уже настроенный компьютер
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
cd C:\path\to\your-repo
|
||||||
init-cursor
|
init-cursor
|
||||||
```
|
```
|
||||||
|
|
||||||
## Новый Linux-хост
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/projects/your-repo
|
cd ~/projects/your-repo
|
||||||
curl -fsSL https://git.kalinamall.ru/PapaTramp/Rules/raw/branch/main/install.sh | bash
|
init-cursor
|
||||||
```
|
```
|
||||||
|
|
||||||
Затем:
|
Если команда не найдена — один раз:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
. $HOME\CursorRules\init-cursor.ps1 # Windows
|
||||||
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
init-cursor
|
source ~/CursorRules/init-cursor.sh # Mac
|
||||||
init-cursor --update
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Что происходит внутри
|
---
|
||||||
|
|
||||||
1. **install.ps1 / install.sh** — shallow clone Rules по HTTPS (первый раз)
|
## Обновить rules / скрипты
|
||||||
2. **init-cursor** вызывает `Invoke-MachineBootstrap` / `invoke-machine-bootstrap.sh`:
|
|
||||||
- `local/git-user.conf` — git user.name / email
|
|
||||||
- `scripts/Setup-GitSsh*` — ключи и `~/.ssh/config`
|
|
||||||
- `scripts/Register-GiteaSshKeys*` — pubkey в Gitea API
|
|
||||||
- clone/update `$HOME/CursorRules` (SSH, fallback HTTPS)
|
|
||||||
3. Копирует `.cursorignore`, `.cursor/rules/*.mdc`, дополняет `.gitignore`
|
|
||||||
4. `Set-GitRemotes*` + `Ensure-GiteaHomeRepo.ps1` для текущего репозитория
|
|
||||||
|
|
||||||
## Git remotes
|
```powershell
|
||||||
|
init-cursor -Update # Windows
|
||||||
|
```
|
||||||
|
|
||||||
| Remote | Хост | URL |
|
```bash
|
||||||
|--------|------|-----|
|
init-cursor --update # Mac
|
||||||
| `kalinamall` | git.kalinamall.ru | `ssh://git@git.kalinamall.ru:2222/PapaTramp/<Repo>.git` |
|
```
|
||||||
| `home` | git.papatramp.ru | `ssh://git@git.papatramp.ru:2222/PapaTramp/<Repo>.git` |
|
|
||||||
| `github` | github.com/PTah | `git@github.com:PTah/<Repo>.git` |
|
|
||||||
|
|
||||||
`origin` не используется. `Set-GitRemotes` переименует старый `origin` по хосту. Push/pull Rules: `git push kalinamall`.
|
Обновит `$HOME/CursorRules` с Gitea и перекопирует rules в проект.
|
||||||
|
|
||||||
## Конфиги (local/)
|
---
|
||||||
|
|
||||||
|
## Git remotes (в каждом проекте)
|
||||||
|
|
||||||
|
| Remote | Куда |
|
||||||
|
|--------|------|
|
||||||
|
| `kalinamall` | git.kalinamall.ru |
|
||||||
|
| `home` | git.papatramp.ru |
|
||||||
|
| `github` | github.com/PTah |
|
||||||
|
|
||||||
|
Push: `git push kalinamall`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Конфиги (`local/`)
|
||||||
|
|
||||||
| Файл | Назначение |
|
| Файл | Назначение |
|
||||||
|------|------------|
|
|------|------------|
|
||||||
| `git-ssh-hosts.conf` | Хосты и профили SSH-ключей |
|
| `git-ssh-hosts.conf` | SSH-хосты и ключи |
|
||||||
| `git-user.conf` | `user.name` / `user.email` |
|
| `git-user.conf` | git user.name / email |
|
||||||
| `kalinamall-gitea.conf` | API kalinamall |
|
| `kalinamall-gitea.conf` | API kalinamall |
|
||||||
| `papatramp-gitea.conf` | API home Gitea |
|
| `papatramp-gitea.conf` | API home Gitea |
|
||||||
|
|||||||
+8
-3
@@ -1,11 +1,16 @@
|
|||||||
#Requires -Version 5.1
|
#Requires -Version 5.1
|
||||||
<#
|
<#
|
||||||
.SYNOPSIS
|
.SYNOPSIS
|
||||||
Первая загрузка Rules и запуск init-cursor в текущем проекте.
|
Точка входа на новом ПК: clone Rules, bootstrap, init-cursor в текущем проекте.
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
SSH / HTTPS / ключи / remotes — автоматически. Запускать из каталога проекта.
|
||||||
|
На голом ПК: скопируйте этот файл с рабочей машины (scp/USB), затем:
|
||||||
|
& .\install.ps1
|
||||||
|
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
git clone --depth 1 ssh://git@git.kalinamall.ru:2222/PapaTramp/Rules.git $HOME\CursorRules
|
cd C:\path\to\your-repo
|
||||||
& $HOME\CursorRules\install.ps1
|
& $env:TEMP\install.ps1
|
||||||
#>
|
#>
|
||||||
[CmdletBinding()]
|
[CmdletBinding()]
|
||||||
param(
|
param(
|
||||||
|
|||||||
+52
-7
@@ -1,17 +1,62 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Первая загрузка с Gitea: clone Rules и запуск init-cursor в текущем проекте.
|
# Первая загрузка Rules и init-cursor. SSH/HTTPS и bootstrap — автоматически.
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
RULES_DEST="${RULES_DEST:-$HOME/CursorRules}"
|
RULES_DEST="${RULES_DEST:-$HOME/CursorRules}"
|
||||||
HTTPS_URL="${HTTPS_URL:-https://git.kalinamall.ru/PapaTramp/Rules.git}"
|
HTTPS_URL="${HTTPS_URL:-https://git.kalinamall.ru/PapaTramp/Rules.git}"
|
||||||
|
SSH_URL="${SSH_URL:-ssh://git@git.kalinamall.ru:2222/PapaTramp/Rules.git}"
|
||||||
|
SKIP_GIT_REMOTES=0
|
||||||
|
UPDATE=0
|
||||||
|
|
||||||
if [[ ! -d "$RULES_DEST/.git" ]]; then
|
while [[ $# -gt 0 ]]; do
|
||||||
echo '[*] Cloning Rules from Gitea (HTTPS, login once if asked)...'
|
case "$1" in
|
||||||
[[ -e "$RULES_DEST" ]] && { echo "Path exists and is not a git repo: $RULES_DEST" >&2; exit 1; }
|
--skip-git-remotes) SKIP_GIT_REMOTES=1; shift ;;
|
||||||
|
--update|-Update) UPDATE=1; shift ;;
|
||||||
|
*) shift ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
log_step() { printf '[*] %s\n' "$1"; }
|
||||||
|
log_ok() { printf '[+] %s\n' "$1"; }
|
||||||
|
log_warn() { printf '[!] %s\n' "$1"; }
|
||||||
|
|
||||||
|
ensure_rules_clone() {
|
||||||
|
if [[ -d "$RULES_DEST/.git" ]]; then
|
||||||
|
log_step 'Updating CursorRules...'
|
||||||
|
git -C "$RULES_DEST" pull --ff-only
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -e "$RULES_DEST" ]]; then
|
||||||
|
local backup="${RULES_DEST}.bak-$(date +%Y%m%d-%H%M%S)"
|
||||||
|
log_warn "Replacing non-git folder: $RULES_DEST -> $backup"
|
||||||
|
mv "$RULES_DEST" "$backup"
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_step 'Cloning Rules via SSH...'
|
||||||
|
if git clone --depth 1 "$SSH_URL" "$RULES_DEST" 2>/dev/null; then
|
||||||
|
log_ok "Cloned to $RULES_DEST"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_warn 'SSH clone failed - trying HTTPS (enter Gitea login once)...'
|
||||||
git clone --depth 1 "$HTTPS_URL" "$RULES_DEST"
|
git clone --depth 1 "$HTTPS_URL" "$RULES_DEST"
|
||||||
echo "[+] Cloned to $RULES_DEST"
|
log_ok "Cloned to $RULES_DEST"
|
||||||
fi
|
}
|
||||||
|
|
||||||
|
ensure_rules_clone
|
||||||
|
|
||||||
# shellcheck source=/dev/null
|
# shellcheck source=/dev/null
|
||||||
source "$RULES_DEST/init-cursor.sh"
|
source "$RULES_DEST/init-cursor.sh"
|
||||||
init-cursor "$@"
|
|
||||||
|
if [[ "$UPDATE" -eq 1 ]]; then
|
||||||
|
if [[ "$SKIP_GIT_REMOTES" -eq 1 ]]; then
|
||||||
|
init-cursor --update --skip-git-remotes
|
||||||
|
else
|
||||||
|
init-cursor --update
|
||||||
|
fi
|
||||||
|
elif [[ "$SKIP_GIT_REMOTES" -eq 1 ]]; then
|
||||||
|
init-cursor --skip-git-remotes
|
||||||
|
else
|
||||||
|
init-cursor
|
||||||
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user