sqzass.git

sqzass

~ A static site generator written in Rust
git clone https://github.com/debuman/sqzass.git
commit e9079c27d6bd627aa70360db81ff3822c89888f1
parent d81d8ac33984449a05ece527b892d3dbf36d765b
Author: sqzer <110329244+sqzer-x@users.noreply.github.com>
Date: Thu, 30 Jul 2026 22:28:04 +0900

퀵스타트를 진짜 한 줄로 만든다

사용자 지적 둘. 푸터의 상태 문구('early… no theme system yet')는 뺀다
— 정직은 문서 몫이지 랜딩 푸터의 몫이 아니다. 설치는 curl/tar/install
석 줄 대신 한 줄 두 개로: 사이트가 서빙하는 install.sh(| sh)와 cargo
install --git. 스크립트는 플랫폼 판별→최신 태그(릴리스 리다이렉트에서,
API는 공유 IP에서 403)→체크섬 검증→install 네 가지만 하고, 검증 도구가
없으면 중단한다. 로컬 실행으로 끝까지 검증했다. 설치 문서에도 '한 줄'
절을 앞세운다.

Diffstat:
Mdocs/content/_index.ko.md | 5++---
Mdocs/content/_index.md | 5++---
Mdocs/content/start/installation.ko.md | 21++++++++++++++++++++-
Mdocs/content/start/installation.md | 21++++++++++++++++++++-
Mdocs/static/css/landing.css | 3++-
Adocs/static/install.sh | 62++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mdocs/templates/landing.html | 9+++------
7 files changed, 111 insertion(+), 15 deletion(-)

diff --git a/docs/content/_index.ko.md b/docs/content/_index.ko.md
@@ -20,13 +20,12 @@ features_title = "기본으로 얻는 것"
 features_more = "나머지는 문서에 있습니다 →"
 
 quick_title = "빠른 시작"
-quick_install = "릴리스 바이너리 설치"
+quick_install = "설치 — 어느 줄이든 한 줄로 끝납니다"
 quick_use = "사이트 만들기"
-quick_note = "macOS arm64 빌드와 소스 빌드는"
+quick_note = "스크립트는 플랫폼을 판별하고 체크섬을 검증하며, cargo 줄은 소스에서 빌드합니다. 다른 방법은"
 quick_note_link = "설치 안내에 있습니다."
 
 foot_benchmark = "벤치마크"
-status_line = "v0.1.0 — 초기 단계이고, 그 점을 숨기지 않습니다. 테마 시스템은 아직 없습니다."
 built_line = "이 사이트도 sqzass가 빌드했습니다 — 문서가 곧 데모입니다."
 
 [[extra.bench]]
diff --git a/docs/content/_index.md b/docs/content/_index.md
@@ -20,13 +20,12 @@ features_title = "What you get"
 features_more = "Everything else is in the documentation →"
 
 quick_title = "Quick start"
-quick_install = "Install the release binary"
+quick_install = "Install — either line works"
 quick_use = "Make a site"
-quick_note = "macOS arm64 builds and building from source are covered in"
+quick_note = "The script detects your platform and verifies checksums; the cargo line builds from source. More options are in"
 quick_note_link = "the install guide."
 
 foot_benchmark = "Benchmark"
-status_line = "v0.1.0 — early, and honest about it. No theme system yet."
 built_line = "This site is built by sqzass itself — the docs are the demo."
 
 [[extra.bench]]
diff --git a/docs/content/start/installation.ko.md b/docs/content/start/installation.ko.md
@@ -1,6 +1,6 @@
 +++
 title = "설치"
-description = "소스에서 sqzass를 빌드합니다"
+description = "한 줄로, 미리 빌드된 바이너리로, 소스에서"
 weight = 10
 toc = true
 +++
@@ -8,6 +8,25 @@ toc = true
 sqzass는 런타임 의존성이 없는 단일 바이너리입니다. Node도, Python도, 시스템
 라이브러리도 필요 없습니다.
 
