class Files::ShaFirebase
Public Class Methods
description()
click to toggle source
# File lib/scripts/files/sha_firebase.rb, line 7 def description <<-MARKDOWN Calculates the sha of specified files and uploads the result to firebase MARKDOWN end
Public Instance Methods
run()
click to toggle source
# File lib/scripts/files/sha_firebase.rb, line 14 def run firebase_uri = env_require("FIREBASE_URI") firebase_api_key = env_require("FIREBASE_API_KEY") sha_version = env_require("SHA_VERSION") sha_folder = env_require("SHA_FOLDER") shas = { created: Firebase::ServerValue::TIMESTAMP } timed_run "Generating SHA256" do return puts "#{sha_folder} does not exist" unless File.exist?(sha_folder) Dir.foreach(sha_folder) do |file| full_file = File.join(sha_folder, file) next if File.directory?(full_file) escaped_filename = firebase_escape(file.to_s) shas[escaped_filename.to_sym] = Digest::SHA256.file(full_file).hexdigest end end timed_run "Uploading to firebase" do firebase = Firebase::Client.new(firebase_uri, firebase_api_key) url = File.join(git_url, sha_version) latest_url = File.join(git_url, "latest") url = firebase_escape(url) latest_url = firebase_escape(latest_url) response = firebase.set(url, shas) unless response.code == 200 log_error("Failed to upload to Firebase") nice_exit(0, response.body) end response = firebase.set(latest_url, { version: sha_version, }.merge!(shas)) unless response.code == 200 log_error("Failed to upload to Firebase") nice_exit(0, response.body) end end end
Private Instance Methods
firebase_escape(s)
click to toggle source
# File lib/scripts/files/sha_firebase.rb, line 69 def firebase_escape(s) s.tr(".", "_") end
git_url()
click to toggle source
# File lib/scripts/files/sha_firebase.rb, line 62 def git_url git_remotes = capture_command("git", "remote", "-v") url = %r{(?:git@|https:\/\/)([^\s]+)}.match(git_remotes)[1] url = url.split(".git")[0] url.tr(":", "/") end