Class: Parser::App

Inherits:
Object show all
Defined in:
lib/fir/patches/parser_patch.rb

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ App



77
78
79
# File 'lib/fir/patches/parser_patch.rb', line 77

def initialize(path)
  @path = path
end

Instance Method Details

#devicesObject



143
144
145
# File 'lib/fir/patches/parser_patch.rb', line 143

def devices
  mobileprovision['ProvisionedDevices'] if has_mobileprovision?
end

#display_nameObject



94
95
96
# File 'lib/fir/patches/parser_patch.rb', line 94

def display_name
  info['CFBundleDisplayName']
end

#distribution_nameObject



147
148
149
# File 'lib/fir/patches/parser_patch.rb', line 147

def distribution_name
  "#{mobileprovision['Name']} - #{mobileprovision['TeamName']}" if has_mobileprovision?
end

#has_mobileprovision?Boolean



131
132
133
# File 'lib/fir/patches/parser_patch.rb', line 131

def has_mobileprovision?
  File.file? mobileprovision_path
end

#hide_developer_certificatesObject



139
140
141
# File 'lib/fir/patches/parser_patch.rb', line 139

def hide_developer_certificates
  mobileprovision.delete('DeveloperCertificates') if has_mobileprovision?
end

#iconsObject



106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/fir/patches/parser_patch.rb', line 106

def icons
  @icons ||= begin
    icons = []
    info['CFBundleIcons']['CFBundlePrimaryIcon']['CFBundleIconFiles'].each do |name|
      icons << get_image(name)
      icons << get_image("#{name}@2x")
    end
    icons.delete_if { |i| !i }
  rescue NoMethodError
    []
  end
end

#identifierObject



90
91
92
# File 'lib/fir/patches/parser_patch.rb', line 90

def identifier
  info['CFBundleIdentifier']
end

#infoObject



81
82
83
84
# File 'lib/fir/patches/parser_patch.rb', line 81

def info
  @info ||= CFPropertyList.native_types(
    CFPropertyList::List.new(file: File.join(@path, 'Info.plist')).value)
end

#mobileprovisionObject



119
120
121
122
123
124
125
126
127
128
129
# File 'lib/fir/patches/parser_patch.rb', line 119

def mobileprovision
  return unless has_mobileprovision?
  return @mobileprovision if @mobileprovision

  cmd = "security cms -D -i \"#{mobileprovision_path}\""
  begin
    @mobileprovision = CFPropertyList.native_types(CFPropertyList::List.new(data: `#{cmd}`).value)
  rescue CFFormatError
    @mobileprovision = {}
  end
end

#mobileprovision_pathObject



135
136
137
# File 'lib/fir/patches/parser_patch.rb', line 135

def mobileprovision_path
  @mobileprovision_path ||= File.join(@path, 'embedded.mobileprovision')
end

#nameObject



86
87
88
# File 'lib/fir/patches/parser_patch.rb', line 86

def name
  info['CFBundleName']
end

#release_typeObject



151
152
153
154
155
156
157
158
159
# File 'lib/fir/patches/parser_patch.rb', line 151

def release_type
  if has_mobileprovision?
    if devices
      'adhoc'
    else
      'inhouse'
    end
  end
end

#short_versionObject



102
103
104
# File 'lib/fir/patches/parser_patch.rb', line 102

def short_version
  info['CFBundleShortVersionString']
end

#versionObject



98
99
100
# File 'lib/fir/patches/parser_patch.rb', line 98

def version
  info['CFBundleVersion']
end