simpleblog

Generador estatico minimalista de blog
git clone https://git.fedi.ovh/simpleblog
Log | Files | Refs

commit f8b50079d3c87d7b5fa0abf088db01b6e880595c
parent 5eb390fee04012cadb2331b4521ccc04ed576dca
Author: Juan <juan@fedi.ovh>
Date:   Mon, 18 May 2026 14:12:46 +0200

remove Makefile, add ./dev wrapper

make no viene en alpine base — pedirla solo para wrappers contradice
el minimalismo. ahora:

- el APKBUILD instala con `install -Dm` directo (sin `make install`),
  asi el paquete no depende de make ni build-base
- script `./dev` (8 lineas sh) hace de wrapper para devs sobre example/:
  `./dev build`, `./dev serve`, `./dev clean`, `./dev stats`
- tarball para abuild: `git archive --format=tar.gz --prefix=X HEAD`

usuario final solo necesita `apk add simpleblog` (que trae smu). nada
de make/build-base/git para construir el blog.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

Diffstat:
DMakefile | 46----------------------------------------------
Malpine/APKBUILD | 20++++++++++++++++----
Adev | 10++++++++++
Mobjetivo.txt | 40+++++++++++++++++++++++++++-------------
4 files changed, 53 insertions(+), 63 deletions(-)

diff --git a/Makefile b/Makefile @@ -1,46 +0,0 @@ -.POSIX: - -PKGNAME = simpleblog -VERSION = 0.1 -PREFIX = /usr/local -BIN = simpleblog -SHAREDIR = $(PREFIX)/share/simpleblog -EXAMPLE = example -PORT = 8080 -DIST = $(PKGNAME)-$(VERSION).tar.gz - -all: build - -# build local del sitio de ejemplo, usando este repo como defaults -# (templates/ y skel/ del repo, sin necesidad de instalar el paquete) -build: - cd $(EXAMPLE) && SIMPLEBLOG_DEFAULTS=$$PWD/.. ../simpleblog build - -clean: - cd $(EXAMPLE) && SIMPLEBLOG_DEFAULTS=$$PWD/.. ../simpleblog clean - -stats: - cd $(EXAMPLE) && SIMPLEBLOG_DEFAULTS=$$PWD/.. ../simpleblog stats - -serve: - cd $(EXAMPLE) && SIMPLEBLOG_PORT=$(PORT) SIMPLEBLOG_DEFAULTS=$$PWD/.. ../simpleblog serve - -# instala el script y los defaults globalmente -install: - mkdir -p $(DESTDIR)$(PREFIX)/bin - mkdir -p $(DESTDIR)$(SHAREDIR) - cp -f $(BIN) $(DESTDIR)$(PREFIX)/bin/$(BIN) - chmod 755 $(DESTDIR)$(PREFIX)/bin/$(BIN) - cp -r templates $(DESTDIR)$(SHAREDIR)/ - cp -r skel $(DESTDIR)$(SHAREDIR)/ - -uninstall: - rm -f $(DESTDIR)$(PREFIX)/bin/$(BIN) - rm -rf $(DESTDIR)$(SHAREDIR) - -# tarball para empaquetar (lo consume el APKBUILD) -dist: - git archive --format=tar.gz --prefix=$(PKGNAME)-$(VERSION)/ HEAD -o $(DIST) - @echo "creado $(DIST)" - -.PHONY: all build clean stats serve install uninstall dist diff --git a/alpine/APKBUILD b/alpine/APKBUILD @@ -7,7 +7,8 @@ url="https://git.fedi.ovh/simpleblog/" arch="noarch" license="MIT" depends="smu" -# darkhttpd/imagemagick son opcionales (serve / process_images) +# darkhttpd y imagemagick son opcionales (serve / process_images). +# se pueden instalar luego si el usuario los necesita. makedepends="" subpackages="$pkgname-doc" source="$pkgname-$pkgver.tar.gz" @@ -15,10 +16,21 @@ options="!check" package() { cd "$builddir" - make install \ - PREFIX=/usr \ - DESTDIR="$pkgdir" + # script principal + install -Dm755 simpleblog "$pkgdir/usr/bin/simpleblog" + + # plantillas por defecto + for f in templates/*; do + install -Dm644 "$f" "$pkgdir/usr/share/$pkgname/$f" + done + + # esqueleto para `simpleblog init` + for f in $(find skel -type f); do + install -Dm644 "$f" "$pkgdir/usr/share/$pkgname/$f" + done + + # doc install -Dm644 objetivo.txt \ "$pkgdir/usr/share/doc/$pkgname/objetivo.txt" } diff --git a/dev b/dev @@ -0,0 +1,10 @@ +#!/bin/sh +# wrapper para desarrollar el repo sin instalar simpleblog. +# ejecuta el `simpleblog` de este repo sobre example/ como sitio, +# apuntando los defaults (templates/, skel/) a la raiz del repo. +# +# uso: ./dev [build|clean|serve|stats] +set -eu +DIR=$(cd "$(dirname "$0")" && pwd) +cd "$DIR/example" +exec env SIMPLEBLOG_DEFAULTS="$DIR" "$DIR/simpleblog" "${1:-build}" diff --git a/objetivo.txt b/objetivo.txt @@ -30,11 +30,11 @@ DECISIONES (2026-05-18) - Estilo: estructura semantica + css minimal. -ESTRUCTURA (tras refactor 2026-05-18, repo empaquetable) --------------------------------------------------------- +ESTRUCTURA (tras refactor 2026-05-18, repo empaquetable, sin make) +------------------------------------------------------------------ repo/ simpleblog script principal (sh) -> /usr/bin/simpleblog - Makefile build / install / dist + dev wrapper sh para devs (./dev build|serve|...) templates/ plantillas DEFAULT -> /usr/share/simpleblog/templates/ header.html, footer.html, post.html, page.html, index.html, index-item.html, tags.html, @@ -42,7 +42,7 @@ repo/ skel/ esqueleto para `simpleblog init` -> /usr/share/simpleblog/skel/ example/ sitio funcional de demo (posts, pages, config...) - alpine/APKBUILD receta para empaquetar a .apk + alpine/APKBUILD receta para empaquetar a .apk (sin make) objetivo.txt este fichero sitio del usuario (creado con `simpleblog init`): @@ -57,21 +57,32 @@ sitio del usuario (creado con `simpleblog init`): USO --- -# desarrollo local del repo (sin instalar) -make build construye example/public/ con templates/ del repo -make serve sirve example/public/ (darkhttpd / busybox / python) -make stats resumen de tamanos -make clean borra example/public/ -make install instala globalmente (script + templates + skel) -make dist crea tarball para empaquetar - -# como usuario final (despues de instalar) +# desarrollo local del repo (sin instalar, sin make) +./dev build construye example/public/ con templates/ del repo +./dev serve sirve example/public/ (darkhttpd / busybox / python) +./dev stats resumen de tamanos +./dev clean borra example/public/ + +# tarball para empaquetar (lo consume el APKBUILD en alpine/) +git archive --format=tar.gz --prefix=simpleblog-0.1/ HEAD \ + -o simpleblog-0.1.tar.gz + +# como usuario final (despues de `apk add simpleblog`) simpleblog init inicializa un sitio nuevo en el cwd (copia skel) simpleblog build genera public/ simpleblog serve sirve public/ en :8080 simpleblog stats resumen de tamanos simpleblog clean borra public/ +DEPENDENCIAS DEL PAQUETE +------------------------ +- smu (obligatoria) — conversor markdown +- darkhttpd o busybox-extras (opcional) — solo para `simpleblog serve` +- imagemagick (opcional) — solo para procesar imagenes + +Nada de make/build-base/git para el usuario final. `apk add simpleblog` +y a usar. + HECHO (2026-05-18) ------------------ @@ -129,6 +140,9 @@ HECHO (2026-05-18) nuevo comando `init` que copia skel al cwd. Skel minimo en skel/. Sitio de demo en example/. APKBUILD en alpine/. smu deja de ser vendored y pasa a paquete aparte (apk add smu). +[x] Quitar make: no era coherente con la filosofia (en Alpine base no + viene). APKBUILD usa `install -Dm` directamente. Para devs, un + script `./dev` sh de 8 lineas hace de wrapper sobre example/. POR HACER (pendiente, priorizado)