class AnyCableRailsGenerators::DownloadGenerator
Downloads anycable-go binary
Constants
- VERSION
Public Instance Methods
download_bin()
click to toggle source
# File lib/generators/anycable/download/download_generator.rb, line 21 def download_bin out = options[:bin_path] || DEFAULT_BIN_PATH version = options[:version] || VERSION download_exe( release_url(version), to: out, file_name: "anycable-go" ) true end
Private Instance Methods
download_exe(url, to:, file_name:)
click to toggle source
# File lib/generators/anycable/download/download_generator.rb, line 61 def download_exe(url, to:, file_name:) file_path = File.join(to, file_name) run "#{sudo(to)}curl -L #{url} -o #{file_path}", abort_on_failure: true run "#{sudo(to)}chmod +x #{file_path}", abort_on_failure: true run "#{file_path} -v", abort_on_failure: true end
latest_release_url(version)
click to toggle source
# File lib/generators/anycable/download/download_generator.rb, line 56 def latest_release_url(version) "https://github.com/anycable/anycable-go/releases/latest/download/" \ "anycable-go-#{os_name}-#{cpu_name}" end
legacy_release_url(version)
click to toggle source
# File lib/generators/anycable/download/download_generator.rb, line 46 def legacy_release_url(version) "https://github.com/anycable/anycable-go/releases/download/#{version}/" \ "anycable-go-v#{version}-#{os_name}-#{cpu_name}" end
new_release_url(version)
click to toggle source
# File lib/generators/anycable/download/download_generator.rb, line 51 def new_release_url(version) "https://github.com/anycable/anycable-go/releases/download/#{version}/" \ "anycable-go-#{os_name}-#{cpu_name}" end
release_url(version)
click to toggle source
# File lib/generators/anycable/download/download_generator.rb, line 36 def release_url(version) return latest_release_url(version) if version == "latest" if Gem::Version.new(version).segments.first >= 1 new_release_url("v#{version}") else legacy_release_url("v#{version}") end end
sudo(path)
click to toggle source
# File lib/generators/anycable/download/download_generator.rb, line 69 def sudo(path) sudo = "" unless File.writable?(path) if yes? "Path is not writable 😕. Do you have sudo privileges?" sudo = "sudo " else say_status :error, "❌ Failed to install AnyCable-Go WebSocket server", :red raise StandardError, "Path #{path} is not writable!" end end sudo end