あまりにソースのサブフォルダーが多くて、改造しようという人が迷いそうなので、ちょっとだけ整理した(でも、まだ多い)
- Cmd/ … ビルド結果置き場
- Doc/ … ドキュメント
- Etc/ … ビルド時に参照する設定ファイル置き場など(旧Misc/)
- alias/ … エイリアス機能関連ソース(shell/ に依存)
- commands/ … 内蔵コマンドの実装(shell/ に依存)
- completion/ … 補完機能(readline/ に依存する)
- defined/ … ifdef 的な機能を提供するパッケージ
- dos/ … syscall 的なツールパッケージ。Windows に依存する
- frame/ … メインルーチンの中で Lua に依存しないソース
- functions/ … Lua向け関数だが、interface機能で Lua に依存しないようになっている
- history/ … ヒストリ機能関連
- mains/ … 真のメインルーチン。vanilla.go 以外は Lua に依存する
- nodos/ … syscall 的なツールパッケージだが、Windows/Linux 双方で利用できるもの
- nyagos.d/ … Lua スクリプト
- readline/ … 一行入力パッケージ
- shell/ … 一行実行パッケージ
- t/ … テスト用の Lua スクリプト等
- texts/ … 文字列操作用ツールパッケージ
今回、削除したのは ngs/ だけ。ここをカレントディレクトリにして go build すれば ngs.exe という Lua を使わない nyagos をビルドできていた。が、今回、tag に vanilla を与えてビルド(make.cmd vanilla
でOk)すれば Lua を参照しないようにすることで廃止した。
基本的な構造としては、shell(一行実行)と readline(一行入力) という二本柱がある。mains パッケージでこれらが用意している「フック」に対して、alias、completion、commands などの機能の関数をつっこんで呼び出しているという感じですわ。