Skip to content

rin721/gomodx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gomodx

gomodx 是一个面向真实工程迁移场景的 Go module 扩展工具箱,当前聚焦于 module path rename / migrate。

它解决的问题不是“把 go.mod 里一行文本改掉”,而是把真实项目里分散在多个文件、多个模块、replace、测试代码乃至可选 vendor/ 目录中的 module path 迁移工作,收敛成一条稳定、可回滚、可脚本化的命令。

当前已实现

  • gomodx doctor [old-module] [new-module]
  • gomodx fix <old-module> <new-module>
  • gomodx rename <old-module> <new-module>
  • gomodx diff <old-module> <new-module>
  • gomodx version
  • gomodx completion
  • migrate 作为 rename 的兼容别名

当前能力范围

rename 会处理:

  • go.mod
  • 子模块 go.mod
  • module 声明
  • require 中匹配旧 module 前缀的项
  • replace 中匹配旧 module 前缀的项
  • 所有 .go 文件中的 import path
  • 可选 vendor/

关键约束:

  • Go import 改写基于 AST
  • go.mod 改写基于 golang.org/x/mod/modfile
  • 默认支持备份
  • 支持 dry-run、verbose、JSON 摘要

快速开始

go run . version
go run . doctor --path .
go run . doctor github.com/old/repo github.com/new/repo --path .
go run . fix github.com/old/repo github.com/new/repo --path . --dry-run
go run . rename github.com/old/repo github.com/new/repo --path .
go run . diff github.com/old/repo github.com/new/repo --path .

dry-run 示例:

go run . rename github.com/old/repo github.com/new/repo --path . --dry-run --json

命令说明

rename

gomodx rename <old-module> <new-module> [flags]

常用 flags:

--path
--dry-run
--backup
--verbose
--no-tidy
--include-vendor
--json
--module-only
--imports-only

说明:

  • --backup 默认开启
  • --module-only--imports-only 不能同时指定
  • --dry-run 不会写文件,也不会执行 go mod tidy
  • 默认会对扫描到的模块目录执行 go mod tidy

doctor

gomodx doctor [old-module] [new-module] [flags]

适合:

  • 查看当前目录里有多少个模块和 Go 文件
  • 检查是否存在 vendor 目录和多模块结构
  • 在真正执行 rename 之前做参数和影响范围预检
  • 配合 --module-only--imports-only 缩小 rename 预检范围

fix

gomodx fix <old-module> <new-module> [flags]

适合:

  • 先自动做 doctor 预检,再执行 rename
  • 在一个命令里完成“检查 + 修复”
  • 配合 --dry-run 先演练完整修复链路

version

gomodx version

completion

gomodx completion bash
gomodx completion zsh
gomodx completion fish
gomodx completion powershell

diff

gomodx diff <old-module> <new-module> [flags]

适合:

  • 在真正写文件前先看统一 diff
  • 人工审阅 rename 会改哪些文件和行
  • 配合 --module-only--imports-only 缩小预览范围

开发

gofmt -w .
go test ./...

更多说明见:

  • docs/architecture.md
  • docs/command-usage.md
  • docs/test-strategy.md

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors