Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

用openai写了一个基于nexus-cli的可视化脚本,分享给大家 #53

Open
muxuan1978 opened this issue May 16, 2024 · 0 comments

Comments

@muxuan1978
Copy link

muxuan1978 commented May 16, 2024

#!/bin/bash
# -------------------------------------------------------
# 基于nexus-cli的图形化工具
# openai提供技术支持
# 2024.5.16
# -------------------------------------------------------

# 假设nexus-cli已经在PATH中
NEXUS_CLI="nexus-cli" 
IFS=" "

list_images() {
    # 获取所有的 images 并移除最后的汇总行
    readarray -t images <<< `$NEXUS_CLI image ls | grep -v xxl | sed '$d'`

    # 检查是否获取到了镜像列表
    if [ ${#images[@]} -eq 0 ]; then
        whiptail --title "Error" --msgbox "No images found or unable to fetch images." 10 50
        exit 1
    fi

    # 创建 whiptail 菜单选项,每行显示一个image,并在前面加上序号
    menu_options=()
    for i in "${!images[@]}"; do
        menu_options+=("$(($i+1))" "${images[$i]}")
    done

    # 使用 whiptail 显示可选的 image 列表
    selected_index=$(whiptail --title "NEXUS Image Maintenance Tool - Images" --menu "Choose an image" 30 80 20 "${menu_options[@]}" 3>&1 1>&2 2>&3)
    if [ $? -eq 0 ]; then
        # 减去 1 是因为数组索引从 0 开始
        list_tags "${images[$(($selected_index-1))]}"
    fi
}

# 显示选定镜像的tag列表,并允许用户选择
list_tags() {
    local image_name=$1
	# 获取所有的 tags 并移除最后的汇总行
    readarray -t tags <<< `$NEXUS_CLI image tags --name="$image_name" | sed '$d'`
    if [ -z "$tags" ]; then
        whiptail --title "Error" --msgbox "No tags found for image $image_name or unable to fetch tags." 10 50
        return
    fi
	
	# 创建 whiptail 菜单选项,每行显示一个image,并在前面加上序号
    menu_options=()
    for i in "${!tags[@]}"; do
        menu_options+=("$(($i+1))" "${tags[$i]}")
    done
	
    tag_selection=$(whiptail --title "NEXUS Image Maintenance Tool - Tags" --menu "Choose a tag of $image_name" 30 80 20 "${menu_options[@]}" 3>&1 1>&2 2>&3)
    if [ $? -eq 0 ]; then
        show_info "$image_name" "${tags[$(($tag_selection-1))]}"
    else
        list_images
    fi
}

# 显示所选tag的信息
show_info() {
    local image_name=$1
    local tag_name=$2
    info=$($NEXUS_CLI image info --name="$image_name" --tag="$tag_name")
	
	whiptail --title "Information for $image_name:$tag_name" --yes-button "OK" --no-button "Delete"  --yesno "$info" 30 80
	exit_status=$?
    if [ $exit_status -eq 0 ]; then
        # 用户选择了 OK
        list_tags "$image_name"
    else
        # 用户选择了 Delete
        delete_tag "$image_name" "$tag_name"
    fi
}

# 删除指定的tag
delete_tag() {
    local image_name=$1
    local tag_name=$2
    if (whiptail --yesno "Are you sure you want to delete the tag $tag_name of image $image_name?" 10 60); then
        $NEXUS_CLI image delete --name="$image_name" --tag="$tag_name"
        whiptail --msgbox "Tag $tag_name of image $image_name has been deleted." 10 60
    fi
	list_tags "$image_name"
}

# 检查nexus-cli是否存在
if ! command -v $NEXUS_CLI &> /dev/null; then
    echo "nexus-cli could not be found. Please install it and add it to your PATH."
    exit 1
fi

# 运行主程序
list_images
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant