2022-12-04 12:19:08 -08:00
|
|
|
(ns user
|
2023-01-17 20:28:17 -08:00
|
|
|
(:require [babashka.pods :as pods]
|
2023-02-09 13:26:42 +00:00
|
|
|
[clojure.edn :as edn]
|
|
|
|
|
[babashka.pods.impl :as impl]))
|
2022-12-04 12:19:08 -08:00
|
|
|
|
2023-02-09 13:26:42 +00:00
|
|
|
(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)})))
|
2022-12-04 12:19:08 -08:00
|
|
|
|
2023-02-09 13:26:42 +00:00
|
|
|
(comment
|
2023-04-22 20:27:02 -07:00
|
|
|
(pods/load-pod 'docker.tools "0.1.0")
|
2023-08-09 23:10:57 -07:00
|
|
|
(pods/load-pod "result/bin/babashka-pod-docker")
|
2023-09-07 19:57:33 -07:00
|
|
|
(pods/load-pod "result/bin/entrypoint")
|
2023-02-09 13:26:42 +00:00
|
|
|
|
2023-04-22 20:27:02 -07:00
|
|
|
(require '[docker.tools :as docker])
|
2023-02-09 13:26:42 +00:00
|
|
|
|
2023-08-09 23:10:57 -07:00
|
|
|
(pods/unload-pod {:pod/id "docker.tools"})
|
2023-02-09 13:26:42 +00:00
|
|
|
|
2023-09-07 19:57:33 -07:00
|
|
|
;; ignore patterns
|
|
|
|
|
(def patterns (docker/dockerignore-patterns (slurp "/Users/slim/vonwig/nodejs-service/.dockerignore")))
|
|
|
|
|
(docker/dockerignore-matches (assoc patterns :path "node_modules/hey"))
|
2023-09-09 23:55:41 -07:00
|
|
|
(docker/dockerignore-matches (assoc patterns :path "nodes"))
|
|
|
|
|
(docker/dockerignore-matches (assoc patterns :path "Dockerfile"))
|
|
|
|
|
(docker/dockerignore-matches (assoc patterns :path "blah/crap/npm-debug.log"))
|
|
|
|
|
(docker/dockerignore-matches (assoc patterns :path "blah/.vscode/hello.txt"))
|
|
|
|
|
(docker/dockerignore-matches (assoc patterns :path "src/jim/main.clj"))
|
|
|
|
|
|
2023-09-07 19:57:33 -07:00
|
|
|
|
2023-02-09 13:26:42 +00:00
|
|
|
;; parse image names using github.com/docker/distribution
|
2022-12-04 12:19:08 -08:00
|
|
|
;; turns golang structs into clojure maps
|
2023-02-09 13:26:42 +00:00
|
|
|
(docker/parse-image-name "gcr.io/whatever:tag")
|
|
|
|
|
|
2022-12-04 12:19:08 -08:00
|
|
|
;; automatically turns golang errors into Exceptions
|
2023-02-09 13:26:42 +00:00
|
|
|
(try
|
|
|
|
|
(docker/parse-image-name "gcr.io/whatever/:tag")
|
|
|
|
|
(catch Exception e
|
2022-12-04 12:19:08 -08:00
|
|
|
;; invalid reference format
|
2023-02-09 13:26:42 +00:00
|
|
|
(println (.getMessage e))))
|
|
|
|
|
|
2022-12-04 12:19:08 -08:00
|
|
|
;; parse dockerfiles using github.com/moby/buildkit
|
|
|
|
|
;; returns the Result struct transformed to a clojure map
|
2023-02-09 13:26:42 +00:00
|
|
|
(docker/parse-dockerfile "FROM \\\n gcr.io/whatever:tag\nCMD [\"run\"]")
|
|
|
|
|
|
2023-01-17 20:28:17 -08:00
|
|
|
;; run sbom generation on local image
|
2023-08-09 23:10:57 -07:00
|
|
|
(docker/sbom "mongo@sha256:9c8a0a019671ed7d402768d4df6dddcc898828e21e9f7b90a34b55fe8ca676ac"
|
|
|
|
|
(fn [event]
|
|
|
|
|
(println "event " event)))
|
2023-02-09 13:26:42 +00:00
|
|
|
|
2023-08-09 23:10:57 -07:00
|
|
|
(docker/hashes "vonwig/malware1:latest"
|
|
|
|
|
(fn [event] (println event))))
|
2023-01-17 20:28:17 -08:00
|
|
|
|
2023-02-09 13:26:42 +00:00
|
|
|
(defn generate-sbom
|
|
|
|
|
[image]
|
|
|
|
|
(impl/invoke-public
|
2023-04-22 20:27:02 -07:00
|
|
|
"docker.tools"
|
|
|
|
|
"docker.tools/generate-sbom"
|
2023-02-09 13:26:42 +00:00
|
|
|
[image "" ""]
|
|
|
|
|
{:handlers {:done (fn [] (println "Done"))
|
|
|
|
|
:success (fn [msg] (println "msg: " msg))
|
|
|
|
|
:error (fn [_err] #_"TODO: handle this error")}}))
|
2023-01-17 20:28:17 -08:00
|
|
|
|
2023-02-09 13:26:42 +00:00
|
|
|
(comment
|
|
|
|
|
(println (load-pod "./babashka-pod-docker"))
|
|
|
|
|
(impl/invoke-public
|
2023-04-22 20:27:02 -07:00
|
|
|
"docker.tools"
|
|
|
|
|
"docker.tools/generate-sbom"
|
2023-02-09 13:41:43 +00:00
|
|
|
["ubuntu:latest" "" ""]
|
2023-02-09 13:26:42 +00:00
|
|
|
{})
|
2023-08-09 23:10:57 -07:00
|
|
|
(generate-sbom "alpine"))
|