This commit is contained in:
James Carnegie
2023-02-09 13:26:42 +00:00
parent cb3b3534a4
commit f58c0ad058
14 changed files with 120 additions and 171 deletions

View File

@@ -1,26 +1,73 @@
(ns user
(:require [babashka.pods :as pods]
[clojure.edn :as edn]))
[clojure.edn :as edn]
[babashka.pods.impl :as impl]))
(pods/load-pod 'atomisthq/tools.docker "0.1.0")
(require '[pod.atomisthq.docker :as docker])
(defn load-pod
([pod-spec] (load-pod pod-spec nil))
([pod-spec version opts] (load-pod pod-spec (assoc opts :version version)))
([pod-spec opts]
(let [opts (if (string? opts)
{:version opts}
opts)
pod (impl/load-pod
pod-spec
(merge {:remove-ns remove-ns
:resolve (fn [sym]
(or (resolve sym)
(intern
(create-ns (symbol (namespace sym)))
(symbol (name sym)))))}
opts))]
(future (impl/processor pod))
{:pod/id (:pod-id pod)})))
;; parse image names using github.com/docker/distribution
(comment
(pods/load-pod 'docker/babashka-pod-docker "0.1.0")
(require '[babashka-pod-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")
(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
(try
(docker/parse-image-name "gcr.io/whatever/:tag")
(catch Exception e
;; invalid reference format
(println (.getMessage e))))
(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\"]")
(docker/parse-dockerfile "FROM \\\n gcr.io/whatever:tag\nCMD [\"run\"]")
;; run sbom generation on local image
(docker/sbom "vonwig/clojure-base:jdk17" (fn [event] (println event)))
(docker/sbom "vonwig/clojure-base:jdk17" (fn [event] (println event)))
(docker/hashes "vonwig/malware1:latest" (fn [event] (println event)))
(docker/hashes "vonwig/malware1:latest" (fn [event] (println event)))
)
(defn generate-sbom
[image]
(impl/invoke-public
"docker.babashka-pod-docker"
"babashka-pod-docker/generate-sbom"
[image "" ""]
{:handlers {:done (fn [] (println "Done"))
:success (fn [msg] (println "msg: " msg))
:error (fn [_err] #_"TODO: handle this error")}}))
(comment
(println (load-pod "./babashka-pod-docker"))
(impl/invoke-public
"docker.babashka-pod-docker"
"babashka-pod-docker/parse-image-name"
["ubuntu:latest"]
{})
(generate-sbom "alpine")
)