-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Parent Issue: #28
Depends on: Phase 3 issue
目的
秘密情報を含むプライベートな設定を別リポジトリで管理できるようにする。
実装内容
1. プライベートリポジトリ用の環境変数
-
PRIVATE_DOTFILES_REPO_URLの定義declare -r PRIVATE_DOTFILES_REPO_URL="${PRIVATE_DOTFILES_REPO_URL:-}"
-
PRIVATE_DOTFILES_PATHの定義declare -r PRIVATE_DOTFILES_PATH="${HOME}/.local/share/chezmoi-private"
-
PRIVATE_DOTFILES_CONFIG_PATHの定義declare -r PRIVATE_DOTFILES_CONFIG_PATH="${HOME}/.config/chezmoi-private/chezmoi.yaml"
2. プライベート dotfiles の初期化
-
setup_private_dotfiles()関数の作成function setup_private_dotfiles() { if [ -z "${PRIVATE_DOTFILES_REPO_URL}" ]; then echo "Skipping private dotfiles (PRIVATE_DOTFILES_REPO_URL not set)" return fi local chezmoi_cmd="${HOME}/.local/bin/chezmoi" local no_tty_option="" if is_ci_or_not_tty; then no_tty_option="--no-tty" fi "${chezmoi_cmd}" init \ --apply \ --ssh \ --source "${PRIVATE_DOTFILES_PATH}" \ --config "${PRIVATE_DOTFILES_CONFIG_PATH}" \ ${no_tty_option} \ "${PRIVATE_DOTFILES_REPO_URL}" }
3. SSH 設定
- SSH 鍵の存在確認(オプション)
- SSH 経由でのクローン(
--sshオプション) - GitHub への SSH 接続テスト(オプション)
4. エラーハンドリング
- プライベートリポジトリが存在しない場合の処理
- SSH 鍵がない場合の警告
- ネットワークエラー時の処理
5. メイン処理への統合
-
initialize_dotfiles()にプライベート dotfiles のセットアップを追加function initialize_dotfiles() { initialize_os_env run_chezmoi setup_private_dotfiles # 追加 }
使用方法
# プライベートリポジトリを使用する場合
export PRIVATE_DOTFILES_REPO_URL="[email protected]:yellow-seed/dotfiles-private.git"
./setup.sh
# 使用しない場合(デフォルト)
./setup.shプライベートリポジトリの構造例
dotfiles-private/
├── .chezmoi.yaml.tmpl
├── private_dot_ssh/
│ └── encrypted_config
└── private_dot_config/
└── gh/
└── encrypted_hosts.yml
テスト
- プライベートリポジトリなしでの動作確認
- プライベートリポジトリありでの動作確認
- SSH 鍵がない状態でのエラーハンドリング
- CI環境でのスキップ確認
ドキュメント更新
- README.md にプライベート dotfiles の使用方法を追加
- 環境変数の説明を追加
完了条件
- すべてのチェックボックスが完了
- プライベートリポジトリの初期化が動作
- エラーハンドリングが適切
- ドキュメントが更新されている
- テストが通過
- PRがマージされている
関連
- Parent: setup.sh を1スクリプトで完結する包括的なセットアップスクリプトに改善 #28
- Depends on: Phase 3
- Next: Phase 5
Metadata
Metadata
Assignees
Labels
No labels