mirror of
https://github.com/webinstall/webi-installers.git
synced 2026-08-19 03:56:16 +00:00
add comrak for Markdown to HTML
This commit is contained in:
+1
-1
@@ -319,10 +319,10 @@ if [ -n "$(command -v pkg_get_current_version)" ]; then
|
||||
|
||||
webi_link
|
||||
|
||||
_webi_enable_exec
|
||||
pushd "$WEBI_TMP" 2>&1 >/dev/null
|
||||
[ -n "$(command -v pkg_post_install)" ] && pkg_post_install || webi_post_install
|
||||
popd 2>&1 >/dev/null
|
||||
_webi_enable_exec
|
||||
|
||||
pushd "$WEBI_TMP" 2>&1 >/dev/null
|
||||
[ -n "$(command -v pkg_done_message)" ] && pkg_done_message || _webi_done_message
|
||||
|
||||
@@ -0,0 +1,118 @@
|
||||
---
|
||||
title: Comrak
|
||||
homepage: https://github.com/kivikakk/comrak
|
||||
tagline: |
|
||||
Comrak is a Rust port of github's cmark-gfm.
|
||||
---
|
||||
|
||||
### Updating `comrak`
|
||||
|
||||
`webi comrak@stable`
|
||||
|
||||
Use the `@beta` tag for pre-releases.
|
||||
|
||||
## Cheat Sheet
|
||||
|
||||
> Comrak supports the five extensions to CommonMark defined in the GitHub
|
||||
> Flavored Markdown Spec: Tables, Task list items, Strikethrough, Autolinks, &
|
||||
> Disallowed Raw HTML
|
||||
|
||||
```bash
|
||||
comrak --gfm index.md > index.html
|
||||
```
|
||||
|
||||
Here you'll learn how to:
|
||||
|
||||
- Convert Markdown to HTML
|
||||
- Set Reasonable Defaults
|
||||
- Safely Render _Untrusted_ HTML
|
||||
- Render _Trusted_ HTML with Scripts
|
||||
- Temporarily Ignore Defaults
|
||||
|
||||
## How to Convert Markdown to HTML
|
||||
|
||||
```bash
|
||||
comrak --gfm --header-ids '' README.md > README.html
|
||||
```
|
||||
|
||||
## How to set Reasonable Defaults
|
||||
|
||||
You can update `~/.config/comrak/config` to change Comrak from it's very strict
|
||||
defaults to always include your favorite options.
|
||||
|
||||
Here's what I suggest:
|
||||
|
||||
```bash
|
||||
echo "--gfm --header-ids ''" > ~/.config/comrak/config
|
||||
```
|
||||
|
||||
See `comrak --help` for other options.
|
||||
|
||||
## How to Render _Untrusted_ HTML
|
||||
|
||||
Comrak does NOT have an option to allow arbitrary HTML while protecting against
|
||||
unsafe links, such as `<a href="javascript:...">`.
|
||||
|
||||
Therefore, you **MUST enable CSP** for comrak-rendered site to disallow unsafe
|
||||
inline scripts. This can be done via a `<meta>` tag or HTTP headers.
|
||||
|
||||
Example:
|
||||
|
||||
```html
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src *" />
|
||||
```
|
||||
|
||||
Then, to sanitize `<script>` and `<iframe>` tags you must add `-e tagfilter`
|
||||
(which the `--gfm` option also enables).
|
||||
|
||||
```bash
|
||||
comrak --unsafe --gfm --header-ids '' README.md
|
||||
```
|
||||
|
||||
## How to Render HTML & Scripts
|
||||
|
||||
The `--unsafe` option
|
||||
[may not work as expected](https://github.com/kivikakk/comrak/issues/160) with
|
||||
`--gfm`, as it is still somewhat neutered by `-e tagfilter`.
|
||||
|
||||
If you want Github-Flavored Markdown with trusted scripts, you'll need to enable
|
||||
its extensions by hand:
|
||||
|
||||
```bash
|
||||
echo "
|
||||
# WARNING: allows <script>, <iframe>
|
||||
# and <a href=javascript:alert('')>
|
||||
--unsafe
|
||||
|
||||
# same as --gfm, but without -e tagfilter,
|
||||
# meaning ALL html tags are allowed
|
||||
-e strikethrough
|
||||
-e table
|
||||
-e autolink
|
||||
-e tasklist
|
||||
--github-pre-lang
|
||||
|
||||
# linkable headers (w/ empty prefix)
|
||||
--header-ids ''
|
||||
|
||||
# additional extensions
|
||||
-e superscript
|
||||
-e footnotes
|
||||
-e description-lists
|
||||
|
||||
" > ~/.config/comrak/allow-scripts
|
||||
```
|
||||
|
||||
```bash
|
||||
comrak --config ~/.config/comrak/allow-scripts README.md
|
||||
```
|
||||
|
||||
## How to Ignore Defaults
|
||||
|
||||
You can disable all options with `--config-file none`.
|
||||
|
||||
Example:
|
||||
|
||||
```bash
|
||||
comrak --config-file none -e table README.md
|
||||
```
|
||||
@@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env pwsh
|
||||
|
||||
$VERNAME = "$Env:PKG_NAME-v$Env:WEBI_VERSION.exe"
|
||||
$EXENAME = "$Env:PKG_NAME.exe"
|
||||
# Fetch archive
|
||||
IF (!(Test-Path -Path "$Env:USERPROFILE\Downloads\$Env:WEBI_PKG_FILE"))
|
||||
{
|
||||
# TODO: arch detection
|
||||
echo "Downloading $Env:PKG_NAME from $Env:WEBI_PKG_URL to $Env:USERPROFILE\Downloads\$Env:WEBI_PKG_FILE"
|
||||
& curl.exe -A "$Env:WEBI_UA" -fsSL "$Env:WEBI_PKG_URL" -o "$Env:USERPROFILE\Downloads\$Env:WEBI_PKG_FILE.part"
|
||||
& move "$Env:USERPROFILE\Downloads\$Env:WEBI_PKG_FILE.part" "$Env:USERPROFILE\Downloads\$Env:WEBI_PKG_FILE"
|
||||
}
|
||||
|
||||
IF (!(Test-Path -Path "$Env:USERPROFILE\.local\opt\$Env:PKG_NAME-v$Env:WEBI_VERSION\bin\$VERNAME"))
|
||||
{
|
||||
echo "Installing $Env:PKG_NAME"
|
||||
# TODO: temp directory
|
||||
|
||||
# Enter tmp
|
||||
pushd .local\tmp
|
||||
|
||||
# Remove any leftover tmp cruft
|
||||
Remove-Item -Path "$Env:PKG_NAME-v*" -Recurse -ErrorAction Ignore
|
||||
|
||||
# Move single binary into root of temporary folder
|
||||
& move "$Env:USERPROFILE\Downloads\$Env:WEBI_PKG_FILE" "$VERNAME"
|
||||
& dir
|
||||
|
||||
# Settle unpacked archive into place
|
||||
echo "New Name: $VERNAME"
|
||||
echo "New Location: $Env:USERPROFILE\.local\opt\$Env:PKG_NAME-v$Env:WEBI_VERSION\bin\$VERNAME"
|
||||
New-Item "$Env:USERPROFILE\.local\opt\$Env:PKG_NAME-v$Env:WEBI_VERSION\bin" -ItemType Directory
|
||||
Move-Item -Path "$VERNAME" -Destination "$Env:USERPROFILE\.local\opt\$Env:PKG_NAME-v$Env:WEBI_VERSION\bin"
|
||||
|
||||
# Exit tmp
|
||||
popd
|
||||
}
|
||||
|
||||
echo "Copying into '$Env:USERPROFILE\.local\bin\$EXENAME' from '$Env:USERPROFILE\.local\opt\$Env:PKG_NAME-v$Env:WEBI_VERSION\bin\$VERNAME'"
|
||||
Remove-Item -Path "$Env:USERPROFILE\.local\bin\$EXENAME" -Recurse -ErrorAction Ignore
|
||||
Copy-Item -Path "$Env:USERPROFILE\.local\opt\$Env:PKG_NAME-v$Env:WEBI_VERSION\bin\$VERNAME" -Destination "$Env:USERPROFILE\.local\bin\$EXENAME" -Recurse
|
||||
@@ -0,0 +1,36 @@
|
||||
#!/bin/bash
|
||||
|
||||
{
|
||||
set -e
|
||||
set -u
|
||||
|
||||
##################
|
||||
# Install comrak #
|
||||
##################
|
||||
|
||||
WEBI_SINGLE=true
|
||||
|
||||
pkg_get_current_version() {
|
||||
# 'comrak --version' has output in this format:
|
||||
# comrak 0.8.1
|
||||
# This trims it down to just the version number:
|
||||
# 0.8.1
|
||||
echo $(comrak --version 2>/dev/null | head -n 1 | cut -d' ' -f 2)
|
||||
}
|
||||
|
||||
pkg_install() {
|
||||
# ~/.local/bin
|
||||
mkdir -p "$pkg_src_bin"
|
||||
|
||||
# mv ./comrak* ~/.local/opt/comrak-v0.8.1/bin/comrak
|
||||
mv ./comrak* "$pkg_src_cmd"
|
||||
|
||||
# chmod a+x ~/.local/opt/comrak-v0.8.1/bin/comrak
|
||||
chmod a+x "$pkg_src_cmd"
|
||||
}
|
||||
|
||||
pkg_post_install() {
|
||||
# create the xdg directories (i.e. ~/.config/comrak)
|
||||
"$pkg_src_cmd" --version > /dev/null
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
'use strict';
|
||||
|
||||
var github = require('../_common/github.js');
|
||||
var owner = 'kivikakk';
|
||||
var repo = 'comrak';
|
||||
|
||||
module.exports = function (request) {
|
||||
return github(request, owner, repo).then(function (all) {
|
||||
return all;
|
||||
});
|
||||
};
|
||||
|
||||
if (module === require.main) {
|
||||
module.exports(require('@root/request')).then(function (all) {
|
||||
all = require('../_webi/normalize.js')(all);
|
||||
all.releases = all.releases.slice(0, 10);
|
||||
//console.info(JSON.stringify(all));
|
||||
console.info(JSON.stringify(all, null, 2));
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user