+## 한 줄
+
+```bash
+curl -fsSL https://sqzass.sqzer.com/install.sh | sh
+```
+
+스크립트가 하는 일은 정확히 넷이고, 실행 전에 [직접 읽어볼](/install.sh) 수
+있습니다: 플랫폼 판별(Linux x86_64 또는 Apple Silicon macOS), 최신 릴리스
+타르볼과 `.sha256` 다운로드, 체크섬 검증, `/usr/local/bin`에 `install` — sudo는
+그 디렉터리에 쓸 수 없을 때만 묻습니다. 다른 곳에 설치하려면
+`SQZASS_INSTALL_DIR`을 주세요. 그 밖의 일은 하지 않습니다 — 셸 설정도, `PATH`도
+건드리지 않습니다.
+
+Rust가 있다면 한 줄로 소스 빌드도 됩니다:
+
+```bash
+cargo install --git https://github.com/sqzer-x/sqzass
+```
+
 ## 소스에서 빌드
 
 ```bash
diff --git a/docs/content/start/installation.md b/docs/content/start/installation.md
@@ -1,6 +1,6 @@
 +++
 title = "Installation"
-description = "Build sqzass from source"
+description = "One line, a prebuilt binary, or from source"
 weight = 10
 toc = true
 +++
@@ -8,6 +8,25 @@ toc = true
 sqzass is a single binary with no runtime dependencies. No Node, no Python, no
 system libraries.
 
+## One line
+
+```bash
+curl -fsSL https://sqzass.sqzer.com/install.sh | sh
+```
+
+The script does exactly four things, and you can [read it](/install.sh) first:
+detect the platform (Linux x86_64 or Apple-silicon macOS), download the latest
+release tarball with its `.sha256`, verify the checksum, and `install` the
+binary into `/usr/local/bin` — asking for sudo only if that directory is not
+writable. Set `SQZASS_INSTALL_DIR` to install somewhere else. It touches
+nothing else: no shell config, no `PATH` edits.
+
+With Rust installed, one line also builds from source:
+
+```bash
+cargo install --git https://github.com/sqzer-x/sqzass
+```
+
 ## From source
 
 ```bash
diff --git a/docs/static/css/landing.css b/docs/static/css/landing.css
@@ -253,7 +253,7 @@ section, .foot { padding-inline: clamp(1.25rem, 4vw, 2.5rem); }
 /* ── 퀵스타트 ── */
 .steps {
   display: grid;
-  grid-template-columns: 2fr 1fr;
+  grid-template-columns: 1fr 1fr;
   gap: 1.1rem;
   margin: 2rem 0 0;
 }
@@ -261,6 +261,7 @@ section, .foot { padding-inline: clamp(1.25rem, 4vw, 2.5rem); }
    0으로 눌러야 pre의 overflow-x가 일을 한다. */
 .step { min-width: 0; }
 .step h3 { margin: 0 0 0.7rem; font-size: 1.02rem; font-weight: 700; }
