mirror of
https://github.com/makew0rld/amfora.git
synced 2024-12-04 14:46:29 -05:00
📝 Wiki script, link to wiki on new tab
This commit is contained in:
parent
95f077c083
commit
507c6e8dec
154
.gitignore
vendored
154
.gitignore
vendored
@ -14,15 +14,15 @@ rec.yml
|
|||||||
# GIMP files
|
# GIMP files
|
||||||
*.xcf
|
*.xcf
|
||||||
|
|
||||||
# Created by https://www.toptal.com/developers/gitignore/api/code,go,linux,macos,windows
|
|
||||||
# Edit at https://www.toptal.com/developers/gitignore?templates=code,go,linux,macos,windows
|
# Created by https://www.toptal.com/developers/gitignore/api/code,go,linux,macos,windows,python
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=code,go,linux,macos,windows,python
|
||||||
|
|
||||||
### Code ###
|
### Code ###
|
||||||
.vscode/*
|
.vscode/*
|
||||||
!.vscode/settings.json
|
|
||||||
!.vscode/tasks.json
|
!.vscode/tasks.json
|
||||||
!.vscode/launch.json
|
!.vscode/launch.json
|
||||||
!.vscode/extensions.json
|
*.code-workspace
|
||||||
|
|
||||||
### Go ###
|
### Go ###
|
||||||
# Binaries for programs and plugins
|
# Binaries for programs and plugins
|
||||||
@ -38,6 +38,9 @@ rec.yml
|
|||||||
# Output of the go coverage tool, specifically when used with LiteIDE
|
# Output of the go coverage tool, specifically when used with LiteIDE
|
||||||
*.out
|
*.out
|
||||||
|
|
||||||
|
# Dependency directories (remove the comment below to include it)
|
||||||
|
# vendor/
|
||||||
|
|
||||||
### Go Patch ###
|
### Go Patch ###
|
||||||
/vendor/
|
/vendor/
|
||||||
/Godeps/
|
/Godeps/
|
||||||
@ -66,6 +69,7 @@ rec.yml
|
|||||||
# Icon must end with two \r
|
# Icon must end with two \r
|
||||||
Icon
|
Icon
|
||||||
|
|
||||||
|
|
||||||
# Thumbnails
|
# Thumbnails
|
||||||
._*
|
._*
|
||||||
|
|
||||||
@ -85,9 +89,149 @@ Network Trash Folder
|
|||||||
Temporary Items
|
Temporary Items
|
||||||
.apdisk
|
.apdisk
|
||||||
|
|
||||||
|
### Python ###
|
||||||
|
# Byte-compiled / optimized / DLL files
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
|
||||||
|
# C extensions
|
||||||
|
|
||||||
|
# Distribution / packaging
|
||||||
|
.Python
|
||||||
|
build/
|
||||||
|
develop-eggs/
|
||||||
|
dist/
|
||||||
|
downloads/
|
||||||
|
eggs/
|
||||||
|
.eggs/
|
||||||
|
lib/
|
||||||
|
lib64/
|
||||||
|
parts/
|
||||||
|
sdist/
|
||||||
|
var/
|
||||||
|
wheels/
|
||||||
|
pip-wheel-metadata/
|
||||||
|
share/python-wheels/
|
||||||
|
*.egg-info/
|
||||||
|
.installed.cfg
|
||||||
|
*.egg
|
||||||
|
MANIFEST
|
||||||
|
|
||||||
|
# PyInstaller
|
||||||
|
# Usually these files are written by a python script from a template
|
||||||
|
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||||
|
*.manifest
|
||||||
|
*.spec
|
||||||
|
|
||||||
|
# Installer logs
|
||||||
|
pip-log.txt
|
||||||
|
pip-delete-this-directory.txt
|
||||||
|
|
||||||
|
# Unit test / coverage reports
|
||||||
|
htmlcov/
|
||||||
|
.tox/
|
||||||
|
.nox/
|
||||||
|
.coverage
|
||||||
|
.coverage.*
|
||||||
|
.cache
|
||||||
|
nosetests.xml
|
||||||
|
coverage.xml
|
||||||
|
*.cover
|
||||||
|
*.py,cover
|
||||||
|
.hypothesis/
|
||||||
|
.pytest_cache/
|
||||||
|
pytestdebug.log
|
||||||
|
|
||||||
|
# Translations
|
||||||
|
*.mo
|
||||||
|
*.pot
|
||||||
|
|
||||||
|
# Django stuff:
|
||||||
|
*.log
|
||||||
|
local_settings.py
|
||||||
|
db.sqlite3
|
||||||
|
db.sqlite3-journal
|
||||||
|
|
||||||
|
# Flask stuff:
|
||||||
|
instance/
|
||||||
|
.webassets-cache
|
||||||
|
|
||||||
|
# Scrapy stuff:
|
||||||
|
.scrapy
|
||||||
|
|
||||||
|
# Sphinx documentation
|
||||||
|
docs/_build/
|
||||||
|
doc/_build/
|
||||||
|
|
||||||
|
# PyBuilder
|
||||||
|
target/
|
||||||
|
|
||||||
|
# Jupyter Notebook
|
||||||
|
.ipynb_checkpoints
|
||||||
|
|
||||||
|
# IPython
|
||||||
|
profile_default/
|
||||||
|
ipython_config.py
|
||||||
|
|
||||||
|
# pyenv
|
||||||
|
.python-version
|
||||||
|
|
||||||
|
# pipenv
|
||||||
|
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||||
|
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||||
|
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||||
|
# install all needed dependencies.
|
||||||
|
#Pipfile.lock
|
||||||
|
|
||||||
|
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
||||||
|
__pypackages__/
|
||||||
|
|
||||||
|
# Celery stuff
|
||||||
|
celerybeat-schedule
|
||||||
|
celerybeat.pid
|
||||||
|
|
||||||
|
# SageMath parsed files
|
||||||
|
*.sage.py
|
||||||
|
|
||||||
|
# Environments
|
||||||
|
.env
|
||||||
|
.venv
|
||||||
|
env/
|
||||||
|
venv/
|
||||||
|
ENV/
|
||||||
|
env.bak/
|
||||||
|
venv.bak/
|
||||||
|
pythonenv*
|
||||||
|
|
||||||
|
# Spyder project settings
|
||||||
|
.spyderproject
|
||||||
|
.spyproject
|
||||||
|
|
||||||
|
# Rope project settings
|
||||||
|
.ropeproject
|
||||||
|
|
||||||
|
# mkdocs documentation
|
||||||
|
/site
|
||||||
|
|
||||||
|
# mypy
|
||||||
|
.mypy_cache/
|
||||||
|
.dmypy.json
|
||||||
|
dmypy.json
|
||||||
|
|
||||||
|
# Pyre type checker
|
||||||
|
.pyre/
|
||||||
|
|
||||||
|
# pytype static type analyzer
|
||||||
|
.pytype/
|
||||||
|
|
||||||
|
# profiling data
|
||||||
|
.prof
|
||||||
|
|
||||||
### Windows ###
|
### Windows ###
|
||||||
# Windows thumbnail cache files
|
# Windows thumbnail cache files
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
|
Thumbs.db:encryptable
|
||||||
ehthumbs.db
|
ehthumbs.db
|
||||||
ehthumbs_vista.db
|
ehthumbs_vista.db
|
||||||
|
|
||||||
@ -110,4 +254,4 @@ $RECYCLE.BIN/
|
|||||||
# Windows shortcuts
|
# Windows shortcuts
|
||||||
*.lnk
|
*.lnk
|
||||||
|
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/code,go,linux,macos,windows
|
# End of https://www.toptal.com/developers/gitignore/api/code,go,linux,macos,windows,python
|
||||||
|
@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
- Support for Unicode in domain names (IDNs)
|
- Support for Unicode in domain names (IDNs)
|
||||||
- Unnecessarily encoded characters in URLs will be decoded (#138)
|
- Unnecessarily encoded characters in URLs will be decoded (#138)
|
||||||
- URLs are NFC-normalized before any processing (#138)
|
- URLs are NFC-normalized before any processing (#138)
|
||||||
|
- Links to the wiki in the new tab
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- Updated [go-gemini](https://github.com/makeworld-the-better-one/go-gemini) to v0.11.0
|
- Updated [go-gemini](https://github.com/makeworld-the-better-one/go-gemini) to v0.11.0
|
||||||
|
8
contrib/gemini-wiki/README.md
Normal file
8
contrib/gemini-wiki/README.md
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# gemini-wiki
|
||||||
|
|
||||||
|
This folder contains a Python script that downloads the Amfora [wiki](https://github.com/makeworld-the-better-one/amfora/wiki)
|
||||||
|
and converts it to gemtext, incorporating the sidebar and footer as well.
|
||||||
|
|
||||||
|
The script expects to be run inside the folder where the Gemini version of the wiki should be.
|
||||||
|
|
||||||
|
The output of this script can be viewed at `gemini://makeworld.gq/amfora-wiki/`.
|
111
contrib/gemini-wiki/main.py
Normal file
111
contrib/gemini-wiki/main.py
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
# Formatted with black.
|
||||||
|
|
||||||
|
import shutil
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
import md2gemini
|
||||||
|
|
||||||
|
TMP_WIKI_CLONE = "/tmp/amfora.wiki"
|
||||||
|
|
||||||
|
|
||||||
|
def md2gem(markdown):
|
||||||
|
return md2gemini.md2gemini(
|
||||||
|
markdown,
|
||||||
|
links="copy",
|
||||||
|
plain=False,
|
||||||
|
strip_html=True,
|
||||||
|
md_links=True,
|
||||||
|
link_func=link_func,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def link_func(link):
|
||||||
|
if "://" in link:
|
||||||
|
# Absolute URL
|
||||||
|
return link
|
||||||
|
|
||||||
|
# Link to other wiki page
|
||||||
|
return link + ".gmi"
|
||||||
|
|
||||||
|
|
||||||
|
def run_cmd(*args):
|
||||||
|
proc = subprocess.run(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
|
if proc.returncode != 0:
|
||||||
|
print(
|
||||||
|
"Command "
|
||||||
|
+ " ".join(args)
|
||||||
|
+ "failed with exit code "
|
||||||
|
+ str(proc.returncode)
|
||||||
|
)
|
||||||
|
print("Output was:")
|
||||||
|
print()
|
||||||
|
print(proc.stdout.decode())
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
# Delete leftover git repo
|
||||||
|
try:
|
||||||
|
shutil.rmtree(TMP_WIKI_CLONE)
|
||||||
|
except FileNotFoundError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
os.mkdir(TMP_WIKI_CLONE)
|
||||||
|
|
||||||
|
run_cmd(
|
||||||
|
"git",
|
||||||
|
"clone",
|
||||||
|
"--depth",
|
||||||
|
"1",
|
||||||
|
"https://github.com/makeworld-the-better-one/amfora.wiki.git",
|
||||||
|
TMP_WIKI_CLONE,
|
||||||
|
)
|
||||||
|
|
||||||
|
# Save special files
|
||||||
|
|
||||||
|
with open(os.path.join(TMP_WIKI_CLONE, "_Footer.md"), "r") as f:
|
||||||
|
footer = md2gem(f.read())
|
||||||
|
|
||||||
|
# Get files
|
||||||
|
(_, _, files) = next(os.walk(TMP_WIKI_CLONE))
|
||||||
|
|
||||||
|
# Create list of pages
|
||||||
|
pages = "## Pages\n\n=>.. Home\n"
|
||||||
|
for file in files:
|
||||||
|
|
||||||
|
if file in ["_Footer.md", "_Sidebar.md", "Home.md"]:
|
||||||
|
continue
|
||||||
|
if not file.endswith(".md"):
|
||||||
|
continue
|
||||||
|
pages += "=>" + file[:-2] + "gmi " + file[:-3].replace("-", " ") + "\n"
|
||||||
|
|
||||||
|
pages += "\n\n"
|
||||||
|
|
||||||
|
for file in files:
|
||||||
|
filepath = os.path.join(TMP_WIKI_CLONE, file)
|
||||||
|
|
||||||
|
if file in ["_Footer.md", "_Sidebar.md"]:
|
||||||
|
continue
|
||||||
|
if not file.endswith(".md"):
|
||||||
|
# Could be a resource like an image file, copy it
|
||||||
|
shutil.copyfile(filepath, file)
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Markdown file
|
||||||
|
|
||||||
|
with open(filepath, "r") as f:
|
||||||
|
gemtext = md2gem(f.read())
|
||||||
|
|
||||||
|
# Add title, sidebar, footer
|
||||||
|
gemtext = "# " + file[:-3].replace("-", " ") + "\n\n" + pages + gemtext
|
||||||
|
gemtext += "\n\n\n\n" + footer
|
||||||
|
|
||||||
|
if file == "Home.md":
|
||||||
|
file = "index.md"
|
||||||
|
|
||||||
|
new_name = file[:-2] + "gmi"
|
||||||
|
|
||||||
|
with open(new_name, "w") as f:
|
||||||
|
f.write(gemtext)
|
1
contrib/gemini-wiki/requirements.txt
Normal file
1
contrib/gemini-wiki/requirements.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
md2gemini<2
|
@ -17,11 +17,18 @@ You can customize this page by creating a gemtext file called newtab.gmi, in Amf
|
|||||||
|
|
||||||
Happy browsing!
|
Happy browsing!
|
||||||
|
|
||||||
|
## Internal Pages
|
||||||
|
|
||||||
=> about:bookmarks Bookmarks
|
=> about:bookmarks Bookmarks
|
||||||
=> about:subscriptions Subscriptions
|
=> about:subscriptions Subscriptions
|
||||||
|
|
||||||
|
## Learn more about Amfora!
|
||||||
|
|
||||||
|
=> https://github.com/makeworld-the-better-one/amfora Amfora homepage
|
||||||
|
=> https://github.com/makeworld-the-better-one/amfora/wiki Amfora Wiki [GitHub]
|
||||||
|
=> gemini://makeworld.gq/amfora-wiki/ Amfora Wiki [On Gemini!]
|
||||||
|
|
||||||
=> //gemini.circumlunar.space Project Gemini
|
=> //gemini.circumlunar.space Project Gemini
|
||||||
=> https://github.com/makeworld-the-better-one/amfora Amfora homepage [HTTPS]
|
|
||||||
`
|
`
|
||||||
|
|
||||||
// Read the new tab content from a file if it exists or fallback to a default page.
|
// Read the new tab content from a file if it exists or fallback to a default page.
|
||||||
|
Loading…
Reference in New Issue
Block a user