Create an offline-only HTML file, mirroring external resources.
Iri al dosiero
Jaidyn Ann 19e01c762d Add --source & :HTML-URL to resolve relative URLs
Now, relative URLs in the input file can be
mirrored in relation to a given URL.
2024-05-31 22:29:47 -05:00
src Add --source & :HTML-URL to resolve relative URLs 2024-05-31 22:29:47 -05:00
t Add --source & :HTML-URL to resolve relative URLs 2024-05-31 22:29:47 -05:00
COPYING.txt Add README.md and COPYING.txt 2024-05-31 22:04:02 -05:00
Makefile Init basic tests 2024-05-27 23:59:55 -05:00
README.md Add README.md and COPYING.txt 2024-05-31 22:04:02 -05:00
mirror-img.asd Replace our RELATIVE-PATHNAME with PATHNAME-UTIL’s 2024-05-31 14:44:33 -05:00

mirror-img

mirror-img is a command-line tool that creates a “local” version of an HTML file, mirroring its remote images, stylesheets, and other resources.

Usage

usage: mirror-img [-h] [-d DIR] [-b BASE] HTML_FILE
       mirror-img [-h] [-d DIR] [-b BASE]
Available options:
  -h, --help          print this help text.
  -b, --base          path to mirror directory used in URLs
  -d, --downloads ARG directory for all mirrored files

Examples

In order to mirror a webpage, you can simply download it and pipe it into mirror-img:

$ curl https://www.gnu.org/philosophy/philosophy.html | mirror-img > philosophy.html

And now philosophy.html will be a fully-local HTML file, with no external resources! All mirrored content will be found in the mirror/ directory, and all links have been adjusted accordingly.

If youd like to change the download directory, you can use the --downloads argument. To change the directory used in the output HTMLs URLs, you can use --base.

For example, if youd like to mirror files into /tmp/mirrors/ but have URLs start with mirrors/ rather than /tmp/mirrors:

$ mirror-img --base "mirrors/" --downloads /tmp/mirrors/ index.html > new-index.html

… now new-index.html contains that local version of index.html!

Installation

Making a binary requires an implementation of Common Lisp installed: Steel Bank Common Lisp is our implementation-of-choice. Its available on most operating systems under the package name sbcl.

You also need the library-manager Quicklisp, which can be installed quite easily, including via our Makefile.

To install Quicklisp, build a binary, and install it, simply:

$ make quicklisp
$ make build
$ sudo cp mirror-img /usr/local/bin/mirror-img

Bam, you've made and installed a binary! Cool!

Tests

mirror-imgs tests can be run from a REPL using ASDF:TEST-SYSTEM, or from the Makefile target “test”.

* (asdf:test-system :eksd)
* (asdf:test-system :eksd/unix)
$ make test

Misc