lib/motion/project/package.rb in motion-sparkle-sandbox-2.0.0 vs lib/motion/project/package.rb in motion-sparkle-sandbox-2.0.1
- old
+ new
@@ -1,44 +1,60 @@
-module Motion::Project
- class Sparkle
+# frozen_string_literal: true
- def package
- return unless setup_ok?
- create_release_folder
- @config.build_mode = :release
- return unless create_zip_file
- App.info "Release", version_string
- App.info "Version", @config.short_version
- App.info "Build", @config.version || 'unspecified in Rakefile'
- App.info "Size", @package_size.to_s
- sign_package
- create_appcast
- create_release_notes
- `open #{sparkle_release_path}`
- end
+module Motion
+ module Project
+ class Sparkle
+ def package
+ return unless setup_ok?
- def create_zip_file
- unless File.exist?(app_bundle_path)
- App.fail "You need to build your app with the Release target to use Sparkle"
+ create_release_folder
+ @config.build_mode = :release
+ return unless create_zip_file
+
+ App.info 'Release', version_string
+ App.info 'Version', @config.short_version
+ App.info 'Build', @config.version || 'unspecified in Rakefile'
+ App.info 'Size', @package_size.to_s
+
+ sign_package
+ create_release_notes
+
+ `open #{sparkle_release_path}`
end
- if File.exist?("#{sparkle_release_path}/#{zip_file}")
- App.fail "Release already exists at ./#{sparkle_release_path}/#{zip_file} (remove it manually with `rake sparkle:clean`)"
+
+ def create_zip_file
+ App.fail 'You need to build your app with the Release target to use Sparkle' unless File.exist?(app_bundle_path)
+
+ App.info 'Create', "./#{sparkle_release_path}/#{zip_file}"
+
+ if File.exist?("#{sparkle_release_path}/#{zip_file}")
+ App.fail "Release already exists at ./#{sparkle_release_path}/#{zip_file} (remove it manually with `rake sparkle:clean`)"
+ end
+
+ FileUtils.cd(app_release_path) do
+ `zip -r --symlinks "#{zip_file}" "#{app_file}"`
+ end
+
+ FileUtils.mv "#{app_release_path}/#{zip_file}", "./#{sparkle_release_path}/"
+
+ @package_file = zip_file
+ @package_size = File.size "./#{sparkle_release_path}/#{zip_file}"
end
- FileUtils.cd(app_release_path) do
- `zip -r --symlinks "#{zip_file}" "#{app_file}"`
- end
- FileUtils.mv "#{app_release_path}/#{zip_file}", "./#{sparkle_release_path}/"
- App.info "Create", "./#{sparkle_release_path}/#{zip_file}"
- @package_file = zip_file
- @package_size = File.size "./#{sparkle_release_path}/#{zip_file}"
- end
- def sign_package
- package = "./#{sparkle_release_path}/#{zip_file}"
- @package_signature = `#{openssl} dgst -sha1 -binary < "#{package}" | #{openssl} dgst -dss1 -sign "#{private_key_path}" | #{openssl} enc -base64`
- @package_signature = @package_signature.strip
- App.info "Signature", "\"#{@package_signature}\""
- end
+ def sign_package
+ package = "./#{sparkle_release_path}/#{zip_file}"
+ sign_update_app = "#{vendored_sparkle_path}/bin/sign_update"
+ args = []
+ if appcast.use_exported_private_key && File.exist?(private_key_path)
+ # -s <private-key> The private EdDSA (ed25519) key
+ private_key = File.read(private_key_path)
+ args << "-s=#{private_key}"
+ end
+ results, _status = Open3.capture2e(sign_update_app, *args, package)
+
+ App.info 'Signature', results
+ end
+ end
end
end