Shell for mochiOS
開発者がOS上でコードを書き、ビルドし、実行し、問題を調査するまでの流れを、できるだけ単純にすることを目的としています。
mshは、開発者ファーストを設計の中心に置いています。
シェルの都合に開発者が合わせるのではなく、開発者が自然に操作できることを重視します。
- 覚えやすく、一貫性のある構文
- 明確で読みやすいエラーメッセージ
- 対話操作とスクリプトの両立
- mochiOSの機能との自然な統合
- 不要な暗黙動作を避けた予測可能な挙動
- 小さく保守しやすい実装
mshは、単にコマンドを起動するだけのシェルではありません。
mochiOSにおける開発環境の入口として、次の用途を扱えることを目標としています。(いつになるんやこれ)
- プログラムの起動
- 引数と環境変数の管理
- パイプと入出力リダイレクト
- シェルスクリプトの実行
- プロセスとジョブの管理
- ファイルシステム操作
- mochiOSサービスの操作
- 開発・デバッグ用情報へのアクセス
頻繁に使う操作は短く、失敗したときの情報は詳しくします。
エラーを単に終了コードとして返すのではなく、何が失敗し、どこを確認すべきかが分かる表示を目指します。
同じ入力は、同じ条件で同じ結果になるべきです。
暗黙的な変換や、実行環境によって大きく変化する挙動はできる限り避けます。
複雑な機能を追加する前に、その機能が本当にシェルに必要かを検討します。
msh本体は小さく保ち、シェル以外でも利用できる機能はライブラリや外部コマンドとして実装します。
mshはPOSIXシェルの完全な複製を目的としていません。
既存のシェルから学びつつ、Capability、サービス、プロセス、IPCなど、mochiOS固有の仕組みを自然に扱える設計を目指します。
POSIX互換がほしいって?それはあなた、shを使おう。
mshは現在開発中です。
構文、コマンド、内部APIは今後変更される可能性があります。
現時点では、日常利用向けの安定性や後方互換性は保証されていません。
IssueやPull Requestを歓迎します。
変更を提案する際は、次の点を重視してください。
- 開発者の操作が単純になるか
- エラーの原因が分かりやすいか
- 挙動が予測可能か
- msh本体に実装すべき責務か
- mochiOSの設計方針と整合しているか
大きな機能を実装する場合は、先にIssueで設計を共有してください。
ライセンスについてはlicenseファイルを参照してください