Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rearranging Uploader so it has a simpler UI
- Loading branch information
Jacques Crocker
committed
Oct 4, 2010
1 parent
223123e
commit 6d9be1c
Showing
4 changed files
with
65 additions
and
80 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
#!/usr/bin/env ruby | ||
require 'jammit-s3' | ||
|
||
Jammit::S3CommandLine.new | ||
Jammit::S3CommandLine.new |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,9 @@ | ||
require 'jammit/command_line' | ||
require 'jammit/s3_command_line' | ||
require 'jammit/s3_uploader' | ||
require 'jammit/s3_command_line' | ||
|
||
module Jammit | ||
def self.upload_to_s3!(options = {}) | ||
S3Uploader.new(options).upload | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,92 +1,41 @@ | ||
require 'jammit/command_line' | ||
|
||
require 's3' | ||
module Jammit | ||
class S3CommandLine < CommandLine | ||
def initialize | ||
super | ||
upload_assets_to_s3 | ||
end | ||
ensure_s3_configuration | ||
|
||
def upload_assets_to_s3 | ||
verify_s3_configuration | ||
ensure_bucket_exists | ||
upload_assets | ||
begin | ||
Jammit.upload_to_s3! | ||
rescue S3::Error::BucketAlreadyExists => e | ||
# tell them to pick another name | ||
puts e.message | ||
exit(1) | ||
end | ||
end | ||
|
||
protected | ||
def verify_s3_configuration | ||
unless get_bucket_name.is_a?(String) && get_bucket_name.length > 0 | ||
def ensure_s3_configuration | ||
bucket_name = Jammit.configuration[:s3_bucket] | ||
unless bucket_name.is_a?(String) && bucket_name.length > 0 | ||
puts "\nA valid s3_bucket name is required." | ||
puts "Please add one to your Jammit config (config/assets.yml):\n\n" | ||
puts "s3_bucket: my-bucket-name\n\n" | ||
exit | ||
exit(1) | ||
end | ||
unless get_access_key_id.is_a?(String) && get_access_key_id.length > 0 | ||
puts "access_key_id: '#{get_access_key_id}' is not valid" | ||
exit | ||
end | ||
unless get_secret_access_key.is_a?(String) && get_secret_access_key.length > 0 | ||
puts "secret_access_key: '#{get_secret_access_key}' is not valid" | ||
exit | ||
end | ||
end | ||
|
||
def upload_assets | ||
S3Uploader.new(s3_bucket).upload | ||
end | ||
|
||
def s3_service | ||
@s3_service ||= S3::Service.new(:access_key_id => get_access_key_id, :secret_access_key => get_secret_access_key) | ||
end | ||
|
||
def s3_bucket | ||
@s3_bucket ||= ensure_bucket_exists | ||
end | ||
|
||
def ensure_bucket_exists | ||
bucket_name = get_bucket_name | ||
|
||
# find or create the bucket | ||
bucket = begin | ||
s3_service.buckets.find(bucket_name) | ||
rescue S3::Error::NoSuchBucket | ||
puts "Bucket not found. Creating '#{bucket_name}'..." | ||
bucket = s3_service.buckets.build(bucket_name) | ||
|
||
begin | ||
bucket.save(get_bucket_location) | ||
rescue S3::Error::BucketAlreadyExists => e | ||
# tell them to pick another name | ||
puts e.message | ||
exit | ||
end | ||
access_key_id = Jammit.configuration[:s3_access_key_id] | ||
unless access_key_id.is_a?(String) && access_key_id.length > 0 | ||
puts "access_key_id: '#{access_key_id}' is not valid" | ||
exit(1) | ||
end | ||
bucket | ||
end | ||
|
||
def get_bucket_name | ||
# TODO: use highline if needed | ||
Jammit.configuration[:s3_bucket] | ||
end | ||
|
||
def get_access_key_id | ||
# TODO: use highline if needed | ||
Jammit.configuration[:s3_access_key_id] | ||
end | ||
|
||
def get_secret_access_key | ||
# TODO: use highline if needed | ||
Jammit.configuration[:s3_secret_access_key] | ||
end | ||
|
||
def get_bucket_location | ||
location = Jammit.configuration[:s3_bucket_location] | ||
if location == "eu" | ||
:eu | ||
else | ||
:us | ||
secret_access_key = Jammit.configuration[:s3_secret_access_key] | ||
unless secret_access_key.is_a?(String) && secret_access_key.length > 0 | ||
puts "secret_access_key: '#{secret_access_key}' is not valid" | ||
exit(1) | ||
end | ||
end | ||
|
||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters