ghpages_deploy 1.4.2 → 2.0.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: 4e256ce54aa9b6f69a8f1163048dc3a6dd841c23
4
- data.tar.gz: b965eb7cf16e65ca7928124dbca1401e11123f41
3
+ metadata.gz: 74af19bd981f4e4bd25b8892fac9aa98b8dd6615
4
+ data.tar.gz: 5780df2c62671a09c6b2038a6199a3f3e6bc53dc
5
5
  SHA512:
6
- metadata.gz: fa2bf185c2cb72ea7b30c8b8a08136000bad71fd65d9cdd0f9c8ed57fbf123be376490395fbc9ae60d2b63f6826b8a088c6b8bb85fb282fabf8502819efb2052
7
- data.tar.gz: 7008712e2a72d18622ddd78fcdae18b951c95478ed992c7bb0d2ea0d37afda63488ffa0dfdd22824923a795f1479fe8b218efeabbc0e0db972494485f9116f5f
6
+ metadata.gz: ba1f2b3445e81f42aa5cc050544a5178bec9213c98fe96a4e6d30efb0e48ef19c636c88cbefa1f8987a0ce3efb636b355d5bd91c8e2d038c219c5a9a536f9719
7
+ data.tar.gz: e6b1c0a838548c8c9215d4545d4523c5c067d5b9993f42e2610ddb285778f645a54e6119a3329716ec0bd5b3d26adbb967bb3b0bf06db1d898f3bc5fae0fa29f
data/.gitignore CHANGED
@@ -1,4 +1,5 @@
1
- Gemfile*.lock
1
+ Gemfile.lock
2
+
2
3
  /.bundle/
3
4
  /vendor/bundle/
4
5
 
data/Gemfile CHANGED
@@ -4,9 +4,3 @@
4
4
  source 'https://rubygems.org'
5
5
 
6
6
  gemspec
7
-
8
- group :dev do
9
- gem 'rake', require: false
10
-
11
- gem 'rubocop', '>= 0.36.0', require: false
12
- end
data/Rakefile CHANGED
@@ -1,17 +1,8 @@
1
1
  # encoding: utf-8
2
2
  # Copyright (c) 2016 Nathan Currier
3
3
 
4
- require 'rubygems'
5
4
  require 'bundler'
6
5
 
7
6
  Bundler.setup(:default, :development)
8
7
 
9
- require 'bundler/gem_tasks'
10
-
11
- require 'rubocop/rake_task'
12
- RuboCop::RakeTask.new(:rubocop) do |t|
13
- t.fail_on_error = false
14
- end
15
- task('rubocop:auto_correct').clear
16
-
17
- task default: %i(rubocop)
8
+ require 'rideliner/tasks'
@@ -21,4 +21,6 @@ Gem::Specification.new do |spec|
21
21
  spec.require_paths = ['lib']
22
22
 
23
23
  spec.add_dependency 'git'
24
+
25
+ spec.add_development_dependency 'rideliner'
24
26
  end
@@ -6,22 +6,24 @@ require 'ghpages_deploy/git_manager'
6
6
 
7
7
  module GithubPages
8
8
  class Deployer
9
- def initialize(git, source, destinations, handler)
9
+ def initialize(git, source, destination, message, handler)
10
10
  @git = git
11
11
  @source = source
12
- @destinations = destinations
12
+ @destination = destination
13
13
  @handler = handler
14
+ @message = message || "Deployed to '#{@destination}'."
14
15
  end
15
16
 
16
17
  def deploy
17
- @destinations.keep_if { |dest| deploy_site_to(dest) }
18
+ deploy_site_to(@destination)
18
19
 
19
20
  @git.stage @handler.on_deploy.flatten.uniq if @handler
20
21
 
21
22
  if @git.staged_modifications('.').empty?
22
23
  $stderr.puts 'No changes detected, not commiting.'
23
24
  else
24
- @git.commit_and_push message
25
+ @git.commit_and_push @message
26
+ $stdout.puts "Commit made with message: #{@message}"
25
27
  end
26
28
  end
27
29
 
@@ -54,9 +56,6 @@ module GithubPages
54
56
  FileUtils.cp_r("#{@source}/.", dest)
55
57
 
56
58
  stage_destination_files(dest)
57
-
58
- # check if any changes were made to the destination
59
- !@git.staged_modifications(dest).empty?
60
59
  end
61
60
 
62
61
  def stage_destination_files(dest)
@@ -70,21 +69,5 @@ module GithubPages
70
69
 
71
70
  @git.stage files
72
71
  end
73
-
74
- def message
75
- return 'Handler updates' if @destinations.empty?
76
-
77
- # English join
78
- msg =
79
- if @destinations.length == 1
80
- @destinations.first
81
- elsif @destinations.length == 2
82
- @destinations.join ' and '
83
- else
84
- @destinations[0..-2].join(', ') + ", and #{@destinations.last}"
85
- end
86
-
87
- "Deployed to #{msg}."
88
- end
89
72
  end
90
73
  end
@@ -6,22 +6,25 @@ require 'logger'
6
6
 
7
7
  module GithubPages
8
8
  class GitManager
9
- def initialize(remote, preserved_dir)
9
+ def initialize(remote, preserved_dir, repo = nil, branch = nil)
10
10
  @preserved = preserved_dir
11
11
  @remote = remote
12
- @repo = `git config remote.#{remote}.url`.gsub(/^git:/, 'https:')
13
- @branch =
14
- if @repo =~ /\.github\.(?:com|io)\.git$/
15
- 'master'
16
- else
17
- 'gh-pages'
18
- end
12
+ @repo = repo || `git config remote.#{remote}.url`.gsub(/^git:/, 'https:')
13
+ @branch = branch || default_branch
19
14
 
20
15
  @git = Git.open(Dir.pwd)
21
16
 
22
17
  setup
23
18
  end
24
19
 
20
+ def default_branch
21
+ if @repo =~ /\.github\.(?:com|io)\.git$/
22
+ 'master'
23
+ else
24
+ 'gh-pages'
25
+ end
26
+ end
27
+
25
28
  def self.open(*args, &block)
26
29
  git = new(*args, &block)
27
30
  yield git
@@ -76,8 +79,10 @@ module GithubPages
76
79
 
77
80
  def setup_repo
78
81
  @git.add_remote(remote, repo) unless @git.remote(remote)
79
- @git.config("remote.#{remote}.fetch",
80
- "+refs/heads/*:refs/remotes/#{remote}/*")
82
+ @git.config(
83
+ "remote.#{remote}.fetch",
84
+ "+refs/heads/*:refs/remotes/#{remote}/*"
85
+ )
81
86
  @git.remote(remote).fetch
82
87
  end
83
88
 
@@ -2,69 +2,53 @@
2
2
  # Copyright (c) 2016 Nathan Currier
3
3
 
4
4
  require 'json'
5
+ require 'set'
5
6
 
6
7
  require 'ghpages_deploy/rake/task'
7
8
 
8
9
  module GithubPages
9
10
  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
- # if update_sitemap is being called, excluded directories should be relative to './'
11
+ class << self
12
+ def directory_sitemap(files)
13
+ directory_mash.tap { |root| files.each { |path| map_file(root, path) } }
14
+ end
30
15
 
31
- def self.update_sitemap(excluded)
32
- mapping = directory_sitemap('.', excluded).last
16
+ def map_file(marker, path)
17
+ *dirs, file = path.split('/')
18
+ dirs.each { |dir| marker = marker[:dirs][dir] }
19
+ marker[:files] << file
20
+ end
33
21
 
34
- File.open('sitemap.json', 'w+') do |file|
35
- file.write mapping.to_json
22
+ def sanitize_list(list)
23
+ list.each_with_object(Set.new) { |glob, set| set.merge(Dir[glob]) }
36
24
  end
37
- end
38
25
 
39
- def self.directory_sitemap(dir, excluded)
40
- mapping =
41
- Dir.foreach(dir).flat_map do |file|
42
- file_dir = File.join(dir, file)
43
- next [] if excluded.include?(file_dir)
44
- next [] if %w(.git . ..).include?(file)
45
- next [] unless Dir.exist?(file_dir)
26
+ def expand_lists(directory, whitelist, blacklist)
27
+ Dir.chdir(directory) do
28
+ lists = [whitelist, blacklist].map { |list| sanitize_list(list) }
29
+ lists.reduce(&:-).select { |f| File.file?(f) }
30
+ end
31
+ end
46
32
 
