blob: e37ad59b25420b16564c57f3f52881854f77b364 [file] [log] [blame]
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
module Buildr
module GPG
extend self
def sign_task(pkg)
file(pkg.to_s + '.asc') do
puts "GPG signing #{pkg.to_spec}"
cmd = 'gpg',
'--local-user', ENV['GPG_USER'],
'--armor',
'--output', pkg.to_s + '.asc'
cmd += ['--passphrase', ENV['GPG_PASS']] if ENV['GPG_PASS']
cmd += ['--detach-sig', pkg]
#cmd << { :verbose => true }
#sh *cmd
system *cmd
end
end
def sign_and_upload(pkg)
task(:upload).enhance do
artifact = Buildr.artifact(pkg.to_spec_hash.merge(:type => "#{pkg.type}.asc"))
artifact.from sign_task(pkg)
artifact.invoke
artifact.upload
end
end
def gpg_sign_before_upload
self.enhance do
[self, self.projects].flatten.each { |prj|
prj.packages.each { |pkg| sign_and_upload(pkg) }
prj.packages.map {|pkg| pkg.pom }.uniq.each { |pom| sign_and_upload(pom) }
}
end
end
end
end
class Buildr::Project
include Buildr::GPG
end