mirror of
https://code.mensbeam.com/MensBeam/Arsse.git
synced 2024-12-22 13:12:41 +00:00
Rely on Zip extension for extracting highlight.js
This commit is contained in:
parent
7dee5498d8
commit
b514ac983b
1 changed files with 41 additions and 38 deletions
79
RoboFile.php
79
RoboFile.php
|
@ -1,7 +1,6 @@
|
|||
<?php
|
||||
|
||||
use Robo\Result;
|
||||
use splitbrain\PHPArchive\Zip;
|
||||
|
||||
class RoboFile extends \Robo\Tasks {
|
||||
const BASE = __DIR__.\DIRECTORY_SEPARATOR;
|
||||
|
@ -209,45 +208,49 @@ class RoboFile extends \Robo\Tasks {
|
|||
// compile the stylesheet
|
||||
$t->taskExec($postcss)->arg($scss)->option("-o", $css);
|
||||
// download highlight.js
|
||||
$t->addCode(function() use ($tmp, $themeout) {
|
||||
$languages = ["php", "bash", "shell", "xml", "nginx", "apache"];
|
||||
$post = http_build_query((function($langs) {
|
||||
$out = [];
|
||||
foreach($langs as $l) {
|
||||
$out[$l.".js"] = "on";
|
||||
if (extension_loaded("zip")) {
|
||||
$t->addCode(function() use ($tmp, $themeout) {
|
||||
$languages = ["php", "bash", "shell", "xml", "nginx", "apache"];
|
||||
$post = http_build_query((function($langs) {
|
||||
$out = [];
|
||||
foreach($langs as $l) {
|
||||
$out[$l.".js"] = "on";
|
||||
}
|
||||
return $out;
|
||||
})($languages));
|
||||
$conn = @fopen("https://highlightjs.org/download/", "r");
|
||||
if ($conn === false) {
|
||||
throw new Exception("Unable to download Highlight.js");
|
||||
}
|
||||
return $out;
|
||||
})($languages));
|
||||
$conn = fopen("https://highlightjs.org/download/", "r");
|
||||
if ($conn === false) {
|
||||
throw new Exception("Unable to download Highlight.js");
|
||||
}
|
||||
foreach (stream_get_meta_data($conn)['wrapper_data'] as $field) {
|
||||
if (preg_match("/^Set-Cookie: csrftoken=([^;]+)/i", $field, $cookie)) {
|
||||
break;
|
||||
foreach (stream_get_meta_data($conn)['wrapper_data'] as $field) {
|
||||
if (preg_match("/^Set-Cookie: csrftoken=([^;]+)/i", $field, $cookie)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
$token = stream_get_contents($conn);
|
||||
preg_match("/<input type='hidden' name='csrfmiddlewaretoken' value='([^']*)'/", $token, $token);
|
||||
$post = "csrfmiddlewaretoken={$token[1]}&$post";
|
||||
$hljs = file_get_contents("https://highlightjs.org/download/", false, stream_context_create(['http' => [
|
||||
'method' => "POST",
|
||||
'content' => $post,
|
||||
'header' => [
|
||||
"Referer: https://highlightjs.org/download/",
|
||||
"Cookie: csrftoken={$cookie[1]}",
|
||||
"Content-Type: application/x-www-form-urlencoded",
|
||||
],
|
||||
]]));
|
||||
if ($hljs === false) {
|
||||
throw new Exception("Unable to download Highlight.js");
|
||||
} else {
|
||||
file_put_contents($tmp."highlightjs.zip", $hljs);
|
||||
}
|
||||
$z = new Zip;
|
||||
$z->open($tmp."highlightjs.zip");
|
||||
$z->extract($themeout, "", "", "highlight.pack.js");
|
||||
}, "downloadHighlightjs");
|
||||
$token = stream_get_contents($conn);
|
||||
preg_match("/<input type='hidden' name='csrfmiddlewaretoken' value='([^']*)'/", $token, $token);
|
||||
$post = "csrfmiddlewaretoken={$token[1]}&$post";
|
||||
$hljs = @file_get_contents("https://highlightjs.org/download/", false, stream_context_create(['http' => [
|
||||
'method' => "POST",
|
||||
'content' => $post,
|
||||
'header' => [
|
||||
"Referer: https://highlightjs.org/download/",
|
||||
"Cookie: csrftoken={$cookie[1]}",
|
||||
"Content-Type: application/x-www-form-urlencoded",
|
||||
],
|
||||
]]));
|
||||
if ($hljs === false) {
|
||||
throw new Exception("Unable to download Highlight.js");
|
||||
} else {
|
||||
file_put_contents($tmp."highlightjs.zip", $hljs);
|
||||
}
|
||||
$z = new \ZipArchive;
|
||||
$z->open($tmp."highlightjs.zip");
|
||||
$z->extractTo($themeout, "highlight.pack.js");
|
||||
}, "downloadHighlightjs");
|
||||
} else {
|
||||
$this->say("Zip extension not installed; not updating hightlight.js");
|
||||
}
|
||||
// execute the collection
|
||||
return $t->run();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue