From ae90cd7e0b6e55aae73d4aab5ca8f80c7957d59d Mon Sep 17 00:00:00 2001 From: lyn Date: Mon, 13 Apr 2026 15:07:20 +0000 Subject: [PATCH] publish-package: implement docker branch with lock-mgr and docker login/push --- git-hangman-lab/scripts/publish-package | 72 ++++++++++++++++++++----- 1 file changed, 59 insertions(+), 13 deletions(-) diff --git a/git-hangman-lab/scripts/publish-package b/git-hangman-lab/scripts/publish-package index 2872d65..c959cca 100755 --- a/git-hangman-lab/scripts/publish-package +++ b/git-hangman-lab/scripts/publish-package @@ -1,18 +1,10 @@ -#!/bin/bash -# publish-package - Publish packages to various registries -# Usage: -# publish-package docker --proj -# publish-package nuget --proj -# publish-package pypi --proj -# publish-package npm --proj - -set -e +#!/usr/bin/env bash +set -euo pipefail COMMAND="" REGISTRY="" IMAGE="" TAG="" -SOURCE="" PACKAGE_FILE="" REPO="" @@ -62,6 +54,60 @@ if [[ -z "$COMMAND" ]] || [[ -z "$REPO" ]]; then usage fi -# TODO: implement publish logic -echo "publish-package: $COMMAND not yet implemented" -exit 1 +do_docker() { + if [[ -z "$REGISTRY" ]] || [[ -z "$IMAGE" ]] || [[ -z "$TAG" ]]; then + echo "Error: docker requires " + exit 1 + fi + + OWNER=$(ego-mgr get default-username) + if [[ -z "$OWNER" ]]; then + echo "Error: cannot get username from ego-mgr" + exit 1 + fi + + KEY=$(python3 -c "import uuid; print(uuid.uuid4())") + + LOCKFILE="$HOME/.openclaw/.docker" + lock-mgr acquire "$LOCKFILE" "$KEY" + + trap 'lock-mgr release "$LOCKFILE" "$KEY" 2>/dev/null || true' EXIT + + echo "Logging in to $REGISTRY..." + docker login "$REGISTRY" -u "$OWNER" -p "$(secret-mgr get-secret --key git)" 2>/dev/null + + FULL_IMAGE="${REGISTRY}/${OWNER}/${IMAGE}:${TAG}" + echo "Building: $FULL_IMAGE" + + cd "$REPO" + docker build -t "$FULL_IMAGE" . + + echo "Pushing: $FULL_IMAGE" + docker push "$FULL_IMAGE" + + lock-mgr release "$LOCKFILE" "$KEY" + + echo "Done: $FULL_IMAGE" +} + +do_nuget() { + echo "publish-package nuget: not yet implemented" + exit 1 +} + +do_pypi() { + echo "publish-package pypi: not yet implemented" + exit 1 +} + +do_npm() { + echo "publish-package npm: not yet implemented" + exit 1 +} + +case "$COMMAND" in + docker) do_docker ;; + nuget) do_nuget ;; + pypi) do_pypi ;; + npm) do_npm ;; +esac \ No newline at end of file