ale 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/Gemfile +2 -0
- data/ale.gemspec +23 -0
- data/bin/ale +6 -0
- data/lib/ale.rb +19 -0
- data/lib/ale/cli.rb +49 -0
- data/lib/ale/config.rb +16 -0
- data/lib/ale/dsl.rb +33 -0
- data/lib/ale/site.rb +35 -0
- data/lib/ale/version.rb +3 -0
- metadata +77 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/ale.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
$:.push File.expand_path('../lib', __FILE__)
|
2
|
+
require 'ale/version'
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = 'ale'
|
6
|
+
s.platform = Gem::Platform::RUBY
|
7
|
+
s.version = Ale::VERSION
|
8
|
+
|
9
|
+
s.summary = 'Uploads websites to S3.'
|
10
|
+
s.description = 'Takes a static site and uploads it to Amazon\'s S3.'
|
11
|
+
|
12
|
+
s.author = 'Jeremy Boles'
|
13
|
+
s.email = 'jeremy@jeremyboles.com'
|
14
|
+
s.homepage = 'https://github.com/jeremyboles/ale'
|
15
|
+
|
16
|
+
s.bindir = 'bin'
|
17
|
+
s.executables = ['ale']
|
18
|
+
s.files = `git ls-files`.split("\n")
|
19
|
+
s.require_paths = ['lib']
|
20
|
+
|
21
|
+
s.add_dependency('aws-sdk', '~> 1.1.3')
|
22
|
+
s.add_dependency('thor', '~> 0.14.6')
|
23
|
+
end
|
data/bin/ale
ADDED
data/lib/ale.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
module Ale
|
2
|
+
autoload :CLI, 'ale/cli'
|
3
|
+
autoload :Config, 'ale/config'
|
4
|
+
autoload :DSL, 'ale/dsl'
|
5
|
+
autoload :Site, 'ale/site'
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def config!
|
9
|
+
AWS.config({
|
10
|
+
:access_key_id => Config.amazon_access_key_id,
|
11
|
+
:secret_access_key => Config.amazon_secret_access_key
|
12
|
+
})
|
13
|
+
end
|
14
|
+
|
15
|
+
def directory
|
16
|
+
File.expand_path('./')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/ale/cli.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'aws-sdk'
|
2
|
+
require 'thor'
|
3
|
+
|
4
|
+
module Ale
|
5
|
+
class CLI < Thor
|
6
|
+
include Thor::Actions
|
7
|
+
|
8
|
+
default_task :upload
|
9
|
+
|
10
|
+
desc 'build', 'Builds the site'
|
11
|
+
def build
|
12
|
+
say("Detect: #{Site.detect}")
|
13
|
+
end
|
14
|
+
|
15
|
+
desc 'upload', 'Uploads the site to S3'
|
16
|
+
def upload
|
17
|
+
if File.exists?(upfile)
|
18
|
+
DSL.evaluate(upfile)
|
19
|
+
Ale.config!
|
20
|
+
bucket = AWS::S3.new.buckets['www.bloomapp.net']
|
21
|
+
|
22
|
+
say("Starting upload to #{bucket.name}")
|
23
|
+
directory = File.expand_path(Ale.directory)
|
24
|
+
Dir["#{directory}/**/*"].each do |file|
|
25
|
+
unless File.directory?(file)
|
26
|
+
key = file.gsub('./', '')
|
27
|
+
say("Uploading #{key}")
|
28
|
+
object = bucket.objects[key]
|
29
|
+
object.write(:file => file, :acl => :public_read)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
say('Your upload is complete!', :green)
|
33
|
+
|
34
|
+
if bucket.exists?
|
35
|
+
else
|
36
|
+
say("Bucket named #{bucket.name} does not exist", :red)
|
37
|
+
end
|
38
|
+
else
|
39
|
+
say('Could not locate Upfile', :red)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def upfile
|
46
|
+
upfile = File.join(Ale.directory, 'Upfile')
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/ale/config.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
module Ale
|
2
|
+
module Config
|
3
|
+
class << self
|
4
|
+
attr_accessor :bucket
|
5
|
+
attr_writer :amazon_access_key_id, :amazon_secret_access_key
|
6
|
+
|
7
|
+
def amazon_access_key_id
|
8
|
+
@amazon_access_key_id || ENV['AMAZON_ACCESS_KEY_ID']
|
9
|
+
end
|
10
|
+
|
11
|
+
def amazon_secret_access_key
|
12
|
+
@amazon_secret_access_key || ENV['AMAZON_SECRET_ACCESS_KEY']
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/ale/dsl.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
module Ale
|
2
|
+
class DSL
|
3
|
+
def self.evaluate(upfile)
|
4
|
+
builder = new
|
5
|
+
contents = File.open(upfile, 'rb') { |f| f.read }
|
6
|
+
builder.instance_eval(contents, upfile.to_s, 1)
|
7
|
+
end
|
8
|
+
|
9
|
+
def access_key(key)
|
10
|
+
Ale::Config.amazon_access_key_id = key
|
11
|
+
end
|
12
|
+
|
13
|
+
def bucket(bucket)
|
14
|
+
Ale::Config.bucket = bucket
|
15
|
+
end
|
16
|
+
|
17
|
+
def ignore(file)
|
18
|
+
puts file
|
19
|
+
end
|
20
|
+
|
21
|
+
def public(file)
|
22
|
+
puts file
|
23
|
+
end
|
24
|
+
|
25
|
+
def private(file)
|
26
|
+
puts file
|
27
|
+
end
|
28
|
+
|
29
|
+
def secret_key(key)
|
30
|
+
Ale::Config.amazon_secret_access_key = key
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/ale/site.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
module Ale
|
2
|
+
module Site
|
3
|
+
class << self
|
4
|
+
def detect
|
5
|
+
return Jekyll if jekyll?
|
6
|
+
return Middleman if middleman?
|
7
|
+
return Base
|
8
|
+
end
|
9
|
+
|
10
|
+
def jekyll?
|
11
|
+
File.exists?(File.join(Up.directory, '_config.yml'))
|
12
|
+
end
|
13
|
+
|
14
|
+
def middleman?
|
15
|
+
File.exists?(File.join(Up.directory, 'config.rb')) && File.directory?(File.join(Up.directory, 'source'))
|
16
|
+
end
|
17
|
+
|
18
|
+
class Base
|
19
|
+
attr_accessor :ignored_files, :private_files, :public_files
|
20
|
+
|
21
|
+
def initialize
|
22
|
+
ignored_files = []
|
23
|
+
private_files = ['Upfile']
|
24
|
+
public_files = []
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class Middleman < Base
|
29
|
+
end
|
30
|
+
|
31
|
+
class Jekyll < Base
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/ale/version.rb
ADDED
metadata
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ale
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Jeremy Boles
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-09-08 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: aws-sdk
|
16
|
+
requirement: &70257830900780 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.1.3
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70257830900780
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: thor
|
27
|
+
requirement: &70257830899900 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.14.6
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70257830899900
|
36
|
+
description: Takes a static site and uploads it to Amazon's S3.
|
37
|
+
email: jeremy@jeremyboles.com
|
38
|
+
executables:
|
39
|
+
- ale
|
40
|
+
extensions: []
|
41
|
+
extra_rdoc_files: []
|
42
|
+
files:
|
43
|
+
- .gitignore
|
44
|
+
- Gemfile
|
45
|
+
- ale.gemspec
|
46
|
+
- bin/ale
|
47
|
+
- lib/ale.rb
|
48
|
+
- lib/ale/cli.rb
|
49
|
+
- lib/ale/config.rb
|
50
|
+
- lib/ale/dsl.rb
|
51
|
+
- lib/ale/site.rb
|
52
|
+
- lib/ale/version.rb
|
53
|
+
homepage: https://github.com/jeremyboles/ale
|
54
|
+
licenses: []
|
55
|
+
post_install_message:
|
56
|
+
rdoc_options: []
|
57
|
+
require_paths:
|
58
|
+
- lib
|
59
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
61
|
+
requirements:
|
62
|
+
- - ! '>='
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
65
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
requirements: []
|
72
|
+
rubyforge_project:
|
73
|
+
rubygems_version: 1.8.10
|
74
|
+
signing_key:
|
75
|
+
specification_version: 3
|
76
|
+
summary: Uploads websites to S3.
|
77
|
+
test_files: []
|