middleman-deploy 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1 +1,2 @@
1
1
  Gemfile.lock
2
+ coverage
data/Gemfile CHANGED
@@ -14,4 +14,5 @@ group :test do
14
14
  gem "fivemat"
15
15
  gem "aruba", "~> 0.4.11"
16
16
  gem "rspec", "~> 2.7"
17
+ gem "simplecov"
17
18
  end
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- Middleman Delpoy -- Deploy a [middleman](http://middlemanapp.com/) built site over rsync or to github pages.
1
+ Middleman Delpoy -- Deploy a [middleman](http://middlemanapp.com/) built site over rsync or via git (e.g. gh-pages on github).
2
2
 
3
3
  [![Build Status](https://secure.travis-ci.org/tvaughan/middleman-deploy.png)](http://travis-ci.org/tvaughan/middleman-deploy)
4
4
 
@@ -6,8 +6,6 @@ Middleman Delpoy -- Deploy a [middleman](http://middlemanapp.com/) built site ov
6
6
 
7
7
  ## QUICK START
8
8
 
9
- If deploying through `rsync`, be sure it is installed.
10
-
11
9
  ### Step 1
12
10
 
13
11
  gem install middleman-deploy
@@ -29,6 +27,8 @@ Then run:
29
27
 
30
28
  ### Step 4a - Rsync setup
31
29
 
30
+ First be sure that `rsync` is installed.
31
+
32
32
  #### These settings are required.
33
33
 
34
34
  Edit `config.rb`, and add:
@@ -56,7 +56,22 @@ To remove orphaned files or directories on the remote host, add:
56
56
 
57
57
  Default is `false`.
58
58
 
59
- ### Step 4b - GitHub Pages setup
59
+ ### Step 4b - Git setup
60
+
61
+ First be sure that you have already placed your project under revision
62
+ control using git.
63
+
64
+ For example, for the default values of remote="master" and
65
+ branch="gh-pages", the output of `git branch -a` should look like:
66
+
67
+ gh-pages
68
+ * master
69
+ remotes/origin/HEAD -> origin/master
70
+ remotes/origin/gh-pages
71
+ remotes/origin/master
72
+
73
+ This shows that "gh-pages" exists in the remote and local repos. There
74
+ needs to be at least one commit in "gh-pages" with which to start.
60
75
 
61
76
  Edit `config.rb`, and add:
62
77
 
@@ -64,13 +79,26 @@ Edit `config.rb`, and add:
64
79
  deploy.method = :git
65
80
  end
66
81
 
67
- The git deploy method assumes your project is in a repository with
68
- github set up as `origin` and a working `gh-pages` branch already in place.
82
+ #### These settings are optional.
83
+
84
+ To use a particular remote, add:
85
+
86
+ deploy.remote = "some-other-remote-name"
87
+
88
+ Default is `origin`. Run `git remote -v` to see a list of possible
89
+ remotes.
90
+
91
+ To use a particular branch, add:
92
+
93
+ deploy.branch = "some-other-branch-name"
94
+
95
+ Default is `gh-pages`. Run `git branch -a` to see a list of possible
96
+ branches.
69
97
 
70
98
  ### Step 5
71
99
 
72
100
  middleman build [--clean]
73
- middleman deploy
101
+ middleman deploy [--clean]
74
102
 
75
103
  ### NOTES
76
104
 
@@ -1,4 +1,6 @@
1
+ require "simplecov"
2
+ SimpleCov.start
1
3
  PROJECT_ROOT_PATH = File.dirname(File.dirname(File.dirname(__FILE__)))
2
4
  require "middleman-core"
3
5
  require "middleman-core/step_definitions"
4
- require File.join(PROJECT_ROOT_PATH, 'lib', 'middleman-deploy')
6
+ require File.join(PROJECT_ROOT_PATH, 'lib', 'middleman-deploy')
@@ -1,8 +1,12 @@
1
1
  require "middleman-core/cli"
2
2
 
3
3
  require "middleman-deploy/extension"
4
+ require "middleman-deploy/pkg-info"
4
5
 
5
- require 'git'
6
+ require "git"
7
+
8
+ PACKAGE = "#{Middleman::Deploy::PACKAGE}"
9
+ VERSION = "#{Middleman::Deploy::VERSION}"
6
10
 
7
11
  module Middleman
8
12
  module Cli
@@ -20,7 +24,7 @@ module Middleman
20
24
  true
21
25
  end
22
26
 
23
- desc "deploy", "Copy build directory to a remote host"
27
+ desc "deploy", "Deploy build directory to a remote host via rsync or git"
24
28
  method_option "clean",
25
29
  :type => :boolean,
26
30
  :aliases => "-c",
@@ -37,20 +41,26 @@ module Middleman
37
41
  You should follow one of the two examples below to setup the deploy
38
42
  extension in config.rb.
39
43
 
40
- # To copy the build directory to a remote host:
44
+ # To deploy the build directory to a remote host via rsync:
41
45
  activate :deploy do |deploy|
42
46
  deploy.method = :rsync
43
47
  # host, user, and path *must* be set
44
48
  deploy.user = "tvaughan"
45
49
  deploy.host = "www.example.com"
46
50
  deploy.path = "/srv/www/site"
47
- # clean is optional (default is false).
51
+ # clean is optional (default is false)
48
52
  deploy.clean = true
49
53
  end
50
54
 
51
- # To push to a remote gh-pages branch on GitHub:
55
+ # To deploy to a remote branch via git (e.g. gh-pages on github):
52
56
  activate :deploy do |deploy|
53
57
  deploy.method = :git
58
+ # remote is optional (default is "origin")
59
+ # run `git remote -v` to see a list of possible remotes
60
+ deploy.remote = "some-other-remote-name"
61
+ # branch is optional (default is "gh-pages")
62
+ # run `git branch -a` to see a list of possible branches
63
+ deploy.branch = "some-other-branch-name"
54
64
  end
55
65
  EOF
56
66
  end
@@ -61,16 +71,16 @@ EOF
61
71
  begin
62
72
  options = ::Middleman::Application.server.inst.options
63
73
  rescue
64
- print_usage_and_die "You need to activate the deploy extension in config.rb"
74
+ print_usage_and_die "You need to activate the deploy extension in config.rb."
65
75
  end
66
76
 
67
77
  if (!options.method)
68
- print_usage_and_die "The deploy extension requires you to set a method"
78
+ print_usage_and_die "The deploy extension requires you to set a method."
69
79
  end
70
80
 
71
81
  if (options.method == :rsync)
72
82
  if (!options.host || !options.user || !options.path)
73
- print_usage_and_die "The rsync deploy method requires host, user, and path to be set"
83
+ print_usage_and_die "The rsync deploy method requires host, user, and path to be set."
74
84
  end
75
85
  end
76
86
 
@@ -83,6 +93,8 @@ EOF
83
93
  user = self.deploy_options.user
84
94
  path = self.deploy_options.path
85
95
 
96
+ puts "## Deploying via rsync to #{user}@#{host}:#{path} port=#{port}"
97
+
86
98
  command = "rsync -avze '" + "ssh -p #{port}" + "' build/ #{user}@#{host}:#{path}"
87
99
 
88
100
  if options.has_key? "clean"
@@ -99,27 +111,33 @@ EOF
99
111
  end
100
112
 
101
113
  def deploy_git
102
- puts "## Deploying to GitHub Pages"
114
+ remote = self.deploy_options.remote
115
+ branch = self.deploy_options.branch
116
+
117
+ puts "## Deploying via git to remote=\"#{remote}\" and branch=\"#{branch}\""
118
+
119
+ # ensure that the remote branch exists in ENV["MM_ROOT"]
120
+ orig = Git.open(ENV["MM_ROOT"])
121
+ # TODO: orig.branch(branch, "#{remote}/#{branch}")
122
+
103
123
  Dir.mktmpdir do |tmp|
104
- # clone ./ with branch gh-pages to tmp
105
- repo = Git.clone(ENV['MM_ROOT'], tmp)
106
- repo.checkout('origin/gh-pages', :new_branch => 'gh-pages')
124
+ # clone ENV["MM_ROOT"] to tmp (ENV["MM_ROOT"] is now "origin")
125
+ repo = Git.clone(ENV["MM_ROOT"], tmp)
126
+ repo.checkout("origin/#{branch}", :new_branch => branch)
107
127
 
108
128
  # copy ./build/* to tmp
109
- FileUtils.cp_r(Dir.glob(File.join(ENV['MM_ROOT'], 'build', '*')), tmp)
129
+ FileUtils.cp_r(Dir.glob(File.join(ENV["MM_ROOT"], "build", "*")), tmp)
110
130
 
111
131
  # git add and commit in tmp
112
132
  repo.add
113
- repo.commit("Automated commit at #{Time.now.utc}")
114
-
115
- # push from tmp to self
116
- repo.push('origin', 'gh-pages')
133
+ repo.commit("Automated commit at #{Time.now.utc} by #{PACKAGE} #{VERSION}")
117
134
 
118
- # push to github
119
- github_url = Git.open(ENV['MM_ROOT']).remote.url
120
- repo.add_remote('github', github_url)
121
- repo.push('github', 'gh-pages')
135
+ # push back into ENV["MM_ROOT"]
136
+ repo.push("origin", branch)
122
137
  end
138
+
139
+ orig.push(remote, branch)
140
+ orig.remote(remote).fetch
123
141
  end
124
142
 
125
143
  end
@@ -5,7 +5,7 @@ require "middleman-core"
5
5
  module Middleman
6
6
  module Deploy
7
7
 
8
- class Options < Struct.new(:whatisthis, :method, :host, :port, :user, :path, :clean); end
8
+ class Options < Struct.new(:whatisthis, :method, :host, :port, :user, :path, :clean, :remote, :branch); end
9
9
 
10
10
  class << self
11
11
 
@@ -19,6 +19,8 @@ module Middleman
19
19
 
20
20
  options.port ||= 22
21
21
  options.clean ||= false
22
+ options.remote ||= "origin"
23
+ options.branch ||= "gh-pages"
22
24
 
23
25
  @@options = options
24
26
 
@@ -1,6 +1,6 @@
1
1
  module Middleman
2
2
  module Deploy
3
3
  PACKAGE = "middleman-deploy"
4
- VERSION = "0.0.5"
4
+ VERSION = "0.0.6"
5
5
  end
6
6
  end
@@ -9,8 +9,8 @@ Gem::Specification.new do |s|
9
9
  s.authors = ["Tom Vaughan","Ben Cates"]
10
10
  s.email = ["thomas.david.vaughan@gmail.com"]
11
11
  s.homepage = "http://tvaughan.github.com/middleman-deploy/"
12
- s.summary = %q{Deploy a middleman built site over rsync or to github pages.}
13
- s.description = %q{Deploy a middleman built site over rsync or to github pages.}
12
+ s.summary = %q{Deploy a middleman built site over rsync or via git (e.g. gh-pages on github).}
13
+ s.description = %q{Deploy a middleman built site over rsync or via git (e.g. gh-pages on github).}
14
14
 
15
15
  s.files = `git ls-files`.split("\n")
16
16
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-09-04 00:00:00.000000000 Z
13
+ date: 2012-10-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: middleman-core
17
- requirement: &9045080 !ruby/object:Gem::Requirement
17
+ requirement: &21821760 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 3.0.0
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *9045080
25
+ version_requirements: *21821760
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: git
28
- requirement: &9057240 !ruby/object:Gem::Requirement
28
+ requirement: &21821260 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,8 +33,9 @@ dependencies:
33
33
  version: 1.2.0
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *9057240
37
- description: Deploy a middleman built site over rsync or to github pages.
36
+ version_requirements: *21821260
37
+ description: Deploy a middleman built site over rsync or via git (e.g. gh-pages on
38
+ github).
38
39
  email:
39
40
  - thomas.david.vaughan@gmail.com
40
41
  executables: []
@@ -76,6 +77,6 @@ rubyforge_project:
76
77
  rubygems_version: 1.8.11
77
78
  signing_key:
78
79
  specification_version: 3
79
- summary: Deploy a middleman built site over rsync or to github pages.
80
+ summary: Deploy a middleman built site over rsync or via git (e.g. gh-pages on github).
80
81
  test_files: []
81
82
  has_rdoc: