Rename namespace to docker.tools

I have tested this version in the datoms project.
This commit is contained in:
Jim Clark
2023-04-22 20:27:02 -07:00
committed by James Carnegie
parent 4f77f40fb2
commit 63d3cc2f0a
8 changed files with 53 additions and 29 deletions

1
.envrc Normal file
View File

@@ -0,0 +1 @@
use flake

3
.gitignore vendored
View File

@@ -5,3 +5,6 @@ babashka-pod-docker
/.cpcache/
/.lsp/
/.nrepl-port
/vendor/
/result
/.direnv/

View File

@@ -9,12 +9,12 @@ This is a [babashka pod](https://github.com/babashka/pods) that binds some golan
```clojure
(require '[babashka.pods :as pods])
(pods/load-pod 'docker/docker-tools "0.1.0")
(pods/load-pod 'docker/tools "0.1.0")
; OR use a locally built pod binary
#_(pods/load-pod "./babashka-pod-docker")
;; load-pod will create this namespace with two vars
(require '[docker.babashka-pod-docker :as docker])
(require '[docker.tools :as docker])
;; parse image names using github.com/docker/distribution
;; turns golang structs into clojure maps
@@ -79,11 +79,11 @@ Here is an example of bindings that will resolve at compile-time and go through
;; statically define dispatch functions - this is synchronous
(defn parse [s]
(impl/invoke-public "docker.docker-tools" "docker.babashka-pod-docker/parse-dockerfile" [s] {}))
(impl/invoke-public "docker.tools" "docker.tools/parse-dockerfile" [s] {}))
;; async example
(defn generate-sbom [s]
(impl/invoke-public "docker.docker-tools" "docker.babashka-pod-docker/generate-sbom"
(impl/invoke-public "docker.tools" "docker.tools/generate-sbom"
[s cb]
{:handlers {:done (fn [])
:success cb
@@ -99,3 +99,4 @@ This method of dispatch does not require any dynamic namespace generation.
## Contributing
You can find information about contributing to this project in the CONTRIBUTING.md

View File

@@ -23,9 +23,9 @@
{:pod/id (:pod-id pod)})))
(comment
(pods/load-pod 'docker.docker-tools "0.1.0")
(pods/load-pod 'docker.tools "0.1.0")
(require '[docker.babashka-pod-docker :as docker])
(require '[docker.tools :as docker])
;; parse image names using github.com/docker/distribution
@@ -55,8 +55,8 @@
(defn generate-sbom
[image]
(impl/invoke-public
"docker.docker-tools"
"docker.babashka-pod-docker/generate-sbom"
"docker.tools"
"docker.tools/generate-sbom"
[image "" ""]
{:handlers {:done (fn [] (println "Done"))
:success (fn [msg] (println "msg: " msg))
@@ -65,8 +65,8 @@
(comment
(println (load-pod "./babashka-pod-docker"))
(impl/invoke-public
"docker.docker-tools"
"docker.babashka-pod-docker/generate-sbom"
"docker.tools"
"docker.tools/generate-sbom"
["ubuntu:latest" "" ""]
{})
(generate-sbom "alpine")

View File

@@ -13,7 +13,7 @@ import (
"fmt"
"strings"
"dockerfileparse/user/parser/babashka"
"babashka-pod-docker/babashka"
)
type Reference struct {
@@ -111,7 +111,7 @@ func ProcessMessage(message *babashka.Message) (any, error) {
Namespaces: []babashka.Namespace{
{
// this is the pod-id
Name: "docker.docker-tools",
Name: "docker.tools",
Vars: []babashka.Var{
{
Name: "parse-image-name",
@@ -127,8 +127,8 @@ func ProcessMessage(message *babashka.Message) (any, error) {
(sbom image cb {}))
([image cb opts]
(babashka.pods/invoke
"docker.docker-tools"
'docker.babashka-pod-docker/generate-sbom
"docker.tools"
'docker.tools/generate-sbom
[image]
{:handlers {:success (fn [event]
(cb event))
@@ -145,8 +145,8 @@ func ProcessMessage(message *babashka.Message) (any, error) {
(hashes image cb {}))
([image cb opts]
(babashka.pods/invoke
"docker.docker-tools"
'docker.babashka-pod-docker/generate-hashes
"docker.tools"
'docker.tools/generate-hashes
[image]
{:handlers {:success (fn [event]
(cb event))
@@ -161,21 +161,21 @@ func ProcessMessage(message *babashka.Message) (any, error) {
}, nil
case "invoke":
switch message.Var {
case "docker.babashka-pod-docker/parse-image-name":
case "docker.tools/parse-image-name":
args := []string{}
if err := json.Unmarshal([]byte(message.Args), &args); err != nil {
return nil, err
}
return parse_uri(args[0])
case "docker.babashka-pod-docker/parse-dockerfile":
case "docker.tools/parse-dockerfile":
args := []string{}
if err := json.Unmarshal([]byte(message.Args), &args); err != nil {
return nil, err
}
reader := strings.NewReader(args[0])
return parser.Parse(reader)
case "docker.babashka-pod-docker/generate-sbom":
case "docker.tools/generate-sbom":
args := []string{}
if err := json.Unmarshal([]byte(message.Args), &args); err != nil {
@@ -194,7 +194,7 @@ func ProcessMessage(message *babashka.Message) (any, error) {
}
return "done", nil
case "docker.babashka-pod-docker/generate-hashes":
case "docker.tools/generate-hashes":
args := []string{}
if err := json.Unmarshal([]byte(message.Args), &args); err != nil {
return nil, err

View File

@@ -11,22 +11,41 @@
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; };
in
{
devShells.default = pkgs.mkShell {
packages = with pkgs; [ go gotools golangci-lint gopls gopkgs go-outline ];
};
packages = {
packages = rec {
default = pkgs.buildGoModule {
pname = "babashka-pod-docker";
version = "0.0.1";
src = ./.;
vendorSha256 = "sha256-KUWqddPcv+hLStd7JEzQBUiGLPLYwfmyVoG1BtaHWXY=";
postInstall = ''
mv $out/bin/parser $out/bin/babashka-pod-docker
'';
# uncomment this and re-run to find the new vendor sha when module deps change
# note that you'll get inconsistent vendor deps if this gets out of sync because
# this sha defines the input for the mod deps derivation
# vendorSha256 = nixpkgs.lib.fakeSha256;
vendorSha256 = "sha256-jCjNhi0eqEBNPts/xmbwugs0T6HUw1ESip/li4/J6YY=";
CGO_ENABLED = 0;
};
docker = pkgs.dockerTools.buildImage {
name = "docker-pod";
tag = "latest";
config = {
Cmd = ["${default}/bin/babashka-pod-docker"];
};
};
default-linux = default.overrideAttrs (old: old // {GOOS = "linux"; GOARCH = "arm64";});
docker-arm64 = pkgs.dockerTools.buildImage {
name = "docker-pod";
tag = "latest";
config = {
Cmd = ["${default-linux}/bin/linux_arm64/babashka-pod-docker"];
};
};
};
});
}

2
go.mod
View File

@@ -1,4 +1,4 @@
module dockerfileparse/user/parser
module babashka-pod-docker
go 1.19

View File

@@ -1,8 +1,8 @@
package main
import (
"dockerfileparse/user/parser/babashka"
"dockerfileparse/user/parser/docker"
"babashka-pod-docker/babashka"
"babashka-pod-docker/docker"
"github.com/atomist-skills/go-skill"
"github.com/sirupsen/logrus"