class Opsup::CookbookUploader
Public Class Methods
create(s3:, config:)
click to toggle source
# File lib/opsup/cookbook_uploader.rb, line 19 def self.create(s3:, config:) new(s3: s3, config: config, logger: Opsup::Logger.instance) end
new(s3:, config:, logger:)
click to toggle source
# File lib/opsup/cookbook_uploader.rb, line 30 def initialize(s3:, config:, logger:) @s3 = T.let(s3, Aws::S3::Client) @config = T.let(config, Opsup::Config) @logger = T.let(logger, ::Logger) end
Public Instance Methods
build_and_upload(cookbook_url:, s3_object_config:)
click to toggle source
# File lib/opsup/cookbook_uploader.rb, line 37 def build_and_upload(cookbook_url:, s3_object_config:) Dir.mktmpdir do |work_dir| clone(work_dir, cookbook_url) package_path = build(work_dir) upload(package_path, s3_object_config) end end
Private Instance Methods
build(dir)
click to toggle source
# File lib/opsup/cookbook_uploader.rb, line 60 def build(dir) Dir.chdir(dir) do system('bundle') system('bundle exec berks package built.tar.gz') end "#{dir}/built.tar.gz" end
clone(dir, url)
click to toggle source
# File lib/opsup/cookbook_uploader.rb, line 55 def clone(dir, url) system("git clone --depth=1 #{url} #{dir}") end
system(cmd)
click to toggle source
Calls superclass method
# File lib/opsup/cookbook_uploader.rb, line 46 def system(cmd) if @config.dryrun @logger.info("(dryrun) #{cmd}") else super(cmd) end end
upload(package_path, object_config)
click to toggle source
# File lib/opsup/cookbook_uploader.rb, line 69 def upload(package_path, object_config) unless @config.dryrun @s3.put_object( bucket: object_config.bucket_name, body: File.open(package_path), key: object_config.key, ) end @logger.info("cookbook #{object_config.key} uploaded") end