From 3d3cb56491bccd6b3777553bbfa0da4c75e67b3b Mon Sep 17 00:00:00 2001 From: shokollm <270575765+shokollm@users.noreply.github.com> Date: Wed, 1 Apr 2026 23:07:30 +0000 Subject: [PATCH 1/2] feat(kugetsu): add git server configuration management Add 'kugetsu server' command for managing git server configurations: - kugetsu server list List all configured git servers - kugetsu server add Add a new git server - kugetsu server remove Remove a git server - kugetsu server default [] Get or set default server - kugetsu server get [] Get URL for a server Update get_repo_url() to use GIT_SERVERS config: - First checks repos.json for direct mapping - Then checks GIT_SERVERS for matching hostname - Falls back to DEFAULT_GIT_SERVER - Falls back to github.com as last resort Update cmd_init to create config with default git servers: - github.com -> https://github.com - git.fbrns.co -> https://git.fbrns.co Fixes #78 --- skills/kugetsu/scripts/kugetsu | 117 +++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) diff --git a/skills/kugetsu/scripts/kugetsu b/skills/kugetsu/scripts/kugetsu index 24152c1..fea63cf 100755 --- a/skills/kugetsu/scripts/kugetsu +++ b/skills/kugetsu/scripts/kugetsu @@ -139,6 +139,7 @@ issue_ref_to_branch_name() { get_repo_url() { local issue_ref="$1" + if [ -f "$REPOS_CONFIG" ]; then local url=$(python3 -c "import json, sys; d=json.load(open('$REPOS_CONFIG')); print(d.get('$issue_ref', ''))" 2>/dev/null || echo "") if [ -n "$url" ]; then @@ -146,8 +147,20 @@ get_repo_url() { return fi fi + local instance=$(echo "$issue_ref" | cut -d'/' -f1 | cut -d'#' -f1) local rest=$(echo "$issue_ref" | sed 's/.*\///' | sed 's/#.*//') + + if [ -n "${GIT_SERVERS[$instance]:-}" ]; then + echo "${GIT_SERVERS[$instance]}/${rest}.git" + return + fi + + if [ -n "${GIT_SERVERS[$DEFAULT_GIT_SERVER]:-}" ]; then + echo "${GIT_SERVERS[$DEFAULT_GIT_SERVER]}/${rest}.git" + return + fi + echo "https://${instance}/${rest}.git" } @@ -670,6 +683,100 @@ set_debug_mode() { echo "${filtered_args[@]}" } +cmd_server() { + local action="${1:-}" + + case "$action" in + ""|"list") + if [ -z "${GIT_SERVERS+x}" ]; then + echo "No git servers configured" + return + fi + echo "Git servers:" + for key in "${!GIT_SERVERS[@]}"; do + local marker="" + if [ "$key" = "$DEFAULT_GIT_SERVER" ]; then + marker=" (default)" + fi + echo " $key -> ${GIT_SERVERS[$key]}$marker" + done + ;; + "add") + local name="${2:-}" + local url="${3:-}" + if [ -z "$name" ] || [ -z "$url" ]; then + echo "Usage: kugetsu server add " >&2 + exit 1 + fi + if grep -q "^GIT_SERVERS\[" "$KUGETSU_DIR/config" 2>/dev/null; then + sed -i "s|^GIT_SERVERS\[\"$name\"\]=.*|GIT_SERVERS[\"$name\"]=\"$url\"|" "$KUGETSU_DIR/config" + if ! grep -q "GIT_SERVERS\[\"$name\"\]" "$KUGETSU_DIR/config" 2>/dev/null; then + sed -i "/^declare -A GIT_SERVERS/a GIT_SERVERS[\"$name\"]=\"$url\"" "$KUGETSU_DIR/config" + fi + else + echo "declare -A GIT_SERVERS" >> "$KUGETSU_DIR/config" + echo "GIT_SERVERS[\"$name\"]=\"$url\"" >> "$KUGETSU_DIR/config" + fi + source "$KUGETSU_DIR/config" + echo "Added git server: $name -> $url" + ;; + "remove"|"rm"|"delete") + local name="${2:-}" + if [ -z "$name" ]; then + echo "Usage: kugetsu server remove " >&2 + exit 1 + fi + if [ -n "${GIT_SERVERS[$name]:-}" ]; then + if [ "$name" = "$DEFAULT_GIT_SERVER" ]; then + echo "Error: Cannot remove default server. Set a new default first." >&2 + exit 1 + fi + sed -i "/GIT_SERVERS\[\"$name\"\]/d" "$KUGETSU_DIR/config" 2>/dev/null + source "$KUGETSU_DIR/config" + echo "Removed git server: $name" + else + echo "Error: Server '$name' not found" >&2 + exit 1 + fi + ;; + "default") + local name="${2:-}" + if [ -z "$name" ]; then + echo "Current default: $DEFAULT_GIT_SERVER" + return + fi + if [ -n "${GIT_SERVERS[$name]:-}" ]; then + sed -i "s/^DEFAULT_GIT_SERVER=.*/DEFAULT_GIT_SERVER=\"$name\"/" "$KUGETSU_DIR/config" + source "$KUGETSU_DIR/config" + echo "Set default git server to: $name" + else + echo "Error: Server '$name' not found" >&2 + exit 1 + fi + ;; + "get") + local name="${2:-$DEFAULT_GIT_SERVER}" + if [ -n "${GIT_SERVERS[$name]:-}" ]; then + echo "${GIT_SERVERS[$name]}" + else + echo "Error: Server '$name' not found" >&2 + exit 1 + fi + ;; + *) + echo "Usage: kugetsu server " >&2 + echo "" >&2 + echo "Commands:" >&2 + echo " list List all configured git servers" >&2 + echo " add Add a new git server" >&2 + echo " remove Remove a git server" >&2 + echo " default [] Get or set default server" >&2 + echo " get [] Get URL for a server (default: current default)" >&2 + exit 1 + ;; + esac +} + cmd_init() { local force=false @@ -694,6 +801,13 @@ cmd_init() { # Max concurrent dev agents (default: 3) # MAX_CONCURRENT_AGENTS=5 + +# Git server configurations +# Format: GIT_SERVERS["hostname"]="https://hostname" +declare -A GIT_SERVERS +GIT_SERVERS["github.com"]="https://github.com" +GIT_SERVERS["git.fbrns.co"]="https://git.fbrns.co" +DEFAULT_GIT_SERVER="github.com" EOF echo "Created config file: $KUGETSU_DIR/config" fi @@ -1174,6 +1288,9 @@ main() { status) cmd_status ;; + server) + cmd_server "$@" + ;; doctor) cmd_doctor "$@" ;; From 8f144c854e5d193e529801db373e91086a5f58ea Mon Sep 17 00:00:00 2001 From: shokollm <270575765+shokollm@users.noreply.github.com> Date: Thu, 2 Apr 2026 00:25:11 +0000 Subject: [PATCH 2/2] Address PR feedback: - Remove hardcoded git.fbrns.co server (users should add their own) - Add comment about how to add servers - Support --force flag in cmd_init to regenerate config file This addresses han's review feedback: 1. Removed git.fbrns.co from default config 2. Config file can now be regenerated with --force flag 3. We continue using the existing config file (not separate file) --- skills/kugetsu/scripts/kugetsu | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skills/kugetsu/scripts/kugetsu b/skills/kugetsu/scripts/kugetsu index fea63cf..9527ffc 100755 --- a/skills/kugetsu/scripts/kugetsu +++ b/skills/kugetsu/scripts/kugetsu @@ -793,7 +793,7 @@ cmd_init() { ensure_dirs - if [ ! -f "$KUGETSU_DIR/config" ]; then + if [ ! -f "$KUGETSU_DIR/config" ] || [ "$force" = true ]; then cat > "$KUGETSU_DIR/config" << 'EOF' # User configuration overrides # Values set here take precedence over defaults @@ -804,9 +804,9 @@ cmd_init() { # Git server configurations # Format: GIT_SERVERS["hostname"]="https://hostname" +# Add servers with: kugetsu server add declare -A GIT_SERVERS GIT_SERVERS["github.com"]="https://github.com" -GIT_SERVERS["git.fbrns.co"]="https://git.fbrns.co" DEFAULT_GIT_SERVER="github.com" EOF echo "Created config file: $KUGETSU_DIR/config"