Class: EasyAI::Base::SystemInfo

Inherits:
Object
  • Object
show all
Defined in:
lib/easyai/base/system_info.rb

Class Method Summary collapse

Class Method Details

.claude_auth_check_detailsObject

获取 claude_auth 环境检查详情



81
82
83
84
85
86
87
88
89
90
91
# File 'lib/easyai/base/system_info.rb', line 81

def claude_auth_check_details
  {
    os_supported: !windows?,
    os_name: platform.to_s.capitalize,
    is_us_region: is_us_region?,
    region: region_info[:region],
    is_english: is_english_environment?,
    locale: region_info[:locale],
    meets_requirements: meets_claude_auth_requirements?
  }
end

.current_shellObject



30
31
32
# File 'lib/easyai/base/system_info.rb', line 30

def current_shell
  @current_shell ||= ENV['SHELL']&.split('/')&.last || 'bash'
end

.current_userObject

用户和环境 ===



26
27
28
# File 'lib/easyai/base/system_info.rb', line 26

def current_user
  @current_user ||= Etc.getlogin || ENV['USER'] || ENV['LOGNAME']
end

.is_english_environment?Boolean

检查是否为英语环境

Returns:

  • (Boolean)


48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/easyai/base/system_info.rb', line 48

def is_english_environment?
  info = region_info

  case platform
  when :macos
    # macOS: 检查 locale 和首选语言
    locale_english = info[:locale].to_s.start_with?('en_') || info[:locale].to_s.start_with?('en.')
    apple_locale_english = info[:apple_locale].to_s.start_with?('en_')
    first_lang_english = info[:apple_languages].to_s.start_with?('en')

    # 任一为英语即可
    locale_english || apple_locale_english || first_lang_english
  when :windows
    # Windows: 检查系统和用户地区
    system_english = info[:system_locale].to_s.start_with?('en-')
    user_english = info[:user_locale].to_s.start_with?('en-')
    locale_english = info[:locale].to_s.start_with?('en_') || info[:locale].to_s.start_with?('en.')

    # 任一为英语即可
    system_english || user_english || locale_english
  else
    # Linux/其他: 检查 LANG 环境变量
    locale = info[:locale].to_s
    locale.start_with?('en_') || locale.start_with?('en.')
  end
end

.is_us_region?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/easyai/base/system_info.rb', line 43

def is_us_region?
  region_info[:is_us]
end

.linux?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/easyai/base/system_info.rb', line 21

def linux?
  platform == :linux
end

.macos?Boolean

Returns:

  • (Boolean)


13
14
15
# File 'lib/easyai/base/system_info.rb', line 13

def macos?
  platform == :macos
end

.meets_claude_auth_requirements?Boolean

检查是否满足 claude_auth 的环境要求

Returns:

  • (Boolean)


76
77
78
# File 'lib/easyai/base/system_info.rb', line 76

def meets_claude_auth_requirements?
  !windows? && is_us_region? && is_english_environment?
end

.platformObject

平台检测 ===



9
10
11
# File 'lib/easyai/base/system_info.rb', line 9

def platform
  @platform ||= detect_platform
end

.region_infoObject

地区和语言检测(仅在需要时调用)===



39
40
41
# File 'lib/easyai/base/system_info.rb', line 39

def region_info
  @region_info ||= detect_region_info
end

.shell_config_filesObject



34
35
36
# File 'lib/easyai/base/system_info.rb', line 34

def shell_config_files
  @shell_config_files ||= detect_shell_config_files
end

.which_command(cmd) ⇒ Object

命令检测 ===



94
95
96
97
98
99
100
# File 'lib/easyai/base/system_info.rb', line 94

def which_command(cmd)
  if windows?
    system("where #{cmd} >nul 2>&1")
  else
    system("which #{cmd} > /dev/null 2>&1")
  end
end

.windows?Boolean

Returns:

  • (Boolean)


17
18
19
# File 'lib/easyai/base/system_info.rb', line 17

def windows?
  platform == :windows
end