34
35
36
37
38
39
40
41
42
43
44
45
46
47
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
|
# File 'lib/git_fit/cli/sync.rb', line 34
def auth(source)
sources = %w[garmin garmin_cn strava]
unless sources.include?(source)
say_status :error, "Supported: #{sources.join(', ')}", :red
return
end
config = git_fit_config.sync_config(source)
if config.empty?
say_status :warn, "No config for #{source}. Set env vars or config.yml", :yellow
return
end
adapter = build_auth_adapter(source)
unless adapter.respond_to?(:authenticate)
say_status :error, "#{source} does not support interactive auth", :red
return
end
say_status :auth, "Logging in to #{source}...", :green
if adapter.authenticate
say_status :done, "#{source} authenticated successfully", :green
if adapter.respond_to?(:generated_secret) && (secret = adapter.generated_secret)
puts ''
puts 'GitHub Actions Secrets:'
puts " SYNC_#{source.upcase}_SECRET = #{secret}"
puts " SYNC_#{source.upcase}_EMAIL = #{config['email']}"
puts " SYNC_#{source.upcase}_PASSWORD = #{config['password']}"
puts ''
puts 'Local config:'
puts " #{source}:"
puts ' secret: (已自动写入 config/config.yml)'
end
else
say_status :error, 'Authentication failed', :red
end
rescue GitFit::Sync::AuthError => e
say_status :error, "Authentication failed: #{e.message}", :red
end
|