lib/choctop/appcast.rb in choctop-0.11.1 vs lib/choctop/appcast.rb in choctop-0.12.0
- old
+ new
@@ -1,118 +1,125 @@
-module ChocTop::Appcast
- def make_build
- if skip_build
- puts "Skipping build task..."
- else
- sh "xcodebuild -configuration #{build_type}"
+module ChocTop
+ module Appcast
+ def make_build
+ if skip_build
+ puts "Skipping build task..."
+ else
+ sh "xcodebuild -configuration #{build_type} -target #{build_target} #{build_opts}"
+ end
end
- end
-
- def make_appcast
- app_name = File.basename(File.expand_path('.'))
- FileUtils.mkdir_p(build_path)
- appcast = File.open("#{build_path}/#{appcast_filename}", 'w') do |f|
- xml = Builder::XmlMarkup.new(:indent => 2)
- xml.instruct!
- xml_string = xml.rss('xmlns:atom' => "http://www.w3.org/2005/Atom",
- 'xmlns:sparkle' => "http://www.andymatuschak.org/xml-namespaces/sparkle",
- :version => "2.0") do
- xml.channel do
- xml.title(app_name)
- xml.description("#{app_name} updates")
- xml.link(base_url)
- xml.language('en')
- xml.pubDate Time.now.to_s(:rfc822)
- # xml.lastBuildDate(Time.now.rfc822)
- xml.atom(:link, :href => "#{base_url}/#{appcast_filename}",
- :rel => "self", :type => "application/rss+xml")
- xml.item do
- xml.title("#{name} #{version}")
- xml.tag! "sparkle:releaseNotesLink", "#{base_url}/#{release_notes}"
- xml.pubDate Time.now.to_s(:rfc822) #(File.mtime(pkg))
- xml.guid("#{name}-#{version}", :isPermaLink => "false")
- xml.enclosure(:url => "#{base_url}/#{pkg_name}",
- :length => "#{File.size(pkg)}",
- :type => "application/dmg",
- :"sparkle:version" => version,
- :"sparkle:dsaSignature" => dsa_signature)
+ def make_appcast
+ FileUtils.mkdir_p(build_path)
+ appcast = File.open("#{build_path}/#{appcast_filename}", 'w') do |f|
+ xml = Builder::XmlMarkup.new(:indent => 2)
+ xml.instruct!
+ xml_string = xml.rss('xmlns:atom' => "http://www.w3.org/2005/Atom",
+ 'xmlns:sparkle' => "http://www.andymatuschak.org/xml-namespaces/sparkle",
+ :version => "2.0") do
+ xml.channel do
+ xml.title(@name)
+ xml.description("#{@name} updates")
+ xml.link(base_url)
+ xml.language('en')
+ xml.pubDate( Time.now.strftime("%a, %d %b %Y %H:%M:%S %z") )
+ # xml.lastBuildDate(Time.now.rfc822)
+ xml.atom(:link, :href => "#{base_url}/#{appcast_filename}",
+ :rel => "self", :type => "application/rss+xml")
+
+ xml.item do
+ xml.title("#{name} #{version}")
+ xml.tag! "sparkle:releaseNotesLink", "#{base_url}/#{release_notes}"
+ xml.pubDate Time.now.strftime("%a, %d %b %Y %H:%M:%S %z")
+ xml.guid("#{name}-#{version}", :isPermaLink => "false")
+ xml.enclosure(:url => "#{base_url}/#{pkg_name}",
+ :length => "#{File.size(pkg)}",
+ :type => "application/dmg",
+ :"sparkle:version" => version,
+ :"sparkle:dsaSignature" => dsa_signature)
+ end
end
end
+ f << xml_string
end
- f << xml_string
end
- end
-
- def make_dmg_symlink
- FileUtils.chdir(build_path) do
- `ln -s #{pkg_name} #{versionless_pkg_name}`
+
+ def make_dmg_symlink
+ FileUtils.chdir(build_path) do
+ `rm '#{versionless_pkg_name}'`
+ `ln -s '#{pkg_name}' '#{versionless_pkg_name}'`
+ end
end
- end
-
- def make_index_redirect
- File.open("#{build_path}/index.php", 'w') do |f|
- f << %Q{<?php header("Location: #{pkg_relative_url}"); ?>}
+
+ def make_index_redirect
+ File.open("#{build_path}/index.php", 'w') do |f|
+ f << %Q{<?php header("Location: #{pkg_relative_url}"); ?>}
+ end
end
- end
-
- def skip_build
- return true if ENV['NO_BUILD']
- return false if File.exists?('Info.plist')
- return false if Dir['*.xcodeproj'].size > 0
- true
- end
-
- def make_release_notes
- File.open("#{build_path}/#{release_notes}", "w") do |f|
- template = File.read(release_notes_template)
- f << ERB.new(template).result(binding)
+
+ def skip_build
+ return true if ENV['NO_BUILD']
+ return false if File.exists?('Info.plist')
+ return false if Dir['*.xcodeproj'].size > 0
+ true
end
- end
-
- def release_notes_content
- if File.exists?("release_notes.txt")
- File.read("release_notes.txt")
- else
- <<-TEXTILE.gsub(/^ /, '')
- h1. #{version} #{Date.today}
-
- h2. Another awesome release!
- TEXTILE
+
+ def make_release_notes
+ File.open("#{build_path}/#{release_notes}", "w") do |f|
+ template = File.read(release_notes_template)
+ f << ERB.new(template).result(binding)
+ end
end
- end
-
- def release_notes_html
- RedCloth.new(release_notes_content).to_html
- end
- def upload_appcast
- _host = host.blank? ? "" : "#{host}:"
- _user = user.blank? ? "" : "#{user}@"
- sh %{rsync #{rsync_args} #{build_path}/ #{_user}#{_host}#{remote_dir}}
- end
-
- # Returns a file path to the dsa_priv.pem file
- # If private key + public key haven't been generated yet then
- # generate them
- def private_key
- unless File.exists?('dsa_priv.pem')
- puts "Creating new private and public keys for signing the DMG..."
- `openssl dsaparam 2048 < /dev/urandom > dsaparam.pem`
- `openssl gendsa dsaparam.pem -out dsa_priv.pem`
- `openssl dsa -in dsa_priv.pem -pubout -out dsa_pub.pem`
- `rm dsaparam.pem`
- puts <<-EOS.gsub(/^ /, '')
-
- WARNING: DO NOT PUT dsa_priv.pem IN YOUR SOURCE CONTROL
- Remember to add it to your ignore list
-
- EOS
+ def release_notes_content
+ if File.exists?("release_notes.txt")
+ File.read("release_notes.txt")
+ else
+ <<-TEXTILE.gsub(/^ /, '')
+ h1. #{version} #{Date.today}
+
+ h2. Another awesome release!
+ TEXTILE
+ end
end
- File.expand_path('dsa_priv.pem')
+
+ def release_notes_html
+ RedCloth.new(release_notes_content).to_html
+ end
+
+ def upload_appcast
+ _host = host.blank? ? "" : host
+ _user = user.blank? ? "" : "#{user}@"
+ case transport
+ when :scp
+ # this is whack, really, work out your rsync options
+ sh %{scp #{scp_args} #{build_path}/* #{_user}#{_host}:#{remote_dir}}
+ else # default to rsync as per original
+ sh %{rsync #{rsync_args} #{build_path}/ #{_user}#{_host}:#{remote_dir}}
+ end
+ end
+
+ # Returns a file path to the dsa_priv.pem file
+ # If private key + public key haven't been generated yet then
+ # generate them
+ def private_key
+ unless File.exists?('dsa_priv.pem')
+ puts "Creating new private and public keys for signing the DMG..."
+ `openssl dsaparam 2048 < /dev/urandom > dsaparam.pem`
+ `openssl gendsa dsaparam.pem -out dsa_priv.pem`
+ `openssl dsa -in dsa_priv.pem -pubout -out dsa_pub.pem`
+ `rm dsaparam.pem`
+ puts <<-EOS.gsub(/^ /, '')
+
+ WARNING: DO NOT PUT dsa_priv.pem IN YOUR SOURCE CONTROL
+ Remember to add it to your ignore list
+
+ EOS
+ end
+ File.expand_path('dsa_priv.pem')
+ end
+
+ def dsa_signature
+ @dsa_signature ||= `openssl dgst -sha1 -binary < "#{pkg}" | openssl dgst -dss1 -sign "#{private_key}" | openssl enc -base64`
+ end
end
-
- def dsa_signature
- @dsa_signature ||= `openssl dgst -sha1 -binary < "#{pkg}" | openssl dgst -dss1 -sign "#{private_key}" | openssl enc -base64`
- end
-end
-ChocTop.send(:include, ChocTop::Appcast)
+end
\ No newline at end of file