返回

Swift 命令行工具开发与 GitHub Action 自动发布到 Homebrew

iOS

利用 Swift 和 GitHub Action 构建和发布命令行工具

简介

对于希望开发强大命令行工具的开发人员来说,Swift 是一个极佳的选择。借助 Swift Package Manager (SPM) 和 GitHub Actions,您可以轻松地创建、构建和发布您的工具。本教程将引导您完成使用 Swift 和 GitHub Actions 构建和发布命令行工具的各个步骤。

创建 Swift 命令行工具

要创建 Swift 命令行工具,您可以使用 Xcode 或命令行:

使用 Xcode:

  • 创建一个新项目,选择 "命令行工具" 模板。
  • 输入项目名称和位置。

使用命令行:

  • 运行 swift package init --type executable

添加代码

在 main.swift 文件中添加以下代码:

import Foundation

// 定义工具用法
let usage = "Usage: MyTool <command> [arguments]"

// 定义工具命令
enum Command: String {
  case help = "Display help information"
  case version = "Display the version number"
}

// 解析命令行参数
let args = CommandLine.arguments

// 检查命令行参数正确性
if args.count < 2 {
  print(usage)
  exit(1)
}

// 获取命令
let command = Command(rawValue: args[1]) ?? .help

// 执行命令
switch command {
  case .help:
    print(usage)
  case .version:
    print("1.0.0")
}

构建项目

使用 Xcode:

  • 选择 "项目" > "构建"。

使用命令行:

  • 运行 swift build

创建 GitHub Action

在您的 GitHub 仓库中,创建以下 GitHub Action 配置文件:

name: Build and Release

on:
  push:
    branches:
      - master

jobs:
  build:
    runs-on: macOS-latest
    steps:
      - uses: actions/checkout@v3
      - uses: swift-actions/build-and-test@v1
      - name: Publish to Homebrew
        run: |
          brew tap myusername/my-tap
          brew install my-tool

发布工具

创建 Homebrew 公式文件:

class MyTool < Formula
  desc "A command-line tool written in Swift"
  homepage "https://github.com/myusername/my-tool"
  url "https://github.com/myusername/my-tool/releases/download/v1.0.0/MyTool-1.0.0.tar.gz"
  sha256 "0123456789abcdef0123456789abcdef01234567"
  license "MIT"

  def install
    bin.install "MyTool"
  end
end

然后,您可以使用以下命令发布工具:

brew install my-tool

常见问题解答

1. 如何更新我的工具?

使用新的版本号更新 main.swift 文件并重新构建和发布项目。

2. 如何卸载我的工具?

运行 brew uninstall my-tool

3. 如何检查我的工具版本?

运行 my-tool --version

4. 如何获取帮助信息?

运行 my-tool --help

5. 我的工具遇到错误。怎么办?

检查 main.swift 文件是否存在语法错误或逻辑错误。此外,查看 GitHub Action 的构建日志以获取更多信息。

结论

通过 Swift 和 GitHub Actions,您可以轻松地创建、构建和发布强大的命令行工具。本文提供的分步指南和示例将帮助您完成整个过程,让您可以快速与世界分享您的工具。