基于Python3编写的Golang程序多平台交叉编译自动化脚本

import argparse
import os
import shutil
import sys
from shutil import copy2

from loguru import logger


class GoBuild:
    """
    一个用于构建跨平台执行文件的类。

    初始化函数,设置构建的主文件、生成的执行文件名称以及目标平台。
    :param f: 需要构建的主文件(例如: main.go)
    :param n: 生成的执行文件主名称(例如: install)
    """

    def __init__(self, f, n=None):
        self.darwin = darwin
        self.go = "go"
        self.name = n
        self.arch_list = []
        self.os_list = []
        self.amd64 = False
        self.mips64 = False
        self.arm64 = False
        self.arm32 = False
        self.linux = False
        self.windows = False
        self.file = f
        self.basename = ""
        self.archs = "X86_64"
        self.os_type = ""
        self.exe = ""
        self.tmp = ""
        self.logger = logger

    def init(self):
        """
        初始化函数,根据不同的架构和操作系统生成相应的架构和操作系统列表,
        并设置可执行文件的基础名称。
        """
        # 检查并添加架构到架构列表
        if self.arm64:
            self.arch_list.append("arm64")
        if self.mips64:
            self.arch_list.append("mips64le")
        if self.amd64:
            self.arch_list.append("amd64")
        if self.arm32:
            self.arch_list.append("arm")

        # 检查并添加操作系统到操作系统列表
        if self.linux:
            self.os_list.append("linux")
        if self.windows:
            self.os_list.append("windows")
        if self.darwin:
            self.os_list.append("darwin")

        # 设置可执行文件的基础名称
        if self.name is None:
            self.basename = str(os.path.basename(self.file)).replace(".go", "")
        else:
            self.basename = self.name

    def delete(self):
        """
        开始删除生成的临时文件
        :return: None
        """
        # 构造临时文件的完整路径
        tmp = os.path.join(os.getcwd(), self.tmp)
        try:
            # 尝试删除临时文件
            os.remove(path=self.tmp)
            # 删除成功后记录日志
            self.logger.debug(f"删除成功: {
     tmp}")
        except Exception as e:
            # 删除失败后记录错误日志
            self.log
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坐公交也用券

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值