Closed7

パッケージ引っ越し大作戦

HAYAMA_Kaoru (a.k.a zetamatta)HAYAMA_Kaoru (a.k.a zetamatta)

import 文の zetamatta/hogehoge を nyaosorg/hogehoge へ全部置換するバッチファイル。Perl は -i オプションで、ファイルの書き換えができるので便利。ただし、Windows版だと改行コードが CRLF になってしまうので、安直に go fmt で元に戻す(これ Perl 側でなんとかできそうなもんだけどね)

set "TARGET=go-windows-mbcs"
for /R %%I in (*.go) do perl -i -p -e "s|github.com/zetamatta/%TARGET%|github.com/nyaosorg/%TARGET%|g" %%I & go fmt %%I
HAYAMA_Kaoru (a.k.a zetamatta)HAYAMA_Kaoru (a.k.a zetamatta)

昨日、だいぶとやった。残りはあと6つ

  • go-findfile
  • go-inline-animation
  • go-windows-consoleicon
  • go-windows-dbg
  • go-windows-su
  • go-importconst

洗い出しは:
seek zetamatta **/*.go | goawk "{ t[$NF]++ } END{ for(i in t){ print i }}" | sort
でやった。

HAYAMA_Kaoru (a.k.a zetamatta)HAYAMA_Kaoru (a.k.a zetamatta)

以下、GitHub の機能でレポジトリの譲渡を行った場合の話

  • レポジトリを実際に引っ越ししても、GitHub 自身は旧URLを新URLへリダイレクトしてくれるので、既存の import の参照が切れることはない
  • 逆に新URLへのアクセスは go.mod に記述されている URL と、実際の URL がズレるので、すぐできない
  • 以下の go.mod の修正を行うことで、新URLで import できるようになる
    • go.mod の修正: module github.com/zetamatta/XXXXX → module github.com/nyaosorg/XXXXX
    • テストコードやサンプルコード、サブパッケージなどで、自分自身のパッケージ名を参照している import 文を修正する
    • go.mod を修正した後に、新しいURL版のタグを打つ
    • 以上を行うと、旧URLの時にセマンティックバージョニングによるタグが打たれていない場合、旧URLで import できなくなるので注意。おそらく、タグは後から打つことも一応できるが、その隙間をちゃんと作っておく必要あり
HAYAMA_Kaoru (a.k.a zetamatta)HAYAMA_Kaoru (a.k.a zetamatta)

消化状況:

  • go-findfile (go-windows-findfile とリネーム)
  • go-inline-animation
  • go-windows-consoleicon
  • go-windows-dbg
  • go-windows-su
  • go-importconst

置換バッチファイル(toNYAOSORG.cmd )を改良

  • findstr でヒットしたファイルだけを処理することでスピードアップ
  • 置換するレポジトリをパラメータ化(例 toNYAOSORG.cmd go-windows-su )
setlocal
set "TARGET=%~1"
for /F %%I in ('findstr /S /M "%TARGET%" *.go') do perl -i -p -e "s|github.com/zetamatta/%TARGET%|github.com/nyaosorg/%TARGET%|g" %%I & go fmt %%I
endlocal
exit /b
HAYAMA_Kaoru (a.k.a zetamatta)HAYAMA_Kaoru (a.k.a zetamatta)

nyagos から import されてるパッケージの引っ越し完了!

16レポジトリに分割・分散していたとは…作った自分もびっくり!

1
このスクラップは2021/09/14にクローズされました