System Budowania Statycznych Stron Gemini
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
faildev_mode 25fe4a3140
Using paths relative to __DIR__
1 month ago
.gitignore Added my gemlog templates to .gitignore 3 months ago
LICENSE Written README, released under GNU GPLv3 or later 2 months ago
README.md Using paths relative to __DIR__ 1 month ago
build.php Using paths relative to __DIR__ 1 month ago

README.md

Prosty skrypt do generowania statycznych stron na mojego bloga na Gemini, napisany w języku PHP. Aby to uruchomić, potrzebujesz PHP w wersji 7.4 (na starszych może też zadziałać, ale niczego nie obiecuję).

Skrypt skanuje zawartość katalogu input i z użyciem szablonu strony zdefiniowanym w pliku article.gmi generuje statyczne pliki gmi w katalogu output oraz stronę główną (index.gmi) z użyciem szablonu zdefiniowanego w pliku index.gmi. Następnie zawartość katalogu output można wysłać na serwer np. przy pomocy git+ssh. Opisałem to w tym artykule:

=> gemini://rawtext.club/~faildev_mode/hello-world-v1.1.gmi Hello, world! – version 1.1

Instalacja

  1. Sklonuj to repozytorium
  2. Nadaj plikowi build.php uprawnienia do wykonania jeżeli ich nie ma
  3. Utwórz katalogi input, output
  4. Przygotuj pliki szablonów index.gmi oraz article.gmi

Użycie

./build.php [-i input] [-o output]

Możesz zdefiniować inny katalog wejścia/wyjścia przy pomocy parametrów -i i -o. Skrypt zakłada, że wszystkie pliki potrzebne do zbudowania strony znajdują się w tym samym katalogu co skrypt. Ścieżki względne do kagalogów wejścia/wyjścia są względem tego katalogu.

Skrypt nie jest przeznaczony do umieszczenia go w $PATH.

Schemat szablonu strony

W szablonie znajdują się zmienne, w które przy przetwarzaniu zostaną wstawione odpowiednie wartości:

  • $CONTENT – treść artykułu
  • $TITLE – tytuł artykułu
  • $DATE – data napisania artykułu

Przykładowy szablon:

=> index.gmi <== back
$DATE

# $TITLE

$CONTENT

Spowoduje, że na górze każdej strony znajdzie się link powrotu do strony głównej, następnie data, tytuł i treść artykułu.

Schemat szablonu strony głównej

W szablonie strony głównej masz możliwość jedynie określić, co znajduje się przed i po automatycznie wygenerowanym menu, określonym zmienną $MENU.

Przykładowy szablon:

# faildev's gemlog

$MENU

~faildev_mode

Spowoduje, że nad menu znajdzie się tytuł całej strony (faildev's gemlog), a pod nim sygnaturka.

Budowa pliku artykułu

Pliki artykułów są umiejscowione w katalogu input. Aktualnie nie ma możliwości tworzenia podkatalogów.

Każdy plik artykułu musi się zaczynać od front-matter, czyli sekcji przeznaczonej na metadane. Zaczyna się ona i kończy linią ---, i zawiera w sobie pary klucz-wartość.

  • title – tytuł artykułu. Jeżeli nie zostanie podany, użyta zostanie nazwa pliku.
  • date – data napisania artykułu w formacie yyyy-mm-dd. Jeżeli nie zostanie podana, użyta zostanie data zero – 1 stycznia 1970, co w moim pierwszym artykule jest celowe.
  • multilingual – określa, czy artykuł jest wielojęzyczny. Przyjmuje wartości true lub false. Domyślne jest false.

Przykład:

---
date: 2022-09-05
title: Hello, world! – version 1.1
multilingual: true
---
Dalej treść artykułu...

Plik artykułu może zawierać dynamiczne odnośniki do innych artykułów. Można je wstawić przy pomocy funkcji $LINK_ARTICLE(), której argumentem jest nazwa pliku artykułu (bez rozszerzenia .gmi):

=> $LINK_ARTICLE(hello-world-v1.1) mój ostatni artykuł

Licencja

SBSSG jest Wolnym Oprogramowaniem wydanym na licencji GNU GPL w wersji 3 lub nowszej. Licencja ta zapewnia ci wszystkie 4 podstawowe wolności wyszczególnione przez Fundację Wolnego Oprogramowania, w tym prawo do uruchamiania, analizy, kopiowania i modyfikowania, i jest objęta klauzulą copyleft, która zabrania rozprowadzania tego oprogramowania na innej licencji, np. jako oprogramowanie prawnie zastrzeżone, aby zapewnić te wolności wszystkim przyszłym użytkownikom programu. Treść licencji znajdziesz w pliku LICENSE.

SBSSG – pol. "system budowania statycznych stron gemini"
Copyright (C) 2022  faildev_mode

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

Pomoc w rozwoju projektu

SBSSG jest bardzo małym programem przeznaczonym przede wszystkim do mojego osobistego użytku wraz z moim blogiem. Jeśli chciałbyś mi w tym pomóc, możesz wysłać patche z poprawkami błędów i ulepszeniami jako pull request lub na adres email faildev_mode [at] rawtext [dot] club. Mój klucz GnuPG 08F0 C8DC 1E0E 1067 AB99 FDF4 7084 5C70 C0F5 E205 możesz pobrać tutaj:

=> https://rawtext.club/~faildev_mode/faildev_mode.gpg