Pass arguments via CLI instead of via HTTP
This commit is contained in:
parent
28ccfa33c6
commit
3bf94da058
18
README.md
18
README.md
|
@ -6,18 +6,14 @@ Ceci est le code source du générateur de sites statiques qui créé le [site w
|
||||||
|
|
||||||
Placer les pages dans `<site>/md/<page>.md`. Le format est principalement du Markdown Extra mais il est aussi possible de rajouter de l'HTML et du PHP. Elles sont ensuite transformées par `compil.php` en pages HTML statiques, placées dans `<site>/<page>.html`
|
Placer les pages dans `<site>/md/<page>.md`. Le format est principalement du Markdown Extra mais il est aussi possible de rajouter de l'HTML et du PHP. Elles sont ensuite transformées par `compil.php` en pages HTML statiques, placées dans `<site>/<page>.html`
|
||||||
|
|
||||||
`compil.php` prend 2 arguments :
|
`compil.php <site> <destination>`
|
||||||
* `pw`, mot de passe définit dans mdp.php
|
|
||||||
* `site`, nom du dossier du site
|
|
||||||
* `as`, qui dépend de l'endroit où sera déployé le site
|
|
||||||
|
|
||||||
Pour déployer en DNS en liant vers `page`, utiliser `as=dns`.
|
Avec `site` qui est le dossier contenant le site et pour `destination` :
|
||||||
Pour déployer en Onion en liant vert `page`, utiliser `as=onion`.
|
* Pour déployer en DNS en liant vers `page`, utiliser `dns`.
|
||||||
Pour déployer en DNS en liant vert `page.html`, ignorer `as`.
|
* Pour déployer en Onion en liant vert `page`, utiliser `onion`.
|
||||||
|
* Pour déployer en DNS en liant vert `page.html`, ignorer ce dernier argument.
|
||||||
|
|
||||||
Exemple : http://tructructruc.onion/web/compil.php?as=onion&pw=change-moi&site=antopie
|
Les droits d'écriture sont requis sur `<site>/css` et `temp/` par l'user qui exécute PHP.
|
||||||
|
|
||||||
Les droits d'écriture sont requis sur <site>/css et temp/ par l'user qui exécute PHP.
|
|
||||||
|
|
||||||
`compil.php` va chercher à utiliser [static-compress](https://github.com/neosmart/static-compress) dans `/usr/local/bin/static-compress` pour compresser les fichiers CSS et HTML créés.
|
`compil.php` va chercher à utiliser [static-compress](https://github.com/neosmart/static-compress) dans `/usr/local/bin/static-compress` pour compresser les fichiers CSS et HTML créés.
|
||||||
|
|
||||||
|
@ -26,6 +22,8 @@ $ cargo install static-compress
|
||||||
$ sudo mv ~/.cargo/bin/static-compress /usr/local/bin/
|
$ sudo mv ~/.cargo/bin/static-compress /usr/local/bin/
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Exemple de commande pour tester le développement en local après avoir modifié le site : `php compil.php antopie local && python3 -m http.server -b 127.0.0.1 -d antopie`
|
||||||
|
|
||||||
# Bibliothèques utilisées
|
# Bibliothèques utilisées
|
||||||
|
|
||||||
Le dossier `bibli` contient les dépendances incluses dans le générateur de sites :
|
Le dossier `bibli` contient les dépendances incluses dans le générateur de sites :
|
||||||
|
|
33
compil.php
33
compil.php
|
@ -1,32 +1,32 @@
|
||||||
<?php
|
<?php
|
||||||
require "mdp.php";
|
if (php_sapi_name() === "cli") {
|
||||||
if (isset($_GET['pw']) AND $_GET['pw'] == $mdp AND isset($_GET['site'])) {
|
define("SITE", $argv[1]);
|
||||||
|
define("DESTINATION", $argv[2]);
|
||||||
$site = $_GET['site'];
|
|
||||||
|
|
||||||
require "bibli/parsedown/Parsedown.php";
|
require "bibli/parsedown/Parsedown.php";
|
||||||
require "bibli/parsedown-extra/ParsedownExtra.php";
|
require "bibli/parsedown-extra/ParsedownExtra.php";
|
||||||
require "bibli/parsedown-extra-plugin/ParsedownExtraPlugin.php";
|
require "bibli/parsedown-extra-plugin/ParsedownExtraPlugin.php";
|
||||||
$nomsPages = array_diff(scandir($site . "/md"), array('..', '.'));
|
$nomsPages = array_diff(scandir(SITE . "/md"), array('..', '.'));
|
||||||
|
|
||||||
require $site . "/pages.inc.php";
|
require "inc/url.php";
|
||||||
|
require SITE . "/pages.inc.php";
|
||||||
|
|
||||||
foreach ($nomsPages as $pageId) {
|
foreach ($nomsPages as $pageId) {
|
||||||
$pageId = basename($pageId, ".md");
|
$pageId = basename($pageId, ".md");
|
||||||
|
|
||||||
if (!file_exists("temp/" . $site))
|
if (!file_exists("temp/" . SITE))
|
||||||
mkdir("temp/" . $site, 555);
|
mkdir("temp/" . SITE, 555);
|
||||||
|
|
||||||
// pages/exemple.md > temp/exemple.temp
|
// pages/exemple.md > temp/exemple.temp
|
||||||
// Exécute le PHP vers du HTML
|
// Exécute le PHP vers du HTML
|
||||||
ob_start();
|
ob_start();
|
||||||
require $site . "/md/" . $pageId . ".md";
|
require SITE . "/md/" . $pageId . ".md";
|
||||||
file_put_contents("temp/" . $site . "/" . $pageId . ".temp", ob_get_contents());
|
file_put_contents("temp/" . SITE . "/" . $pageId . ".temp", ob_get_contents());
|
||||||
ob_end_clean();
|
ob_end_clean();
|
||||||
|
|
||||||
// temp/exemple.temp > temp2/exemple.temp2
|
// temp/exemple.temp > temp2/exemple.temp2
|
||||||
// Compile le Markdown vers du HTML
|
// Compile le Markdown vers du HTML
|
||||||
$contenuPage = file_get_contents("temp/" . $site . "/" . $pageId . ".temp");
|
$contenuPage = file_get_contents("temp/" . SITE . "/" . $pageId . ".temp");
|
||||||
|
|
||||||
$Parsedown = new ParsedownExtraPlugin;
|
$Parsedown = new ParsedownExtraPlugin;
|
||||||
$Parsedown = $Parsedown->setUrlsLinked(false);
|
$Parsedown = $Parsedown->setUrlsLinked(false);
|
||||||
|
@ -34,7 +34,7 @@ if (isset($_GET['pw']) AND $_GET['pw'] == $mdp AND isset($_GET['site'])) {
|
||||||
$Parsedown = $Parsedown->setBreaksEnabled(true);
|
$Parsedown = $Parsedown->setBreaksEnabled(true);
|
||||||
$contenuPage = $Parsedown->text($contenuPage);
|
$contenuPage = $Parsedown->text($contenuPage);
|
||||||
|
|
||||||
file_put_contents("temp/" . $site . "/" . $pageId . ".temp2", $contenuPage);
|
file_put_contents("temp/" . SITE . "/" . $pageId . ".temp2", $contenuPage);
|
||||||
|
|
||||||
// temp2/exemple.temp2 > exemple.html
|
// temp2/exemple.temp2 > exemple.html
|
||||||
// Ajoute header et footer au HTML
|
// Ajoute header et footer au HTML
|
||||||
|
@ -49,22 +49,21 @@ if (isset($_GET['pw']) AND $_GET['pw'] == $mdp AND isset($_GET['site'])) {
|
||||||
} else if ($pageMetas['type'] == "centré") {
|
} else if ($pageMetas['type'] == "centré") {
|
||||||
echo "<div class='centre'>";
|
echo "<div class='centre'>";
|
||||||
}
|
}
|
||||||
require "temp/" . $site . "/" . $pageId . ".temp2";
|
require "temp/" . SITE . "/" . $pageId . ".temp2";
|
||||||
if ($pageMetas['type'] == "article") {
|
if ($pageMetas['type'] == "article") {
|
||||||
echo "</article>";
|
echo "</article>";
|
||||||
} else if ($pageMetas['type'] == "centré") {
|
} else if ($pageMetas['type'] == "centré") {
|
||||||
echo "</div>";
|
echo "</div>";
|
||||||
}
|
}
|
||||||
require "inc/footer.php";
|
require "inc/footer.php";
|
||||||
file_put_contents($site . "/" . $pageId . ".html", ob_get_contents());
|
file_put_contents(SITE . "/" . $pageId . ".html", ob_get_contents());
|
||||||
ob_end_clean();
|
ob_end_clean();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// exemple.html > exemple.html.gz
|
// exemple.html > exemple.html.gz
|
||||||
// Compresse les fichiers textes statiques HTML & CSS
|
// Compresse les fichiers textes statiques HTML & CSS
|
||||||
exec('/usr/local/bin/static-compress -c zopfli "' . $site . '/*.html" "' . $site . '/css/*.css"');
|
exec('/usr/local/bin/static-compress -c zopfli "' . SITE . '/*.html" "' . SITE . '/*.js" "' . SITE . '/css/*.css"');
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
echo "Non authentifié·e, ou pas de site définit";
|
exit("Must be run from CLI");
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,3 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
$adresse = basename($_SERVER['PHP_SELF'], '.php');
|
|
||||||
|
|
||||||
require_once "url.php";
|
|
||||||
|
|
||||||
?>
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="fr">
|
<html lang="fr">
|
||||||
<head>
|
<head>
|
||||||
|
@ -19,12 +11,12 @@
|
||||||
require_once 'bibli/less.php/lib/Less/Autoloader.php';
|
require_once 'bibli/less.php/lib/Less/Autoloader.php';
|
||||||
Less_Autoloader::register();
|
Less_Autoloader::register();
|
||||||
|
|
||||||
$options = array('cache_dir' => $site . '/css', 'compress' => true);
|
$options = array('cache_dir' => SITE . '/css', 'compress' => true);
|
||||||
$lessFiles = array('style.less' => '');
|
$lessFiles = array('style.less' => '');
|
||||||
$cssFileName = Less_Cache::Get($lessFiles, $options);
|
$cssFileName = Less_Cache::Get($lessFiles, $options);
|
||||||
?>
|
?>
|
||||||
<link type="text/css" rel="stylesheet" href="css/<?= $cssFileName ?>">
|
<link type="text/css" rel="stylesheet" href="css/<?= $cssFileName ?>">
|
||||||
<?php if ($site == "antopie") { ?>
|
<?php if (SITE == "antopie") { ?>
|
||||||
<link rel="icon" type="image/webp" href="img/icons/16.webp" sizes="16x16">
|
<link rel="icon" type="image/webp" href="img/icons/16.webp" sizes="16x16">
|
||||||
<link rel="icon" type="image/webp" href="img/icons/32.webp" sizes="32x32">
|
<link rel="icon" type="image/webp" href="img/icons/32.webp" sizes="32x32">
|
||||||
<link rel="icon" type="image/webp" href="img/icons/64.webp" sizes="64x64">
|
<link rel="icon" type="image/webp" href="img/icons/64.webp" sizes="64x64">
|
||||||
|
@ -41,16 +33,16 @@
|
||||||
<header>
|
<header>
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
if ($site == "docs") {
|
if (SITE == "docs") {
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<a id="lienHeader" href=".">
|
<a id="lienHeader" href=".">
|
||||||
<div class="logo"><?= $site ?></div>
|
<div class="logo"><?= SITE ?></div>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
} else if ($site == "antopie") {
|
} else if (SITE == "antopie") {
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<a id="lienHeader" href=".">
|
<a id="lienHeader" href=".">
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
<?php if ($site == "antopie") { ?>
|
<?php if (SITE === "antopie") { ?>
|
||||||
<footer class="antopie">
|
<footer class="antopie">
|
||||||
<div class="liensfooter centre">
|
<div class="liensfooter centre">
|
||||||
<div class="lienfooter">
|
<div class="lienfooter">
|
||||||
|
@ -9,7 +9,7 @@
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php if ($_GET['as'] == "onion") { ?>
|
<?php if (DESTINATION === "onion") { ?>
|
||||||
|
|
||||||
<div class="lienfooter">
|
<div class="lienfooter">
|
||||||
<a href="https://antopie.org/<?= $pageId ?>" class="bouton">
|
<a href="https://antopie.org/<?= $pageId ?>" class="bouton">
|
||||||
|
@ -45,13 +45,13 @@
|
||||||
<span class="gomez run"></span>
|
<span class="gomez run"></span>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
<?php } else if ($site == "docs") { ?>
|
<?php } else if (SITE === "docs") { ?>
|
||||||
<footer>
|
<footer>
|
||||||
Site créé avec Base Antopie
|
Site créé avec Base Antopie
|
||||||
<br>
|
<br>
|
||||||
Documentation sous <abbr title="Creative Commons Attribution et Partage dans les mêmes conditions">CC BY-SA</abbr>.
|
Documentation sous <abbr title="Creative Commons Attribution et Partage dans les mêmes conditions">CC BY-SA</abbr>.
|
||||||
<br>
|
<br>
|
||||||
<a href="md/<?= $pageId ?>.md">Source du document</a> Kopimi
|
<a href="md/<?= $pageId ?>.md">Source du contenu</a> | Kopimi
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
// Les URL n'ont pas le .php sur le site d'Antopie
|
// Les URL n'ont pas le .php sur le site d'Antopie
|
||||||
function formerUrlLocale($page) {
|
function formerUrlLocale($page) {
|
||||||
if ($_GET['as'] == "dns" OR $_GET['as'] == "onion") {
|
if (DESTINATION === "dns" OR DESTINATION === "onion") {
|
||||||
echo $page;
|
echo $page;
|
||||||
} else {
|
} else {
|
||||||
echo $page . ".html";
|
echo $page . ".html";
|
||||||
|
@ -10,7 +10,7 @@ function formerUrlLocale($page) {
|
||||||
|
|
||||||
// Détermine si il faut utiliser les liens en .onion ou pas
|
// Détermine si il faut utiliser les liens en .onion ou pas
|
||||||
function clearnetOrOnion($clearnetUrl, $onionUrl) {
|
function clearnetOrOnion($clearnetUrl, $onionUrl) {
|
||||||
if ($_GET['as'] == "onion") {
|
if (DESTINATION === "onion") {
|
||||||
return $onionUrl;
|
return $onionUrl;
|
||||||
} else {
|
} else {
|
||||||
return $clearnetUrl;
|
return $clearnetUrl;
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
<?php
|
|
||||||
// Le fichier mdp.php doit être créé sur le modèle de mdp.template.php
|
|
||||||
$mdp = "change-moi";
|
|
Reference in New Issue