aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Resnick <max@ofmax.li>2025-02-15 23:04:57 -0800
committerMax Resnick <max@ofmax.li>2025-02-15 23:04:57 -0800
commitaf604d8100799fd7481c0bb223d84b3d0aaaf999 (patch)
tree80e135718e3e220fd0a5b61f7fa429ffc4573cc8
parent3bc28bb9df715976e8b30e561ccf0553ceed860a (diff)
downloadgrumpy-containers-af604d8100799fd7481c0bb223d84b3d0aaaf999.tar.gz
feat: replace Makefile w/ justfile
-rw-r--r--Makefile48
-rw-r--r--justfile78
2 files changed, 78 insertions, 48 deletions
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 5c26a04..0000000
--- a/Makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/env make
-override CONTAINERS = $(patsubst src/%,%,$(wildcard src/*))
-override TARGETS = $(patsubst src/%,%,$(subst targets/,,$(wildcard src/**/targets/*)))
-
-override PUSH_TARGETS = $(addprefix push/,$(TARGETS))
-override BUILD_TARGETS = $(addprefix build/,$(TARGETS))
-
-override BUILD_CONTAINERS = $(addprefix build/,$(CONTAINERS))
-override PUSH_CONTAINERS = $(addprefix push/,$(CONTAINERS))
-
-override REGISTRY_URL = public.ecr.aws/s0f9o2k5
-
-TAG = $(shell cat src/$(@F)/VERSION)
-BASE_NAME = $(notdir $(@D))
-
-all: $(BUILD_CONTAINERS) $(BUILD_TARGETS) $(PUSH_CONTAINERS) $(PUSH_TARGETS)
-
-$(BUILD_CONTAINERS): TAG = $(shell cat src/$(@F)/VERSION)
-$(BUILD_CONTAINERS):
- docker build -t $(REGISTRY_URL)/$(@F):$(TAG) -f src/$(@F)/Dockerfile src/$(@F)
- @echo "$(@F)/$(TAG) has been built"
-
-$(PUSH_CONTAINERS): TAG = $(shell cat src/$(@F)/VERSION)
-$(PUSH_CONTAINERS):
- docker push $(REGISTRY_URL)/$(@F):$(TAG)
- @echo "$(@F)/$(TAG) has been pushed"
-
-$(BUILD_TARGETS): TAG = $(shell cat src/$(BASE_NAME)/VERSION)
-$(BUILD_TARGETS):
- docker build --target $(@F) -t $(REGISTRY_URL)/$(BASE_NAME):$(TAG)-$(@F) -f src/$(BASE_NAME)/Dockerfile src/$(BASE_NAME)
- docker build --target $(@F) -t $(REGISTRY_URL)/$(BASE_NAME):$(@F) -f src/$(BASE_NAME)/Dockerfile src/$(BASE_NAME)
- @echo "$(BASE_NAME)/$(@F)/$(TAG) has been built"
-
-$(PUSH_TARGETS): TAG = $(shell cat src/$(BASE_NAME)/VERSION)
-$(PUSH_TARGETS):
- docker push $(REGISTRY_URL)/$(BASE_NAME):$(TAG)-$(@F)
- docker push $(REGISTRY_URL)/$(BASE_NAME):$(@F)
- @echo "$(BASE_NAME)/$(@F)/$(TAG) has been pushed"
-
-
-build: $(BUILD_CONTAINERS) $(BUILD_TARGETS)
- @echo "completed builds"
-
-push: $(PUSH_CONTAINERS) $(PUSH_TARGETS)
- @echo "pushed all containers"
-
-%: build/% push/%
- echo "completed $%"
diff --git a/justfile b/justfile
new file mode 100644
index 0000000..11fa935
--- /dev/null
+++ b/justfile
@@ -0,0 +1,78 @@
+# Variables
+registry_url := "public.ecr.aws/s0f9o2k5"
+containers := `ls src`
+targets := `find src -type f -name "targets" -exec dirname {} \; | sed 's/src\///'`
+
+# Default recipe
+default: build push
+
+# Build all containers and targets
+build: build-containers build-targets
+
+# Push all containers and targets
+push: push-containers push-targets
+
+# Build a single container
+build-container container:
+ #!/usr/bin/env bash
+ base_ver=$(cat src/base/VERSION)
+ tag=$(cat src/{{container}}/VERSION)
+ docker build --build-arg BASE_VER=$base_ver -t {{registry_url}}/{{container}}:$tag -f src/{{container}}/Dockerfile src/{{container}}
+ echo "{{container}}/$tag has been built"
+
+# Push a single container
+push-container container:
+ #!/usr/bin/env bash
+ tag=$(cat src/{{container}}/VERSION)
+ docker push {{registry_url}}/{{container}}:$tag
+ echo "{{container}}/$tag has been pushed"
+
+# Build all containers
+build-containers:
+ #!/usr/bin/env bash
+ for container in {{containers}}; do
+ just build-container $container
+ done
+
+# Push all containers
+push-containers:
+ #!/usr/bin/env bash
+ for container in {{containers}}; do
+ just push-container $container
+ done
+
+# Build targets
+build-targets:
+ #!/usr/bin/env bash
+ for dir in {{targets}}; do
+ base_name=$(dirname $dir)
+ target=$(basename $dir)
+ tag=$(cat src/$base_name/VERSION)
+ docker build --target $target -t {{registry_url}}/$base_name:$tag-$target -f src/$base_name/Dockerfile src/$base_name
+ docker build --target $target -t {{registry_url}}/$base_name:$target -f src/$base_name/Dockerfile src/$base_name
+ echo "$base_name/$target/$tag has been built"
+ done
+
+# Push targets
+push-targets:
+ #!/usr/bin/env bash
+ for dir in {{targets}}; do
+ base_name=$(dirname $dir)
+ target=$(basename $dir)
+ tag=$(cat src/$base_name/VERSION)
+ docker push {{registry_url}}/$base_name:$tag-$target
+ docker push {{registry_url}}/$base_name:$target
+ echo "$base_name/$target/$tag has been pushed"
+ done
+
+# Bump version
+bump-version container:
+ #!/usr/bin/env bash
+ echo "v$(bumpver patch src/{{container}}/VERSION)" > src/{{container}}/VERSION
+
+# Bump versions:
+bump-versions:
+ #!/usr/bin/env bash
+ for container in {{containers}}; do
+ just push-container $container
+ done