# GoatCMS Distribution Official distribution of **GoatCMS** — installation guide, package repositories, and editor integrations. - Distribution root: `https://goatcms.com/dist/` - Latest version: `0.0.1` - Version-specific directory: `https://goatcms.com/dist/0.0.1/` --- ## Table of Contents 1. [Distribution Layout](#distribution-layout) 2. [Quick Install (One-liner)](#quick-install-one-liner) 3. [Manual Install](#manual-install) 4. [VSCode Extension](#vscode-extension) 5. [Package Repositories](#package-repositories) 6. [Integrity Verification](#integrity-verification) 7. [Directory Reference](#directory-reference) --- ## Distribution Layout Each released version is published under `https://goatcms.com/dist//` with the following structure: ``` / ├── install.sh # Unix installer (Linux / macOS, auto-detects OS & arch) ├── install.ps1 # Windows installer (auto-detects arch) ├── uninstall.sh # Unix uninstaller ├── archives/ │ ├── goat__linux_amd64.tar.gz │ ├── goat__linux_arm64.tar.gz │ ├── goat__darwin_arm64.tar.gz │ ├── goat__windows_amd64.zip │ └── goat__windows_arm64.zip ├── bin/ │ ├── goat_linux_amd64 │ ├── goat_linux_arm64 │ ├── goat_darwin_arm64 │ ├── goat_windows_amd64.exe │ └── goat_windows_arm64.exe ├── packages/ │ ├── goat__amd64.deb │ └── goat--1-x86_64.pkg.tar.zst ├── SHA256SUMS └── SHA256SUMS.sig ``` At the distribution root, `install.sh` and `install.ps1` are also exposed as convenience entry points that always point to the latest version: - `https://goatcms.com/dist/install.sh` - `https://goatcms.com/dist/install.ps1` --- ## Quick Install (One-liner) The installers are self-contained scripts published alongside the binaries. **They are not embedded in this document** — download and inspect them directly from the distribution. ### Linux / macOS ```bash curl -fsSL https://goatcms.com/dist/install.sh | bash ``` With arguments (specific version or custom install directory): ```bash curl -fsSL https://goatcms.com/dist/install.sh | bash -s -- --version 0.0.1 curl -fsSL https://goatcms.com/dist/install.sh | bash -s -- --dir "$HOME/.local/bin" ``` Recommended safety-conscious variant — inspect before running: ```bash curl -fsSL https://goatcms.com/dist/install.sh -o install.sh less install.sh bash install.sh ``` The script automatically detects: - **OS** via `uname -s` (`Linux` or `Darwin`) - **Architecture** via `uname -m` (`x86_64`/`amd64` → `amd64`, `aarch64`/`arm64` → `arm64`) and then downloads the matching archive from `archives/`, or falls back to the raw binary in `bin/` when a specific version directory is unavailable. ### Windows (PowerShell, run as Administrator) ```powershell iwr -useb https://goatcms.com/dist/install.ps1 | iex ``` To pass parameters, download the script first: ```powershell Invoke-WebRequest -Uri https://goatcms.com/dist/install.ps1 -OutFile install.ps1 Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass .\install.ps1 -Version "0.0.1" -InstallDir "C:\Tools\GoatCMS" ``` The script automatically detects the CPU architecture through `$env:PROCESSOR_ARCHITECTURE` (with a fallback to `$env:PROCESSOR_ARCHITEW6432` for 32-bit PowerShell on 64-bit Windows): - `AMD64` → `amd64` - `ARM64` → `arm64` --- ## Manual Install If you prefer to install manually, download the archive that matches your platform. ### Platform / architecture matrix | Platform | Architecture | Archive | |----------|---------------|------------------------------------------| | Linux | x86_64 | `archives/goat__linux_amd64.tar.gz` | | Linux | ARM64 | `archives/goat__linux_arm64.tar.gz` | | macOS | Apple Silicon | `archives/goat__darwin_arm64.tar.gz` | | Windows | x86_64 | `archives/goat__windows_amd64.zip` | | Windows | ARM64 | `archives/goat__windows_arm64.zip` | ### Linux / macOS ```bash VERSION="0.0.1" BASE="https://goatcms.com/dist/${VERSION}" # Linux x86_64 curl -fsSL "${BASE}/archives/goat_${VERSION}_linux_amd64.tar.gz" -o /tmp/goat.tar.gz sudo tar -xzf /tmp/goat.tar.gz -C /usr/local/bin/ sudo chmod +x /usr/local/bin/goat goat version ``` > macOS: if Gatekeeper blocks the binary, remove the quarantine attribute: > `sudo xattr -d com.apple.quarantine /usr/local/bin/goat` ### Windows ```powershell $VERSION = "0.0.1" $BASE = "https://goatcms.com/dist/$VERSION" Invoke-WebRequest -Uri "$BASE/archives/goat_${VERSION}_windows_amd64.zip" ` -OutFile "$env:TEMP\goat.zip" Expand-Archive -Path "$env:TEMP\goat.zip" -DestinationPath "$env:USERPROFILE\goat" [Environment]::SetEnvironmentVariable( "Path", "$([Environment]::GetEnvironmentVariable('Path','User'));$env:USERPROFILE\goat", "User" ) ``` --- ## VSCode Extension Goat script language support (syntax highlighting, basic language features) is distributed as a `.vsix` package: ``` https://goatcms.com/dist/vscode/goat-language-0.0.3.vsix ``` ### Install from the command line ```bash code --install-extension https://goatcms.com/dist/vscode/goat-language-0.0.3.vsix ``` Or download and install locally: ```bash curl -fsSL https://goatcms.com/dist/vscode/goat-language-0.0.3.vsix -o /tmp/goat.vsix code --install-extension /tmp/goat.vsix ``` Windows (PowerShell): ```powershell Invoke-WebRequest -Uri "https://goatcms.com/dist/vscode/goat-language-0.0.3.vsix" ` -OutFile "$env:TEMP\goat.vsix" code --install-extension "$env:TEMP\goat.vsix" ``` ### Install via the VSCode UI 1. Open the Command Palette (`Ctrl+Shift+P` / `Cmd+Shift+P`). 2. Run **Extensions: Install from VSIX…** 3. Select the downloaded `goat-language-0.0.3.vsix` file. ### Verify Open any `.goat` file. Syntax highlighting should be active in the status bar and editor. --- ## Package Repositories GoatCMS also publishes native system packages through its own repositories. ### APT (Debian / Ubuntu) Repository root: `https://goatcms.com/dist/repo/apt/` ```bash # 1. Import the GPG key curl -fsSL https://goatcms.com/dist/repo/apt/goatcms-archive-keyring.gpg \ | sudo gpg --dearmor -o /etc/apt/keyrings/goatcms.gpg # 2. Add the repository echo "deb [signed-by=/etc/apt/keyrings/goatcms.gpg] https://goatcms.com/dist/repo/apt/ stable main" \ | sudo tee /etc/apt/sources.list.d/goatcms.list # 3. Update and install sudo apt update sudo apt install goat ``` ### Arch Linux Repository root: `https://goatcms.com/dist/repo/arch/` Available architectures: `x86_64/`, `aarch64/` (pacman resolves `$arch` automatically). Add the following block to `/etc/pacman.conf` (before other repositories): ```ini [goatcms] SigLevel = Required DatabaseOptional Server = https://goatcms.com/dist/repo/arch/$arch ``` Then import the keyring and install: ```bash sudo curl -fsSL https://goatcms.com/dist/repo/arch/goatcms-archive-keyring.gpg \ -o /usr/share/pacman/keyrings/goatcms.gpg sudo pacman-key --add /usr/share/pacman/keyrings/goatcms.gpg sudo pacman-key --lsign-key goatcms sudo pacman -Sy sudo pacman -S goat ``` --- ## Integrity Verification Checksums and signatures are published with each release. ```bash BASE="https://goatcms.com/dist/0.0.1" curl -fsSL "${BASE}/SHA256SUMS" -o SHA256SUMS curl -fsSL "${BASE}/SHA256SUMS.sig" -o SHA256SUMS.sig # Verify checksums sha256sum -c SHA256SUMS # Verify GPG signature (requires the GoatCMS public key) gpg --verify SHA256SUMS.sig SHA256SUMS ``` The installers are signed in the same way: `install.sh.sig` accompanies `install.sh`. To verify before running: ```bash curl -fsSL https://goatcms.com/dist/install.sh -o install.sh curl -fsSL https://goatcms.com/dist/install.sh.sig -o install.sh.sig gpg --verify install.sh.sig install.sh && bash install.sh ``` --- ## Directory Reference | URL | Description | |----------------------------------------------|------------------------------------------| | `https://goatcms.com/dist/` | Root distribution index | | `https://goatcms.com/dist/install.sh` | Unix one-liner installer (latest) | | `https://goatcms.com/dist/install.ps1` | Windows one-liner installer (latest) | | `https://goatcms.com/dist/uninstall.sh` | Unix uninstaller | | `https://goatcms.com/dist/0.0.1/` | Version 0.0.1 release files | | `https://goatcms.com/dist/vscode/` | VSCode extension downloads | | `https://goatcms.com/dist/repo/` | Package repository root | | `https://goatcms.com/dist/repo/apt/` | APT repository (Debian / Ubuntu) | | `https://goatcms.com/dist/repo/arch/` | Arch Linux repository | --- ## License See the project homepage for license information: