126 lines
3.5 KiB
Markdown
126 lines
3.5 KiB
Markdown
|
|
# Setup — Working Group OntoRef
|
||
|
|
|
||
|
|
Lo que tenéis que tener instalado y preparado **antes** de la sesión 1 del
|
||
|
|
working group. Tiempo estimado: 20-30 minutos si todo va bien, 1 hora si toca
|
||
|
|
debuggear instalación.
|
||
|
|
|
||
|
|
## Requisitos previos
|
||
|
|
|
||
|
|
- macOS o Linux (ambos probados; Windows no soportado en este ciclo)
|
||
|
|
- Acceso a terminal y editor de texto cualquiera (vim, neovim, vscode, zed,
|
||
|
|
helix, lo que uséis)
|
||
|
|
- Conexión a internet en la sesión (para clonar repos)
|
||
|
|
|
||
|
|
## 1. Instalar Nickel
|
||
|
|
|
||
|
|
Nickel es el lenguaje de contratos. Se instala como un binario único.
|
||
|
|
|
||
|
|
### macOS
|
||
|
|
|
||
|
|
```bash
|
||
|
|
brew install nickel-lang
|
||
|
|
```
|
||
|
|
|
||
|
|
Si no usáis brew:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
curl -L https://github.com/tweag/nickel/releases/latest/download/nickel-x86_64-apple-darwin --output ~/.local/bin/nickel
|
||
|
|
chmod +x ~/.local/bin/nickel
|
||
|
|
```
|
||
|
|
|
||
|
|
### Linux
|
||
|
|
|
||
|
|
```bash
|
||
|
|
curl -L https://github.com/tweag/nickel/releases/latest/download/nickel-x86_64-unknown-linux-gnu --output ~/.local/bin/nickel
|
||
|
|
chmod +x ~/.local/bin/nickel
|
||
|
|
```
|
||
|
|
|
||
|
|
(Asegúrate de que `~/.local/bin` está en tu `$PATH`.)
|
||
|
|
|
||
|
|
### Verificar
|
||
|
|
|
||
|
|
```bash
|
||
|
|
nickel --version
|
||
|
|
```
|
||
|
|
|
||
|
|
Debe mostrar `nickel 1.16.0` o superior.
|
||
|
|
|
||
|
|
## 2. Instalar la CLI de OntoRef
|
||
|
|
|
||
|
|
OntoRef es la herramienta que opera sobre `.ontology/` y se construye con
|
||
|
|
`cargo`. Necesitáis tener Rust instalado (`rustup` si no lo tenéis).
|
||
|
|
|
||
|
|
```bash
|
||
|
|
git clone https://github.com/jesusperez-pro/ontoref.git ~/dev/ontoref
|
||
|
|
cd ~/dev/ontoref
|
||
|
|
cargo install --path . --bin ontoref
|
||
|
|
```
|
||
|
|
|
||
|
|
(El path del repo y la URL son orientativos — si Jesús os da uno distinto,
|
||
|
|
usad el que os pase.)
|
||
|
|
|
||
|
|
### Verificar
|
||
|
|
|
||
|
|
```bash
|
||
|
|
ontoref --version
|
||
|
|
ontoref describe --help
|
||
|
|
```
|
||
|
|
|
||
|
|
Si `ontoref describe --help` devuelve la lista de subcomandos, está listo.
|
||
|
|
|
||
|
|
## 3. Preparar lo que traéis a la sesión
|
||
|
|
|
||
|
|
### Un proyecto vuestro
|
||
|
|
|
||
|
|
Cualquier proyecto que tengáis vivo y conozcáis bien. **Rust o no, da igual.**
|
||
|
|
Lo que importa es que sepáis hablar de él. Si tenéis varios, traed UNO — el
|
||
|
|
que más os duela en términos de coherencia perdida.
|
||
|
|
|
||
|
|
### Una decisión arquitectónica recordada
|
||
|
|
|
||
|
|
Algo que decidisteis en su momento y que sigue vivo en el código:
|
||
|
|
|
||
|
|
- "Usamos PostgreSQL en vez de SQLite porque…"
|
||
|
|
- "Todas las APIs públicas tienen rate-limiting porque…"
|
||
|
|
- "El módulo de auth no importa de billing porque…"
|
||
|
|
- "Cualquier campo público de la API tiene que estar versionado porque…"
|
||
|
|
|
||
|
|
No necesita ser sofisticada. Necesita ser **vuestra** y **viva**.
|
||
|
|
|
||
|
|
### Disposición a romperla
|
||
|
|
|
||
|
|
Vamos a modelar esa decisión como contrato y luego vamos a intentar violarla
|
||
|
|
en vivo para ver el typecheck rechazándola. Si sois posesivos con vuestras
|
||
|
|
decisiones, el ejercicio se hace cuesta arriba.
|
||
|
|
|
||
|
|
## 4. Comprobaciones finales (24h antes)
|
||
|
|
|
||
|
|
Ejecutad esto en una terminal limpia:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
nickel --version # debe responder
|
||
|
|
ontoref --version # debe responder
|
||
|
|
mkdir -p ~/tmp/wg-test && cd ~/tmp/wg-test
|
||
|
|
echo '{ x = 1 }' > test.ncl
|
||
|
|
nickel export test.ncl # debe imprimir {"x": 1}
|
||
|
|
```
|
||
|
|
|
||
|
|
Si los cuatro comandos pasan, estáis listos.
|
||
|
|
|
||
|
|
## Si algo falla
|
||
|
|
|
||
|
|
- **Antes de la sesión**: avisad por el grupo de Telegram. Es mejor 30 minutos
|
||
|
|
de troubleshooting compartido que perder 30 minutos de la sesión.
|
||
|
|
- **Durante la sesión**: pareja con quien sí tiene el setup hasta que se
|
||
|
|
resuelva. La sesión no espera, pero tampoco se deja a nadie atrás.
|
||
|
|
|
||
|
|
## Recursos opcionales (no necesarios para la sesión 1)
|
||
|
|
|
||
|
|
- [Nickel Documentation](https://nickel-lang.org/) — para hojearlo si queréis
|
||
|
|
contexto
|
||
|
|
- [OntoRef README](https://github.com/jesusperez-pro/ontoref) — la herramienta
|
||
|
|
por dentro
|
||
|
|
|
||
|
|
No hace falta leerlos antes. Lo que se necesita aprender, se aprende en
|
||
|
|
sesión.
|