Class: Supply::Uploader

Inherits:
Object
  • Object
show all
Defined in:
lib/supply/uploader.rb

Instance Method Summary collapse

Instance Method Details

#perform_uploadObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/supply/uploader.rb', line 3

def perform_upload
  FastlaneCore::PrintTable.print_values(config: Supply.config, hide_keys: [:issuer], title: "Summary for supply #{Supply::VERSION}")

  client.begin_edit(package_name: Supply.config[:package_name])

  raise "No local metadata found, make sure to run `supply init` to setup supply".red unless  || Supply.config[:apk]

  if 
    UI.user_error!("Could not find folder #{metadata_path}") unless File.directory? 

    Dir.foreach() do |language|
      next if language.start_with?('.') # e.g. . or .. or hidden folders

      listing = client.listing_for_language(language)

      (language, listing) unless Supply.config[:skip_upload_metadata]
      upload_images(language) unless Supply.config[:skip_upload_images]
      upload_screenshots(language) unless Supply.config[:skip_upload_screenshots]
      upload_changelogs(language) unless Supply.config[:skip_upload_metadata]
    end
  end

  upload_binary unless Supply.config[:skip_upload_apk]

  Helper.log.info "Uploading all changes to Google Play..."
  client.commit_current_edit!
  Helper.log.info "Successfully finished the upload to Google Play".green
end

#upload_binaryObject



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/supply/uploader.rb', line 87

def upload_binary
  if Supply.config[:apk]
    Helper.log.info "Preparing apk at path '#{Supply.config[:apk]}' for upload..."
    apk_version_code = client.upload_apk(Supply.config[:apk])

    Helper.log.info "Updating track '#{Supply.config[:track]}'..."
    if Supply.config[:track].eql? "rollout"
      client.update_track(Supply.config[:track], Supply.config[:rollout], apk_version_code)
    else
      client.update_track(Supply.config[:track], 1.0, apk_version_code)
    end

    if 
      Dir.foreach() do |language|
        next if language.start_with?('.') # e.g. . or .. or hidden folders
        upload_changelog(language, apk_version_code)
      end
    end

  else
    Helper.log.info "No apk file found, you can pass the path to your apk using the `apk` option"
  end
end

#upload_changelog(language, apk_version_code) ⇒ Object



38
39
40
41
42
43
44
45
# File 'lib/supply/uploader.rb', line 38

def upload_changelog(language, apk_version_code)
  path = File.join(, language, Supply::CHANGELOGS_FOLDER_NAME, "#{apk_version_code}.txt")
  if File.exist?(path)
    Helper.log.info "Updating changelog for code version '#{apk_version_code}' and language '#{language}'..."
    apk_listing = ApkListing.new(File.read(path), language, apk_version_code)
    client.update_apk_listing_for_language(apk_listing)
  end
end

#upload_changelogs(language) ⇒ Object



32
33
34
35
36
# File 'lib/supply/uploader.rb', line 32

def upload_changelogs(language)
  client.apks_version_codes.each do |apk_version_code|
    upload_changelog(language, apk_version_code)
  end
end

#upload_images(language) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/supply/uploader.rb', line 57

def upload_images(language)
  Supply::IMAGES_TYPES.each do |image_type|
    search = File.join(, language, Supply::IMAGES_FOLDER_NAME, image_type) + ".#{IMAGE_FILE_EXTENSIONS}"
    path = Dir.glob(search, File::FNM_CASEFOLD).last
    next unless path

    Helper.log.info "Uploading image file #{path}..."
    client.upload_image(image_path: File.expand_path(path),
                        image_type: image_type,
                          language: language)
  end
end

#upload_metadata(language, listing) ⇒ Object



47
48
49
50
51
52
53
54
55
# File 'lib/supply/uploader.rb', line 47

def (language, listing)
  Helper.log.info "Loading metadata for language '#{language}'..."

  Supply::.each do |key|
    path = File.join(, language, "#{key}.txt")
    listing.send("#{key}=".to_sym, File.read(path)) if File.exist?(path)
  end
  listing.save
end

#upload_screenshots(language) ⇒ Object



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/supply/uploader.rb', line 70

def upload_screenshots(language)
  Supply::SCREENSHOT_TYPES.each do |screenshot_type|
    search = File.join(, language, Supply::IMAGES_FOLDER_NAME, screenshot_type, "*.#{IMAGE_FILE_EXTENSIONS}")
    paths = Dir.glob(search, File::FNM_CASEFOLD)
    next unless paths.count > 0

    client.clear_screenshots(image_type: screenshot_type, language: language)

    paths.sort.each do |path|
      Helper.log.info "Uploading screenshot #{path}..."
      client.upload_image(image_path: File.expand_path(path),
                          image_type: screenshot_type,
                            language: language)
    end
  end
end