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
基于Python3编写的Golang程序多平台交叉编译自动化脚本
于 2024-12-20 00:24:50 首次发布