s3deploy 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -45,7 +45,7 @@ If you want to test-drive your configuration you can simulate a deploy
45
45
 
46
46
  ## Whats next?
47
47
 
48
- 1. Create method for creating a bucket from the settings in the configuration and settings it up as a website.
48
+ 1. Create method for creating a bucket from the settings in the configuration and setting it up as a website.
49
49
 
50
50
  ## Contributing
51
51
 
data/bin/s3deploy CHANGED
@@ -13,7 +13,14 @@ begin
13
13
  S3deploy.install_config(ARGV.include? "--default")
14
14
  elsif ARGV.first == "simulate"
15
15
  s3deploy = S3deploy.new
16
- s3deploy.deploy(true)
16
+ if ARGV[1] && ARGV[1] == "empty"
17
+ s3deploy.empty(true)
18
+ else
19
+ s3deploy.deploy(true)
20
+ end
21
+ elsif ARGV.first == "empty"
22
+ s3deploy = S3deploy.new
23
+ s3deploy.empty(false)
17
24
  else
18
25
  puts <<-eos
19
26
  S3deploy usage.
@@ -26,6 +33,10 @@ begin
26
33
 
27
34
  Folder configurations takes precedence over default configurations.
28
35
  I put my aws key, secret and region in default and the rest in folder.
36
+
37
+ s3deploy empty (deletes all files in bucket)
38
+ s3deploy simulate empty (simulates deletion of files)
39
+
29
40
  eos
30
41
  end
31
42
  rescue Exception => e
data/lib/.s3deploy.yml CHANGED
@@ -1,21 +1,23 @@
1
1
  ---
2
- aws_key: # your amazon key *required*
3
- aws_secret: # your amazon secret *required*
4
- aws_bucket: # the bucket you want to deploy to *required*
5
- #aws_region: # the region where your bucket is located
6
- # region names are: (blank for US Standard)
7
- # us-west-2 US West (Oregon)
8
- # us-west-1 US West (Northern California)
9
- # eu-west-1 EU (Ireland)
10
- # ap-southeast-1 Singapore ( Asia Pacific )
11
- # ap-northeast-1 Tokyo ( Asia Pacific )
12
- # sa-east-1 South America (Sao Paulo)
13
- #path: # the relative path to the files you want to deploy, leave it blank for current directory.
14
- #remote_path: # the path within the bucket to where you want to deploy, leave it blank for bucket root.
15
- #cache_regex: ^(images|javascripts|stylesheets)\/.+\.(png|jpg|js|css)(\.gz)?$
16
- # Adds headers for browser cache for files matching regex.
17
- #skip_regex: \.DS_Store$
18
- # Skips files that match this regex.
2
+ aws_key: # your amazon key *required*
3
+ aws_secret: # your amazon secret *required*
4
+ aws_bucket: # the bucket you want to deploy to *required*
5
+ #aws_region: # the region where your bucket is located
6
+ # region names are: (blank for US Standard)
7
+ # us-west-2 US West (Oregon)
8
+ # us-west-1 US West (Northern California)
9
+ # eu-west-1 EU (Ireland)
10
+ # ap-southeast-1 Singapore ( Asia Pacific )
11
+ # ap-northeast-1 Tokyo ( Asia Pacific )
12
+ # sa-east-1 South America (Sao Paulo)
13
+ #path: # the relative path to the files you want to deploy, leave it blank for current directory.
14
+ #remote_path: # the path within the bucket to where you want to deploy, leave it blank for bucket root.
15
+ #cache_regex: ^(images|javascripts|stylesheets)\/.+\.(png|jpg|js|css)(\.gz)?$
16
+ # Adds headers for browser cache for files matching regex.
17
+ #skip_regex: \.DS_Store$
18
+ # Skips files that match this regex.
19
+ #html_charset: utf-8
20
+ # Sets the charset header on html files
19
21
  extras:
20
22
  #- delete_old_files # deletes files that were in the bucket but not in the latest deploy
21
23
  #- replace_with_gzip # replaces files with gz versions if they exist
data/lib/s3deploy.rb CHANGED
@@ -27,12 +27,12 @@ class S3deploy
27
27
  :access_key_id => @options["aws_key"],
