標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

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