You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
1.1 KiB
Clojure
27 lines
1.1 KiB
Clojure
(ns asciinema.component.a2png
|
|
(:require [asciinema.boundary.png-generator :as png-generator]
|
|
[asciinema.util.io :refer [cleanup-input-stream create-tmp-dir]]
|
|
[clojure.java.io :as io]
|
|
[clojure.java
|
|
[io :as io]
|
|
[shell :as shell]]
|
|
[me.raynes.conch :as conch]))
|
|
|
|
(defn- exec-a2png [bin-path in-url out-path {:keys [snapshot-at theme scale]}]
|
|
(conch/let-programs [a2png bin-path]
|
|
(a2png in-url out-path (str snapshot-at) theme (str scale) {:timeout 30000})))
|
|
|
|
(defrecord A2png [bin-path]
|
|
png-generator/PngGenerator
|
|
(generate [this json-is png-params]
|
|
(let [dir (create-tmp-dir "a2png-")
|
|
cleanup #(shell/sh "rm" "-rf" (.getPath dir))
|
|
json-local-path (str dir "/asciicast.json")
|
|
png-local-path (str dir "/asciicast.png")]
|
|
(io/copy json-is (io/file json-local-path))
|
|
(exec-a2png bin-path json-local-path png-local-path png-params)
|
|
(cleanup-input-stream (io/input-stream png-local-path) cleanup))))
|
|
|
|
(defn a2png [{:keys [bin-path]}]
|
|
(->A2png bin-path))
|