28
28
  :secret_access_key => @options["aws_secret"]
29
29
  )
30
- end
31
-
32
- def deploy(simulate = false)
33
30
 
34
31
  raise "No bucket selected." unless @options["aws_bucket"]
35
32
  @bucket = AWS::S3::Bucket.find @options["aws_bucket"]
33
+ end
34
+
35
+ def deploy(simulate = false)
36
36
 
37
37
  path = File.expand_path(@options["path"])
38
38
  raise "#{@options["path"]} is not a path." unless File.directory? path
@@ -54,9 +54,9 @@ class S3deploy
54
54
  full_remote_path = (@options["remote_path"] + "/" + file).gsub( /\/\//, "/").gsub( /(^\/)|(\/$)/, "")
55
55
 
56
56
  if @options["extras"].include?("replace_with_gzip") && has_gzip_version?(file, files)
57
- full_path.gsub!(/.gz$/, "")
58
- file.gsub!(/.gz$/, "")
59
- full_remote_path.gsub!(/.gz$/, "")
57
+ full_path.gsub!(/.gz$/i, "")
58
+ file.gsub!(/.gz$/i, "")
59
+ full_remote_path.gsub!(/.gz$/i, "")
60
60
  skip_files << file << file + ".gz"
61
61
  if is_gzip_smaller?(full_path)
62
62
  file = file + ".gz"
@@ -79,7 +79,7 @@ class S3deploy
79
79
  end
80
80
 
81
81
  def has_gzip_version?(file, files)
82
- (file !~ /.+.gz$/ && files.include?("#{file}.gz")) || ( file =~ /.+.gz$/ && files.include?( file.gsub(/.gz$/, "") ) )
82
+ (file !~ /.+.gz$/i && files.include?("#{file}.gz")) || ( file =~ /.+.gz$/i && files.include?( file.gsub(/.gz$/i, "") ) )
83
83
  end
84
84
 
85
85
  def is_gzip_smaller?(full_path)
@@ -95,6 +95,14 @@ class S3deploy
95
95
  end
96
96
  end
97
97
 
98
+ def empty(simulate)
99
+ puts "Emptying #{@options["aws_bucket"]} #{"(Simulating)" if simulate}"
100
+ @bucket.each do |o|
101
+ AWS::S3::S3Object.delete(o.key, @options["aws_bucket"]) unless simulate
102
+ puts "Deleted\t\t#{o.key}"
103
+ end
104
+ end
105
+
98
106
  def s3_file_exists?(local, remote)
99
107
  md5 = Digest::MD5.hexdigest(open(local).read)
100
108
  !@bucket.objects.select{|o| o.key == remote && o.etag == md5 }.empty?
@@ -107,9 +115,19 @@ class S3deploy
107
115
  options[:"Cache-Control"] = "public, max-age=31557600"
108
116
  end
109
117
 
110
- options[:"Content-Encoding"] = "gzip" if local =~ /.+.gz$/
118
+ options[:content_type] = "text/html; charset=#{@options["html_charset"]}" if @options["html_charset"] && remote =~ /.+\.(html|htm)(\.gz)?$/i
119
+ options[:"Content-Encoding"] = "gzip" if local =~ /.+.gz$/i
120
+
121
+ extra_info = []
122
+ extra_info << "cache-headers" if options[:"Cache-Control"]
123
+ extra_info << "gzip" if options[:"Content-Encoding"]
124
+ extra_info << "charset=#{@options["html_charset"]}" if options[:content_type]
125
+
111
126
  AWS::S3::S3Object.store(remote, open(local), @options["aws_bucket"], options) unless simulate
112
- puts "Uploaded\t#{remote}"
127
+
128
+ message = "Uploaded\t#{remote}"
129
+ message += " (#{extra_info.join(", ")})" unless extra_info.empty?
130
+ puts message
113
131
  end
114
132
 
115
133
  def self.install_config(default = false)
@@ -1,3 +1,3 @@
1
1
  class S3deploy
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: s3deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-24 00:00:00.000000000 Z
12
+ date: 2012-08-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: aws-s3