+.step pre + pre { margin-top: 0.6rem; }
 .step pre {
   margin: 0;
   background: var(--code-bg);
diff --git a/docs/static/install.sh b/docs/static/install.sh
@@ -0,0 +1,62 @@
+#!/bin/sh
+# sqzass 설치 스크립트 — 이 머신에 맞는 최신 릴리스 바이너리를 받아 설치한다.
+#   curl -fsSL https://sqzass.sqzer.com/install.sh | sh
+#
+# 하는 일 전부: 플랫폼 판별 → 최신 태그 조회 → 타르볼과 .sha256 다운로드 →
+# 체크섬 검증 → /usr/local/bin에 설치(SQZASS_INSTALL_DIR로 변경 가능).
+# 그 밖의 일은 하지 않는다 — 셸 설정도, PATH도 건드리지 않는다.
+set -eu
+
+repo="sqzer-x/sqzass"
+
+case "$(uname -s)-$(uname -m)" in
+  Linux-x86_64) target="x86_64-unknown-linux-musl" ;;
+  Darwin-arm64) target="aarch64-apple-darwin" ;;
+  *)
+    echo "지원하지 않는 플랫폼입니다: $(uname -s) $(uname -m)" >&2
+    echo "소스에서 빌드하세요: https://sqzass.sqzer.com/start/installation/" >&2
+    exit 1
+    ;;
+esac
+
+# API가 아니라 releases/latest의 리다이렉트에서 태그를 읽는다 — API는
+# 미인증 요청에 레이트리밋이 있어 공유 IP(프록시·CI)에서 403이 난다.
+tag="$(curl -fsSLI -o /dev/null -w '%{url_effective}' \
+  "https://github.com/$repo/releases/latest")"
+tag="${tag##*/}"
+case "$tag" in
+  v*) ;;
+  *) echo "최신 릴리스를 찾지 못했습니다." >&2; exit 1 ;;
+esac
+
+name="sqzass-$tag-$target"
+url="https://github.com/$repo/releases/download/$tag/$name.tar.gz"
+
+tmp="$(mktemp -d)"
+trap 'rm -rf "$tmp"' EXIT
+
+echo "받는 중: $url"
+curl -fsSL -o "$tmp/$name.tar.gz" "$url"
+curl -fsSL -o "$tmp/$name.tar.gz.sha256" "$url.sha256"
+
+# 체크섬은 검증 도구가 있을 때만 건너뛰지 않는다 — 둘 다 없으면 중단이 정직하다.
+if command -v sha256sum >/dev/null 2>&1; then
+  (cd "$tmp" && sha256sum -c "$name.tar.gz.sha256" >/dev/null)
+elif command -v shasum >/dev/null 2>&1; then
+  (cd "$tmp" && shasum -a 256 -c "$name.tar.gz.sha256" >/dev/null)
+else
+  echo "sha256sum도 shasum도 없어 체크섬을 검증할 수 없습니다." >&2
+  exit 1
+fi
+
+tar -xzf "$tmp/$name.tar.gz" -C "$tmp"
+
+dir="${SQZASS_INSTALL_DIR:-/usr/local/bin}"
+if [ -d "$dir" ] && [ -w "$dir" ]; then
+  install -m 755 "$tmp/$name/sqzass" "$dir/sqzass"
+else
+  echo "$dir 에 쓰려면 관리자 권한이 필요합니다."
+  sudo install -m 755 "$tmp/$name/sqzass" "$dir/sqzass"
+fi
+
+echo "설치했습니다: $dir/sqzass ($("$dir/sqzass" --version))"
diff --git a/docs/templates/landing.html b/docs/templates/landing.html
@@ -121,14 +121,12 @@
       <div class="steps">
         <div class="step" data-reveal>
           <h3>{{ page.extra.quick_install }}</h3>
-          <pre><code>curl -LO https://github.com/sqzer-x/sqzass/releases/latest/download/sqzass-v0.1.0-x86_64-unknown-linux-musl.tar.gz
-tar xzf sqzass-*.tar.gz
-sudo install -m755 sqzass-*/sqzass /usr/local/bin/</code></pre>
+          <pre><code>curl -fsSL {{ site.origin }}{{ site.base_path }}/install.sh | sh</code></pre>
+          <pre><code>cargo install --git https://github.com/sqzer-x/sqzass</code></pre>
         </div>
         <div class="step" data-reveal>
           <h3>{{ page.extra.quick_use }}</h3>
-          <pre><code>sqzass init my-site
-sqzass serve -i my-site</code></pre>
+          <pre><code>sqzass init my-site &amp;&amp; sqzass serve -i my-site</code></pre>
         </div>
       </div>
       <p class="quick-note" data-reveal>{{ page.extra.quick_note }} <a href="{{ home }}start/installation/">{{ page.extra.quick_note_link }}</a></p>
@@ -147,7 +145,6 @@ sqzass serve -i my-site</code></pre>
         <a href="{{ lang.url }}" hreflang="{{ lang.code }}">{{ lang.name }}</a>
         {%- endfor %}
       </nav>
-      <p>{{ page.extra.status_line }}</p>
       <p>{{ page.extra.built_line }} · MIT</p>
     </div>
   </footer>