helmとhelm templateについての気づき 最終回 csplitを使ったマニフェストの分割
次にcsplitを使ったマニフェストの分割について試しました。 普段使いの環境はmacOSなのですが、csplitコマンドがインストールされていました。 どうやらHomebrewを使い始めるときにインストールする、コマンドラインツールに含まれるようです。
ChatGPTさんは次のように実行すればうまくいくと提示してくれました。
csplit -s -z -f manifest_ -b “%03d.yaml” hogehuga-myapp-manifests.yaml ‘/^—$/’ ‘{*}’
ところが実行すると、csplit: illegal option -- z
というエラーが表示されます。 それに対して、次のような回答がありました。
ああ、そうなんです!💡 macOS に入っている csplit は BSD版 で、-z オプション(空ファイルを削除)は GNU版のみ対応 なんです。 なので csplit: illegal option – z のエラーが出ちゃいます。
そのあと、解決策として-z
オプションを使わない方法と、GNU版 csplitを使う方法が例示されました。 なるべく余計なものをインストールしたくないので、最初の案を採用しました。
csplit -s -f manifest_ -b “%03d.yaml” hogehuga-myapp-manifests.yaml ‘/^—$/’ ‘{*}’ find . -name ‘manifest_*.yaml’ -size 0 -delete
ところが、一つ目のコマンドを実行したタイミングでcsplit: illegal option -- b
というエラーになりました。 それに対して、次のような回答がありました。
そうなんです、鋭い指摘ありがとうございます!💡 macOS の標準 csplit(= BSD版)は実は かなりオプションが少ない です。 -b(ファイル名の書式指定)も -z(空ファイル削除)も GNU版限定機能なんです。
先に言ってよw
そのあと、macOS標準で使えるBSD版のcsplitを使って頑張る方法が例示されたので実行したところ、csplit: *}: bad repetition count
というエラーになりました。 そのことについて聞くと、さらにmacOS標準で使えるBSD版のcsplitを使って頑張る方法が出てきたのですが、ここで根を上げて次の方法で解決することにしました。
$ brew install coreutils $ gcsplit -s -z -f manifest_ -b “%03d.yaml” hogehuga-myapp-manifests.yaml ‘/^—$/’ ‘{*}’
これでyqを使った時と同じような結果になります。 yqを使うのとGNU版csplitを使う方法のどちらがいいかと聞かれれば、どっちもどっちみたいな感じでしょうか。
「AIは案外面倒くさいな」と思った人もいるかもしれませんが、質問をしてズバリの回答がきても面白くないと思うんですよね。 なんとなくよく聞かないと正解がもらえなかったり、いざ実行するとうまく動かなくて、情報を伝えていくとゴールに向かっていくような感じは人間くさく感じました。
今回色々はまったおかげで、少しだけ賢くなったような気持ちになりましたし..。いや嘘です。