nyagos のソースフォルダー構成をもうちょっと簡単に

あまりにソースのサブフォルダーが多くて、改造しようという人が迷いそうなので、ちょっとだけ整理した(でも、まだ多い)

  • 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 などの機能の関数をつっこんで呼び出しているという感じですわ。