29e586ff95f12addb7bd0f123af29ae7b2e82b7e
Background
This is a babashka pod that binds some golang functions into a clojure namespace. Using this pod, clojure programs can parse dockerfiles and docker images names using the "official" docker golang libraries.
github.com/docker/distribution/reference(for image name parsing)github.com/moby/buildkit/frontend/dockerfile/parser(for generating a Dockerfile AST).
Usage
(require '[babashka.pods :as pods])
(pods/load-pod 'atomisthq/docker "0.1.0")
; OR use a locally built pod binary
#_(pods/load-pod "./parser")
;; load-pod will create this namespace with two vars
(require '[pod.atomisthq.docker :as docker])
;; parse image names using github.com/docker/distribution
;; turns golang structs into clojure maps
(docker/parse-image-name "gcr.io/whatever:tag")
;; automatically turns golang errors into Exceptions
(try
(docker/parse-image-name "gcr.io/whatever/:tag")
(catch Exception e
;; invalid reference format
(println (.getMessage e))))
;; parse dockerfiles using github.com/moby/buildkit
;; returns the Result struct transformed to a clojure map
(docker/parse-dockerfile "FROM \\\n gcr.io/whatever:tag\nCMD [\"run\"]")
Loading 'atomisthq/docker from the pod registry will download the binary into ${user.home}/.babashka/pods/registry (the $BABASHKA_PODS_DIR environment variable will be used if it exists).
Building
To build the golang parser binary locally, run go build.
go build -o pod-babashka-docker
Contributing
You can find information about contributing to this project in the CONTRIBUTING.md
Description
Languages
Go
56.9%
Clojure
26%
Nix
12.7%
Dockerfile
4.4%