middleman-rackspace 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f57344325ea2d681868c5cc1fbcb7e292507a2c8
4
- data.tar.gz: 226e861fdfe46ebacc13206789a37529a6103a6c
3
+ metadata.gz: 9d2b3ba6bea685835c35fd38eb6abe198e0d9e96
4
+ data.tar.gz: 603e40a365c56cd9ea78fdca7dcf2667ba1c4322
5
5
  SHA512:
6
- metadata.gz: d14cb7e8a21197b4be875ccd135c3ccf0757e503942ef6eeba854feca493f271079f6a611c72da9a943a6bb428c17a8a3955f75d8ca605c56487f0b290dcb6d4
7
- data.tar.gz: b9b8a4db17f8bc1123439b92665c911bd34f2b99c4be025da43b3e940149b50d47f2d93076b2601d292367987413f420f53072950dda23cedfd60cdcd6d1a149
6
+ metadata.gz: 5ae9639c5361faac4caa49dd7fd7d701cf9aada4cbf62907f5c618f19788c2910a75f3595b1ccbf0b08b7714c570920918168f4a18c0deecc830fa02a1b6c222
7
+ data.tar.gz: 1f7acb829b61b80a0ad3ebb4ebe70a87f521169cc10097690b5f1ed8c6b862a1c1d86b285b6dffa91eb82d2f2d5e40c879282829827e83d4f00d3bd7f3bf2084
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.0 (2015-11-10)
4
+
5
+ * Add support for 'production' and 'staging' containers.
6
+
3
7
  ## 0.1.0 (2015-11-02)
4
8
 
5
9
  * Initial release
data/README.md CHANGED
@@ -10,13 +10,19 @@ Add the following to the `Gemfile` for you Middleman project and perform a `bund
10
10
  gem 'middleman-rackspace'
11
11
  ```
12
12
 
13
- After configuration, you can deploy to the configured region and container with:
13
+ After configuration, you can deploy to the production container with:
14
14
 
15
15
  ```
16
- $ middleman rackspace
16
+ $ middleman rackspace production
17
17
  ```
18
18
 
19
- An archive `build_TIMESTAMP.tar.gz` is created for your current build and pushed to Rackspace. A new container will automatically be configured if needed. If there is an existing container with the same name, **data will be overwritten**.
19
+ To deploy to the staging container, use:
20
+
21
+ ```
22
+ $ middleman rackspace staging
23
+ ```
24
+
25
+ An archive `build_ENVIRONMENT_TIMESTAMP.tar.gz` is created for your current build and pushed to Rackspace. A new container will automatically be configured on the specified region. If there is an existing container with the same name, **data will be overwritten**.
20
26
 
21
27
  # Configuration
22
28
 
@@ -25,11 +31,12 @@ Activate and configure middleman-rackspace by adding an `activate :rackspace` bl
25
31
  ```ruby
26
32
  # Example configuration
27
33
  activate :rackspace do |config|
28
- config.rackspace_username = 'username'
29
- config.rackspace_api_key = 'a99c75008c3f4ccd31ce67a0674db356'
30
- config.rackspace_region = :syd
31
- config.container_name = 'example-site'
32
- config.build_before = true
34
+ config.rackspace_username = 'username'
35
+ config.rackspace_api_key = 'a99c75008c3f4ccd31ce67a0674db356'
36
+ config.rackspace_region = :syd
37
+ config.container_staging = 'example-container-staging'
38
+ config.container_production = 'example-container'
39
+ config.build_before = true
33
40
  end
34
41
  ```
35
42
 
@@ -39,18 +46,20 @@ Here is a list of all configuration options available with their default values.
39
46
  # Default configuration
40
47
  activate :rackspace do |config|
41
48
  # Rackspace credentials
42
- config.rackspace_username = ENV['RACKSPACE_USERNAME']
43
- config.rackspace_api_key = ENV['RACKSPACE_API_KEY']
49
+ config.rackspace_username = ENV['RACKSPACE_USERNAME']
50
+ config.rackspace_api_key = ENV['RACKSPACE_API_KEY']
44
51
  # The Rackspace region to deploy to
45
- config.rackspace_region = :dfw
46
- # The target container on Rackspace
47
- config.container_name = nil
52
+ config.rackspace_region = :dfw
53
+ # The target container on Rackspace for staging
54
+ config.container_staging = nil
55
+ # The target container on Rackspace for production
56
+ config.container_production = nil
48
57
  # Root page filename
49
- config.index_file = 'index.html'
58
+ config.index_file = 'index.html'
50
59
  # Error page filename prefix, translates to 401.html and 404.html
51
- config.error_file_prefix = '.html'
60
+ config.error_file_prefix = '.html'
52
61
  # Run `middleman build` before the deploy step