47
- index =
48
- %w(index.html _index.html).find do |html|
49
- File.exist?(File.join(file_dir, html))
50
- end
33
+ def directory_mash
34
+ Hash[dirs: mash, files: []]
35
+ end
51
36
 
52
- next [File.basename(file_dir), index] if index
37
+ def mash
38
+ Hash.new { |h, k| h[k] = directory_mash }
39
+ end
40
+ end
53
41
 
54
- map = directory_sitemap(file_dir, excluded)
55
- next [] if !map || map.empty?
56
- map
57
- end
42
+ def generate_json_map(
43
+ directory: '.', output: 'sitemap.json',
44
+ whitelist: ['**/*'], blacklist: []
45
+ )
46
+ files = self.class.expand_lists(directory, whitelist, blacklist)
47
+ map = self.class.directory_sitemap(files)
58
48
 
59
- return nil if mapping.empty?
60
- [File.basename(dir), Hash[*mapping]]
61
- end
49
+ File.open(output, 'w+') { |f| f.puts map.to_json }
62
50
 
63
- def json_sitemap(excluded = [])
64
- handler.handle_deploy do
65
- JsonRakeExt.update_sitemap(excluded)
66
- ['sitemap.json']
67
- end
51
+ [output]
68
52
  end
69
53
  end
70
54
 
@@ -12,35 +12,30 @@ module GithubPages
12
12
  class DeployTask < ::Rake::TaskLib
13
13
  def initialize(*args)
14
14
  @args = args
15
- @destinations = []
16
15
  @handler = GithubPages::Handler.new
17
16
 
18
17
  yield self if block_given?
19
18
 
20
19
  @source &&= @source.gsub(%r{^#{Dir.pwd}[\/]?}, '')
21
20
 
21
+ @destination ||= '.'
22
22
  @source ||= '.'
23
23
  @remote ||= 'origin'
24
24
 
25
- @destinations << '.' if @destinations.empty?
26
-
27
25
  define
28
26
  end
29
27
 
30
- attr_accessor :remote, :source
28
+ attr_accessor :remote, :source, :destination
29
+ attr_accessor :repo, :branch
30
+ attr_accessor :message
31
31
  attr_reader :handler
32
32
 
33
- def register(destination)
34
- @destinations << destination
35
- end
36
-
37
33
  private
38
34
 
39
35
  def define
40
36
  task(*@args) do
41
- GitManager.open(@remote, @source) do |git|
42
- deployer = Deployer.new(git, @source, @destinations, @handler)
43
- deployer.deploy
37
+ GitManager.open(@remote, @source, @repo, @branch) do |git|
38
+ Deployer.new(git, @source, @destination, @message, @handler).deploy
44
39
  end
45
40
  end
46
41
  end
@@ -2,5 +2,5 @@
2
2
  # Copyright (c) 2016 Nathan Currier
3
3
 
4
4
  module GithubPages
5
- VERSION = '1.4.2'.freeze
5
+ VERSION = '2.0.0'.freeze
6
6
  end
metadata CHANGED
@@ -1,29 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ghpages_deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.2
4
+ version: 2.0.0
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-03-24 00:00:00.000000000 Z
11
+ date: 2016-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
+ prerelease: false
15
+ version_requirements: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
14
21
  name: git
15
22
  requirement: !ruby/object:Gem::Requirement
16
23
  requirements:
17
24
  - - ">="
18
25
  - !ruby/object:Gem::Version
19
26
  version: '0'
20
- type: :runtime
27
+ - !ruby/object:Gem::Dependency
21
28
  prerelease: false
22
29
  version_requirements: !ruby/object:Gem::Requirement
23
30
  requirements:
24
31
  - - ">="
25
32
  - !ruby/object:Gem::Version
26
33
  version: '0'
34
+ type: :development
35
+ name: rideliner
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  description: Deploy to Github Pages
28
42
  email:
29
43
  - nathan.currier@gmail.com
@@ -67,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
67
81
  version: '0'
68
82
  requirements: []
69
83
  rubyforge_project:
70
- rubygems_version: 2.5.1
84
+ rubygems_version: 2.6.2
71
85
  signing_key:
72
86
  specification_version: 4
73
87
  summary: Deploy your site to Github Pages