ghpages_deploy 1.2.0 → 1.3.0.pre.beta1

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: 0436432a44b28101714bc20cac8812fe3fd00563
4
- data.tar.gz: 56b3aed8727505be7741038697f500732779dbe7
3
+ metadata.gz: a2f243b6938f96d439dd81b4c1b5905984b77172
4
+ data.tar.gz: 17d7063cdc3dbd38bc96c75220f27636a7df6a5d
5
5
  SHA512:
6
- metadata.gz: b5affce950ae25c6822e9f16dfeabbd3fba7f1a36bd71893bb5d970594cf1c37eef1d28d1a1c2abd54f666d77875d28ef1ed59a0e689cea268334f91af3481fa
7
- data.tar.gz: 3f975339ba95fce47ce450f9cd66852a3e5a27886d58a5fb88cffe2dff27c0b653aef21f91bcc2ef4880aa396fd0fcbe72aa625caf2453fb6a49d4a94201a112
6
+ metadata.gz: 6231675491a4079cc4487d60681efcceb237963d1b01dcaf072560b29d7953814a016ab055b078d37f5d5446c79173018f38a1e9b081b00927257da9d14231ec
7
+ data.tar.gz: 416d44a2ea9a809fab181a1e2c7b29b365dd7e28bc321421f286ff85314ac2dd9076c296bb43240dd2346e0fec03f9c0c4cea4d5e8b09645871bb81be3b99d1a
@@ -20,7 +20,5 @@ Gem::Specification.new do |spec|
20
20
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.add_dependency 'bundler', '>= 1.11.2'
24
-
25
23
  spec.add_dependency 'git'
26
24
  end
@@ -6,10 +6,11 @@ require 'ghpages_deploy/git_manager'
6
6
 
7
7
  module GithubPages
8
8
  class Deployer
9
- def initialize(git, source, destinations)
9
+ def initialize(git, source, destinations, handler)
10
10
  @git = git
11
11
  @source = source
12
12
  @destinations = destinations
13
+ @handler = handler
13
14
  end
14
15
 
15
16
  def deploy
@@ -36,6 +37,7 @@ module GithubPages
36
37
  FileUtils.cp_r("#{@source}/.", dest)
37
38
 
38
39
  stage_destination_files(dest)
40
+ @git.stage @handler.on_deploy if @handler
39
41
 
40
42
  # check if any changes were made to the destination
41
43
  !@git.staged_modifications(dest).empty?
@@ -32,7 +32,7 @@ module GithubPages
32
32
  end
33
33
 
34
34
  def stage(files)
35
- @git.add files
35
+ @git.add files unless files.empty?
36
36
  end
37
37
 
38
38
  def staged_modifications(dir)
@@ -80,21 +80,22 @@ module GithubPages
80
80
  @git.config('user.email', ENV['GIT_EMAIL']) if ENV['GIT_EMAIL']
81
81
  end
82
82
 
83
+ def remove_staged
84
+ to_remove = staged_modifications('.')
85
+ @git.remove(to_remove) unless to_remove.empty?
86
+ end
87
+
83
88
  def setup_branch
84
89
  if @git.is_local_branch?(branch)
85
90
  @git.branch(branch).checkout
91
+ remove_staged
86
92
  elsif @git.is_remote_branch?(branch)
87
93
  git "checkout #{remote}/#{branch} -b #{branch}"
94
+ remove_staged
95
+ @git.pull(remote, branch)
88
96
  else
89
97
  git "checkout --orphan #{branch}"
90
- end
91
-
92
- # remove files already staged by checkout
93
- to_remove = staged_modifications('.')
94
- @git.remove(to_remove) unless to_remove.empty?
95
-
96
- if @git.is_remote_branch?(branch)
97
- @git.pull(remote, branch)
98
+ remove_staged
98
99
  end
99
100
  end
100
101
 
@@ -0,0 +1,26 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
4
+ module GithubPages
5
+ class Handler
6
+ def self.def_handler(sym)
7
+ define_method(:"on_#{sym}") do |*args, &block|
8
+ handlers[method].each { |handle| handle.call(*args, &block) }
9
+ nil
10
+ end
11
+
12
+ define_method(:"handle_#{sym}") do |&block|
13
+ handlers[method] << block
14
+ nil
15
+ end
16
+ end
17
+
18
+ def_handler :deploy
19
+
20
+ private
21
+
22
+ def handlers
23
+ @handlers ||= Hash.new { |h, k| h[k] = [] }
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
4
+ require 'ghpages_deploy/rake/task'
5
+
6
+ module GithubPages
7
+ module JekyllRakeExt
8
+ def init_jekyll
9
+ @handler.handle_deploy do
10
+ FileUtils.touch('.nojekyll') unless File.exist?('.nojekyll')
11
+ ['.nojekyll']
12
+ end
13
+ end
14
+ end
15
+
16
+ DeployTask.include JekyllRakeExt
17
+ end
@@ -0,0 +1,64 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
4
+ require 'json'
5
+
6
+ require 'ghpages_deploy/rake/task'
7
+
8
+ module GithubPages
9
+ module JsonRakeExt
10
+ # designed for a documentation sitemap
11
+ # best used with a format similar to the following:
12
+ #
13
+ # tag/
14
+ # v1.0.0/
15
+ # _index.html
16
+ # ...
17
+ # v1.1.0/
18
+ # index.html
19
+ # _index.html
20
+ # ...
21
+ # ...
22
+ # branch/
23
+ # master/
24
+ # index.html
25
+ # ...
26
+ # ...
27
+ #
28
+
29
+ def self.update_sitemap
30
+ File.open('sitemap.json', 'w+') do |file|
31
+ file.write directory_sitemap('.').to_json
32
+ end
33
+ end
34
+
35
+ def self.directory_sitemap(dir)
36
+ puts dir
37
+ index =
38
+ %w(index.html _index.html).find do |html|
39
+ File.exist?(File.join(dir, html))
40
+ end
41
+
42
+ return {File.basename(dir) => index} if index
43
+
44
+ Hash[Dir.foreach(dir).flat_map do |file|
45
+ file_dir = File.join(dir, file)
46
+ next [] if %w(.git . ..).include?(file)
47
+ next [] unless Dir.exist?(file_dir)
48
+
49
+ map = directory_sitemap(file_dir)
50
+ next [] if map.empty?
51
+ [file, map]
52
+ end]
53
+ end
54
+
55
+ def json_sitemap
56
+ @handler.handle_deploy do
57
+ JsonRakeExt.update_sitemap
58
+ ['sitemap.json']
59
+ end
60
+ end
61
+ end
62
+
63
+ DeployTask.include JsonRakeExt
64
+ end
@@ -0,0 +1,44 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
4
+ require 'rake'
5
+ require 'rake/tasklib'
6
+
7
+ require 'ghpages_deploy/deployer'
8
+ require 'ghpages_deploy/git_manager'
9
+
10
+ module GithubPages
11
+ class DeployTask < ::Rake::TaskLib
12
+ def initialize(*args)
13
+ @args = args
14
+ @destinations = []
15
+
16
+ yield self if block_given?
17
+
18
+ @source ||= '.'
19
+ @remote ||= 'origin'
20
+
21
+ @destinations << '.' if @destinations.empty?
22
+
23
+ @handler = Handler.new
24
+ end
25
+
26
+ attr_accessor :remote, :source
27
+ attr_reader :handler
28
+
29
+ def register(destination)
30
+ @destinations << destination
31
+ end
32
+
33
+ private
34
+
35
+ def define
36
+ task(*@args) do
37
+ GitManager.open(@remote) do |git|
38
+ deployer = Deployer.new(git, @source, @destinations)
39
+ deployer.deploy(@handler)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -1,43 +1,7 @@
1
1
  # encoding: utf-8
2
2
  # Copyright (c) 2016 Nathan Currier
3
3
 
4
- require 'rake'
5
- require 'rake/tasklib'
4
+ require 'ghpages_deploy/rake/task'
6
5
 
7
- require 'ghpages_deploy/deployer'
8
- require 'ghpages_deploy/git_manager'
9
-
10
- module GithubPages
11
- class DeployTask < ::Rake::TaskLib
12
- def initialize(*args)
13
- @args = args
14
- @destinations = []
15
-
16
- yield self if block_given?
17
-
18
- @source ||= '.'
19
- @remote ||= 'origin'
20
-
21
- @destinations << '.' if @destinations.empty?
22
-
23
- define
24
- end
25
-
26
- attr_accessor :remote, :source
27
-
28
- def register(destination)
29
- @destinations << destination
30
- end
31
-
32
- private
33
-
34
- def define
35
- task(*@args) do
36
- GitManager.open(@remote) do |git|
37
- deployer = Deployer.new(git, @source, @destinations)
38
- deployer.deploy
39
- end
40
- end
41
- end
42
- end
43
- end
6
+ require 'ghpages_deploy/rake/json'
7
+ require 'ghpages_deploy/rake/jekyll'
@@ -2,5 +2,5 @@
2
2
  # Copyright (c) 2016 Nathan Currier
3
3
 
4
4
  module GithubPages
5
- VERSION = '1.2.0'.freeze
5
+ VERSION = '1.3.0-beta1'.freeze
6
6
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ghpages_deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0.pre.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Currier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-29 00:00:00.000000000 Z
11
+ date: 2016-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- type: :runtime
15
- name: bundler
16
- prerelease: false
17
- requirement: !ruby/object:Gem::Requirement
18
- requirements:
19
- - - ">="
20
- - !ruby/object:Gem::Version
21
- version: 1.11.2
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: 1.11.2
27
13
  - !ruby/object:Gem::Dependency
28
14
  type: :runtime
29
15
  name: git
@@ -53,6 +39,10 @@ files:
53
39
  - lib/ghpages_deploy/compress.rb
54
40
  - lib/ghpages_deploy/deployer.rb
55
41
  - lib/ghpages_deploy/git_manager.rb
42
+ - lib/ghpages_deploy/handler.rb
43
+ - lib/ghpages_deploy/rake/jekyll.rb
44
+ - lib/ghpages_deploy/rake/json.rb
45
+ - lib/ghpages_deploy/rake/task.rb
56
46
  - lib/ghpages_deploy/rake_task.rb
57
47
  - lib/ghpages_deploy/util.rb
58
48
  - lib/ghpages_deploy/version.rb
@@ -71,9 +61,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
71
61
  version: '0'
72
62
  required_rubygems_version: !ruby/object:Gem::Requirement
73
63
  requirements:
74
- - - ">="
64
+ - - ">"
75
65
  - !ruby/object:Gem::Version
76
- version: '0'
66
+ version: 1.3.1
77
67
  requirements: []
78
68
  rubyforge_project:
79
69
  rubygems_version: 2.4.8