53
- config.build_before = false
62
+ config.build_before = false
54
63
  end
55
64
  ```
56
65
 
@@ -61,5 +70,5 @@ For a list of available regions see [http://www.rackspace.com/knowledge_center/a
61
70
  * On deploy, delete files on the server that have been removed from the build.
62
71
  * Invalidate cache after deploy.
63
72
  * Integrate with git to deploy from a branch.
64
- * Improve CLI to deploy from a pre-built `build_TIMESTAMP.tar.gz`.
73
+ * Improve CLI to deploy from a pre-built `build_ENVIRONMENT_TIMESTAMP.tar.gz`.
65
74
  * Improve error handling.
@@ -2,13 +2,15 @@ require 'middleman-core/cli'
2
2
 
3
3
  module Middleman
4
4
  module Cli
5
- class Rackspace < Thor::Group
5
+ class Rackspace < Thor
6
6
  include Thor::Actions
7
7
 
8
8
  check_unknown_options!
9
9
 
10
10
  namespace :rackspace
11
11
 
12
+ desc 'rackspace ENVIRONMENT [options]', 'Deploy to Rackspace container for ENVIRONMENT'
13
+
12
14
  class_option :build_before,
13
15
  aliases: '-b',
14
16
  type: :boolean,
@@ -20,7 +22,11 @@ module Middleman
20
22
  true
21
23
  end
22
24
 
23
- def rackspace
25
+ def rackspace(environment)
26
+ unless environment == 'staging' || environment == 'production'
27
+ raise Thor::Error, "Unknown environment '#{environment}'. Use 'staging' or 'production'."
28
+ end
29
+
24
30
  # Instantiate Middleman and load config
25
31
  app = Middleman::Application.server.inst
26
32
 
@@ -31,11 +37,8 @@ module Middleman
31
37
  end
32
38
 
33
39
  # Deploy the built website
34
- Middleman::Rackspace.deploy(app)
40
+ Middleman::Rackspace.deploy(app, environment)
35
41
  end
36
42
  end
37
-
38
- # Register 'rackspace' as a Middleman CLI extention
39
- Base.register(Middleman::Cli::Rackspace, 'rackspace', 'rackspace [options]', Middleman::Rackspace::TAGLINE)
40
43
  end
41
44
  end
@@ -5,15 +5,23 @@ module Middleman
5
5
  module Rackspace
6
6
  module_function
7
7
 
8
- def deploy(app)
8
+ def deploy(app, environment)
9
9
  config = app.extensions[:rackspace].options
10
- container_name = config.container_name
11
10
 
12
- # build_TIMESTAMP.tar.gz
13
- archive_name = "build_#{Time.now.strftime('%Y-%m-%d_%H-%M-%S')}.tar.gz"
11
+ container_name = case environment
12
+ when 'staging'
13
+ config.container_staging
14
+ when 'production'
15
+ config.container_production
16
+ end
17
+
18
+ puts "Deploying for #{environment} to '#{container_name}'"
19
+
20
+ # build_ENVIRONMENT_TIMESTAMP.tar.gz
21
+ archive_name = "build_#{environment}_#{Time.now.strftime('%Y-%m-%d_%H-%M-%S')}.tar.gz"
14
22
  puts "Creating archive: #{archive_name}"
15
23
 
16
- # Compress /build directory into build_TIMESTAMP.tar.gz
24
+ # Compress /build directory into build_ENVIRONMENT_TIMESTAMP.tar.gz
17
25
  system("cd ./build && tar -zcvf ../#{archive_name} .")
18
26
 
19
27
  # Configure Fog
@@ -6,7 +6,8 @@ module Middleman
6
6
  option :rackspace_username, ENV['RACKSPACE_USERNAME'], 'Rackspace username'
7
7
  option :rackspace_api_key, ENV['RACKSPACE_API_KEY'], 'Rackspace API key'
8
8
  option :rackspace_region, :dfw, 'Rackspace region'
9
- option :container_name, nil, 'The target container on Rackspace'
9
+ option :container_staging, nil, 'The target container on Rackspace for staging'
10
+ option :container_production, nil, 'The target container on Rackspace for production'
10
11
  option :index_file, 'index.html', 'Index filename configuration'
11
12
  option :error_file_prefix, '.html', 'Error filename configuration'
12
13
  option :build_before, false, 'Run `middleman build` before the deploy step'
@@ -1,7 +1,7 @@
1
1
  module Middleman
2
2
  module Rackspace
3
3
  PACKAGE = 'middleman-rackspace'
4
- VERSION = '0.1.0'
4
+ VERSION = '0.2.0'
5
5
  TAGLINE = 'Deploy your Middleman site to Rackspace Cloud Files'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-rackspace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cristofaro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-02 00:00:00.000000000 Z
11
+ date: 2015-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: middleman-core