Module: DeployGate::Commands::AddDevices

Defined in:
lib/deploygate/commands/add_devices.rb

Class Method Summary collapse

Class Method Details

.build!(bundle_id, member_center, args, options) ⇒ Object



72
73
74
75
76
77
78
79
80
81
# File 'lib/deploygate/commands/add_devices.rb', line 72

def build!(bundle_id, member_center, args, options)
  app = DeployGate::Xcode::MemberCenters::App.new(bundle_id, member_center)
  app.create! unless app.created?

  DeployGate::Xcode::MemberCenters::ProvisioningProfile.new(bundle_id, member_center).create!
  team = member_center.team
  DeployGate::Xcode::Export.clean_provisioning_profiles(bundle_id, team)

  DeployGate::Commands::Deploy::Build.run(args, options)
end

.device_register(session, owner, udid, device_name, bundle_id, member_center, args, options) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/deploygate/commands/add_devices.rb', line 42

def device_register(session, owner, udid, device_name, bundle_id, member_center, args, options)
  if udid.nil? && device_name.nil?
    devices = fetch_devices(session.token, owner, bundle_id, member_center)
    select_devices = select_devices(devices)
    not_device if select_devices.empty?

    register!(select_devices)
  else
    register_udid = udid || HighLine.ask(I18n.t('commands.add_devices.input_udid'))
    register_device_name = device_name || HighLine.ask(I18n.t('commands.add_devices.input_device_name'))
    device = DeployGate::Xcode::MemberCenters::Device.new(register_udid, '', register_device_name, member_center)

    puts device.to_s
    if HighLine.agree(I18n.t('commands.add_devices.device_register_confirm')) {|q| q.default = "y"}
      register!([device])
    else
      not_device
    end
  end

  build!(bundle_id, member_center, args, options)
end

.fetch_devices(token, owner, bundle_id, member_center) ⇒ Object



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/deploygate/commands/add_devices.rb', line 83

def fetch_devices(token, owner, bundle_id, member_center)
  res = DeployGate::API::V1::Users::App.not_provisioned_udids(token, owner, bundle_id)
  if res[:error]
    case res[:message]
      when 'unknown app'
        not_application(owner, bundle_id)
      when 'unknown user'
        unknown_user
      else
        raise res[:message]
    end
  end

  results = res[:results]
  devices = results.map{|r| DeployGate::Xcode::MemberCenters::Device.new(r[:udid], r[:user_name], r[:device_name], member_center)}

  devices
end

.ios_only_commandvoid

This method returns an undefined value.



131
132
133
134
# File 'lib/deploygate/commands/add_devices.rb', line 131

def ios_only_command
  puts HighLine.color(I18n.t('commands.add_devices.ios_only_command'), HighLine::YELLOW)
  exit
end

.not_application(owner, bundle_id) ⇒ void

This method returns an undefined value.

Parameters:

  • owner (String)
  • bundle_id (String)


139
140
141
142
143
144
# File 'lib/deploygate/commands/add_devices.rb', line 139

def not_application(owner, bundle_id)
  puts ''
  puts I18n.t('commands.add_devices.unknown_application.data', owner: owner, bundle_id: bundle_id)
  puts HighLine.color(I18n.t('commands.add_devices.unknown_application.message'), HighLine::YELLOW)
  exit
end

.not_devicevoid

This method returns an undefined value.



125
126
127
128
# File 'lib/deploygate/commands/add_devices.rb', line 125

def not_device
  puts HighLine.color(I18n.t('commands.add_devices.not_device'), HighLine::YELLOW)
  exit
end

.register!(devices) ⇒ Object



65
66
67
68
69
70
# File 'lib/deploygate/commands/add_devices.rb', line 65

def register!(devices)
  devices.each do |device|
    device.register!
    success_registered_device(device)
  end
end

.run(args, options) ⇒ Object

Parameters:

  • args (Array)
  • options (Commander::Command::Options)


8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/deploygate/commands/add_devices.rb', line 8

def run(args, options)
  work_dir = args.empty? ? Dir.pwd : args.first
  ios_only_command unless DeployGate::Project.ios?(work_dir)

  session = DeployGate::Session.new
  unless session.login?
    Login.()
    session = DeployGate::Session.new()
  end

  owner            = options.user || session.name
  udid             = options.udid
  device_name      = options.device_name
  distribution_key = options.distribution_key
  server           = options.server

  root_path = DeployGate::Xcode::Ios.project_root_path(work_dir)
  workspaces = DeployGate::Xcode::Ios.find_workspaces(root_path)
  analyze = DeployGate::Xcode::Analyze.new(workspaces, options.configuration)
  bundle_id = analyze.target_bundle_identifier
  developer_team = analyze.developer_team
  member_center = DeployGate::Xcode::MemberCenter.new(developer_team)

  if server
    run_server(session, owner, bundle_id, distribution_key, member_center, args, options)
  else
    device_register(session, owner, udid, device_name, bundle_id, member_center, args, options)
  end
end

.run_server(session, owner, bundle_id, distribution_key, member_center, args, options) ⇒ Object



38
39
40
# File 'lib/deploygate/commands/add_devices.rb', line 38

def run_server(session, owner, bundle_id, distribution_key, member_center, args, options)
  DeployGate::AddDevicesServer.new().start(session.token, owner, bundle_id, distribution_key, member_center, args, options)
end

.select_devices(devices) ⇒ Array

Parameters:

  • (Array)

Returns:

  • (Array)


104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/deploygate/commands/add_devices.rb', line 104

def select_devices(devices)
  return [] if devices.empty?

  select = []
  cli = HighLine.new
  devices.each do |device|
    puts ''
    puts I18n.t('commands.add_devices.select_devices.device_info', device: device.to_s)
    select.push(device) if cli.agree(I18n.t('commands.add_devices.select_devices.agree')) {|q| q.default = "y"}
  end

  select
end

.success_registered_device(device) ⇒ void

This method returns an undefined value.

Parameters:

  • device (Device)


120
121
122
# File 'lib/deploygate/commands/add_devices.rb', line 120

def success_registered_device(device)
  puts HighLine.color(I18n.t('commands.add_devices.success_registered_device', device: device.to_s), HighLine::GREEN)
end

.unknown_userObject



146
147
148
149
150
# File 'lib/deploygate/commands/add_devices.rb', line 146

def unknown_user
  puts ''
  puts HighLine.color(I18n.t('commands.add_devices.unknown_user'), HighLine::RED)
  exit
end