| | |
| | """ |
| | 自动读取Kiro token的脚本 |
| | 在Docker容器启动时自动读取宿主机的token文件 |
| | """ |
| |
|
| | import os |
| | import json |
| | import sys |
| | from pathlib import Path |
| |
|
| | def get_token_file_path(): |
| | """获取token文件路径""" |
| | home = Path.home() |
| | return home / ".aws" / "sso" / "cache" / "kiro-auth-token.json" |
| |
|
| | def read_tokens(): |
| | """读取token文件""" |
| | token_file = get_token_file_path() |
| | |
| | if not token_file.exists(): |
| | print(f"❌ Token文件不存在: {token_file}") |
| | print("请确保已登录Kiro,或手动创建token文件") |
| | return None, None |
| | |
| | try: |
| | with open(token_file, 'r', encoding='utf-8') as f: |
| | data = json.load(f) |
| | |
| | access_token = data.get('accessToken') |
| | refresh_token = data.get('refreshToken') |
| | |
| | if not access_token or not refresh_token: |
| | print("❌ Token文件格式错误,缺少accessToken或refreshToken") |
| | return None, None |
| | |
| | return access_token, refresh_token |
| | |
| | except json.JSONDecodeError: |
| | print("❌ Token文件JSON格式错误") |
| | return None, None |
| | except Exception as e: |
| | print(f"❌ 读取token文件失败: {e}") |
| | return None, None |
| |
|
| | def create_env_file(access_token, refresh_token): |
| | """创建.env文件""" |
| | env_content = f"""# Kiro Token配置 |
| | # 自动生成于 {os.path.basename(__file__)} |
| | KIRO_ACCESS_TOKEN={access_token} |
| | KIRO_REFRESH_TOKEN={refresh_token} |
| | """ |
| | |
| | with open('.env', 'w', encoding='utf-8') as f: |
| | f.write(env_content) |
| | |
| | print("✅ .env文件已创建/更新") |
| |
|
| | def main(): |
| | """主函数""" |
| | print("🔍 正在读取Kiro token...") |
| | |
| | access_token, refresh_token = read_tokens() |
| | |
| | if access_token and refresh_token: |
| | create_env_file(access_token, refresh_token) |
| | print("✅ Token读取成功,服务即将启动...") |
| | return 0 |
| | else: |
| | print("❌ 无法获取token,请检查:") |
| | print("1. 是否已登录Kiro (https://kiro.dev)") |
| | print("2. token文件是否存在: ~/.aws/sso/cache/kiro-auth-token.json") |
| | print("3. 或手动创建.env文件并设置token") |
| | return 1 |
| |
|
| | if __name__ == "__main__": |
| | sys.exit(main()) |