Skip to content

Latest commit

 

History

History
71 lines (51 loc) · 3.69 KB

File metadata and controls

71 lines (51 loc) · 3.69 KB

envault TODO リスト

実装済みの機能

1. exportコマンドによる環境変数の設定

課題と解決策

exportコマンドを使用して環境変数を直接現在のシェルに設定することは、Goのプログラムが子プロセスとして実行され、その子プロセス内で設定された環境変数が親シェルに影響を与えないという技術的制限によって困難でした。

実装した解決策

  1. シェルスクリプトの出力と評価(従来の方法)

    • envault export --output-script-onlyコマンドを実装し、環境変数を設定するシェルスクリプトを出力
    • ユーザーがeval $(envault export --output-script-only)またはsource <(envault export --output-script-only)を使用して実行する必要がある
  2. 新しいbashセッションの起動

    • envault export --new-shellコマンドを実装し、環境変数を設定した新しいbashセッションを起動
    • 元のシェルには影響を与えないが、新しいシェル内ですべての環境変数が利用可能になる
  3. コマンド実行オプション

    • envault export -- command args形式で、環境変数を設定してから指定されたコマンドを実行する機能を実装
    • 例: envault export -- env | grep TEST_VAR
    • 例: envault export -- node app.js

2. TUIによる環境変数の選択的操作

  • export -sおよびexport selectコマンドで、適用する環境変数をTUIで選択できる機能を実装
  • unset -sコマンドで、アンセットする環境変数を選択できる機能も実装
  • BubbleTea ライブラリを使用した対話的なインターフェースの提供

3. コマンドライン解析の改善

  • github.com/spf13/cobra ライブラリを使用したコマンドライン解析への移行
  • 階層化されたコマンド構造の実装(export selectなどのサブコマンド)
  • ヘルプメッセージの自動生成と詳細化
  • ショートフラグと長形式フラグの両方のサポート

4. その他の実装済み機能

  • dumpコマンドによる暗号化されたファイルの内容表示
  • 対話式およびstdinからのパスワード入力対応
  • 環境変数のコメント保持と表示機能

将来の改善案

  1. ユーザー体験の向上

    • シェルのラッパースクリプトの提供
    • TUIインターフェースの機能強化(検索機能など)
  2. 追加機能

    • パスワード強度チェック機能の追加
    • 複数の.envファイルの管理機能
    • シェル補完スクリプトの生成
    • GUIインターフェースの提供
  3. プラットフォーム対応拡充

    • Windows環境でのサポート強化
    • Docker環境での使用簡略化

技術的な制約

Goのようなプログラミング言語で作成されたプログラムは、親シェルの環境変数を直接変更することができないという根本的な制約があります。これはOSのセキュリティモデルによるものであり、子プロセスは親プロセスの環境を変更できないようになっています。

この制約を回避するために、以下の方法を実装しました:

  1. シェルスクリプトを生成してevalまたはsourceコマンドで実行する方法
  2. 新しいbashセッションを起動する方法
  3. 環境変数を設定してから指定されたコマンドを実行する方法

今後の方向性

  1. より多くのユースケースに対応するための機能拡張
  2. クロスプラットフォーム対応の強化(Windows対応など)
  3. CI/CD環境での使いやすさ向上