From d8d1c0f6f5188782aa3f8b255ea72330a6ec5889 Mon Sep 17 00:00:00 2001
From: Adar Nimrod <nimrod@shore.co.il>
Date: Sat, 7 Oct 2023 00:25:50 +0300
Subject: [PATCH] Add the presentation script and documentation.

---
 README.md    | 25 +++++++++++++++++++------
 presentation | 22 ++++++++++++++++++++++
 2 files changed, 41 insertions(+), 6 deletions(-)
 create mode 100755 presentation

diff --git a/README.md b/README.md
index c053aa8..11c486d 100644
--- a/README.md
+++ b/README.md
@@ -2,16 +2,15 @@
 
 [![pipeline status](https://git.shore.co.il/nimrod/presentation/badges/master/pipeline.svg)](https://git.shore.co.il/nimrod/presentation/-/commits/master)
 
-A Dockerized presentation toolkit for building presentation from markup (like
-Markdown or DOT).
+A containerized presentation toolkit for building presentations from markup
+(like Markdown or DOT).
 
 ## Usage
 
-`docker run --rm -itv ג€œ$PWD:/volumeג€œ registry.shore.co.il/presentation`
+`podman run --rm -itv ג€œ$PWD:/volumeג€œ registry.shore.co.il/presentation`
 
-Will watch the current directory and run `make` whenever a file changes. One can
-add a shell alias
-`alias presentation='docker run --rm -itv ג€œ$PWD:/volumeג€œ registry.shore.co.il/presentation'` for easier use.
+Will watch the current directory and run `make` whenever a file changes
+(replace `podman` with `docker` if that's what you're using).
 
 See the example folder for more details and the [generated
 PDF](https://git.shore.co.il/nimrod/presentation/-/jobs/artifacts/master/raw/example/presentation.pdf?job=presentation%20build).
@@ -20,6 +19,20 @@ If you're using GitLab, check out the [CI
 template](https://git.shore.co.il/nimrod/presentation/-/blob/master/gitlab-ci-template/presentation.yml)
 if you wish to build presentation as part of a pipeline.
 
+Yet another option is using the contained tools instead of installing them in
+your system. For that copy the [presentation
+script](https://git.shore.co.il/nimrod/presentation/-/blob/master/presentation)
+to some in your `PATH` and create symlinks to the script with the name of the
+binary you wish to use. For example:
+
+```
+curl https://git.shore.co.il/nimrod/presentation/-/blob/master/presentation > ~/.local/bin/presentation
+chmod +x ~/.local/bin/presentation
+ln -s ~/.local/bin/pandoc presentation
+```
+
+In this example when you run `pandoc` it would run it using podman.
+
 ## Contains
 
 - [Pandoc](http://pandoc.org/)
diff --git a/presentation b/presentation
new file mode 100755
index 0000000..3694353
--- /dev/null
+++ b/presentation
@@ -0,0 +1,22 @@
+#!/bin/sh
+set -eu
+
+basename="$(basename "$0")"
+
+if [ "${1:-}" = '-u' ]
+then
+    podman image pull registry.shore.co.il/presentation
+elif [ "${1:-}" = "-h" ]
+then
+    echo "USAGE: ${basename} [-d] [-h] [BINARY_NAME] [...]"
+# If invoked using presentation, pass the arguments to the podman run command.
+elif [ "$basename" = presentation ]
+then
+    exec podman run --rm --interactive --tty --volume "$PWD:/volume" registry.shore.co.il/presentation "$@"
+# Use the system one, if available.
+elif command -pv "$basename" > /dev/null
+then
+    exec "$basename" "$@"
+else
+    exec podman run --rm --interactive --tty --volume "$PWD:/volume" registry.shore.co.il/presentation "$basename" "$@"
+fi
-- 
GitLab