bookbindery 3.1.0 → 3.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/install_bin/bookbinder +1 -1
  3. data/lib/bookbinder/cf_command_runner.rb +1 -1
  4. data/lib/bookbinder/cli.rb +5 -5
  5. data/lib/bookbinder/code_example_reader.rb +57 -19
  6. data/lib/bookbinder/colorizer.rb +5 -2
  7. data/lib/bookbinder/commands/bind.rb +32 -42
  8. data/lib/bookbinder/commands/bind/bind_options.rb +6 -4
  9. data/lib/bookbinder/commands/bind/directory_preparer.rb +8 -13
  10. data/lib/bookbinder/{repositories/command_repository.rb → commands/collection.rb} +19 -37
  11. data/lib/bookbinder/config/archive_menu_configuration.rb +38 -0
  12. data/lib/bookbinder/config/checkers/archive_menu_checker.rb +35 -0
  13. data/lib/bookbinder/config/checkers/dita_section_checker.rb +24 -0
  14. data/lib/bookbinder/config/checkers/duplicate_section_name_checker.rb +29 -0
  15. data/lib/bookbinder/config/checkers/repository_name_presence_checker.rb +37 -0
  16. data/lib/bookbinder/config/checkers/required_keys_checker.rb +47 -0
  17. data/lib/bookbinder/config/configuration.rb +99 -0
  18. data/lib/bookbinder/config/fetcher.rb +61 -0
  19. data/lib/bookbinder/config/remote_yaml_credential_provider.rb +22 -0
  20. data/lib/bookbinder/config/validator.rb +30 -0
  21. data/lib/bookbinder/config/yaml_loader.rb +34 -0
  22. data/lib/bookbinder/ingest/git_cloner.rb +0 -1
  23. data/lib/bookbinder/ingest/local_filesystem_cloner.rb +22 -17
  24. data/lib/bookbinder/ingest/missing_working_copy.rb +21 -0
  25. data/lib/bookbinder/{repositories → ingest}/section_repository.rb +3 -4
  26. data/lib/bookbinder/{repositories → ingest}/section_repository_factory.rb +1 -1
  27. data/lib/bookbinder/ingest/working_copy.rb +12 -16
  28. data/lib/bookbinder/preprocessing/copy_to_site_gen_dir.rb +2 -3
  29. data/lib/bookbinder/preprocessing/dita_preprocessor.rb +5 -5
  30. data/lib/bookbinder/preprocessing/preprocessor.rb +1 -1
  31. data/lib/bookbinder/sheller.rb +3 -0
  32. data/lib/bookbinder/streams/colorized_stream.rb +1 -1
  33. data/lib/bookbinder/values/cf_routes.rb +17 -6
  34. data/lib/bookbinder/values/output_locations.rb +1 -12
  35. data/lib/bookbinder/values/section.rb +2 -7
  36. data/master_middleman/bookbinder_helpers.rb +23 -18
  37. data/master_middleman/quicklinks_renderer.rb +1 -0
  38. data/template_app/lib/rack_static.rb +2 -0
  39. data/template_app/lib/vienna_application.rb +2 -0
  40. metadata +51 -52
  41. data/lib/bookbinder.rb +0 -44
  42. data/lib/bookbinder/archive_menu_configuration.rb +0 -34
  43. data/lib/bookbinder/configuration.rb +0 -97
  44. data/lib/bookbinder/configuration_fetcher.rb +0 -59
  45. data/lib/bookbinder/configuration_validator.rb +0 -28
  46. data/lib/bookbinder/remote_yaml_credential_provider.rb +0 -20
  47. data/lib/bookbinder/shell_out.rb +0 -20
  48. data/lib/bookbinder/validation_checkers/archive_menu_checker.rb +0 -31
  49. data/lib/bookbinder/validation_checkers/dita_section_checker.rb +0 -20
  50. data/lib/bookbinder/validation_checkers/duplicate_section_name_checker.rb +0 -25
  51. data/lib/bookbinder/validation_checkers/repository_name_presence_checker.rb +0 -33
  52. data/lib/bookbinder/validation_checkers/required_keys_checker.rb +0 -43
  53. data/lib/bookbinder/yaml_loader.rb +0 -33
@@ -23,7 +23,6 @@ module Bookbinder
23
23
  )
24
24
  WorkingCopy.new(
25
25
  copied_to: copied_to,
26
- directory: destination_dir_name,
27
26
  full_name: source_repo_name,
28
27
  )
29
28
  end
@@ -1,5 +1,7 @@
1
1
  require_relative '../deprecated_logger'
2
+ require_relative 'destination_directory'
2
3
  require_relative 'working_copy'
4
+ require_relative 'missing_working_copy'
3
5
 
4
6
  module Bookbinder
5
7
  module Ingest
@@ -14,38 +16,41 @@ module Bookbinder
14
16
  source_ref: nil,
15
17
  destination_parent_dir: nil,
16
18
  destination_dir_name: nil)
17
- copied_to = copy!(
18
- WorkingCopy.new(repo_dir: user_repo_dir, full_name: source_repo_name),
19
+ copy!(
20
+ source_repo_name,
21
+ Pathname(user_repo_dir).join(source_repo_name.split('/').last),
19
22
  Pathname(destination_parent_dir).join(DestinationDirectory.new(source_repo_name, destination_dir_name))
20
23
  )
21
- WorkingCopy.new(
22
- copied_to: copied_to,
23
- directory: destination_dir_name,
24
- full_name: source_repo_name,
25
- )
26
24
  end
27
25
 
28
26
  private
29
27
 
30
28
  attr_reader :logger, :filesystem, :user_repo_dir
31
29
 
32
- def copy!(source_copy, dest_dir)
33
- source_exists = filesystem.file_exist?(source_copy.path)
30
+ def copy!(source_repo_name, source_dir, dest_dir)
31
+ source_exists = filesystem.file_exist?(source_dir)
34
32
 
35
33
  if source_exists && filesystem.file_exist?(dest_dir)
36
- announce_copy(source_copy)
37
- dest_dir
34
+ announce_copy(source_dir)
35
+ WorkingCopy.new(
36
+ copied_to: dest_dir,
37
+ full_name: source_repo_name,
38
+ )
38
39
  elsif source_exists
39
- announce_copy(source_copy)
40
- filesystem.copy_contents(source_copy.path, dest_dir)
41
- dest_dir
40
+ announce_copy(source_dir)
41
+ filesystem.copy_contents(source_dir, dest_dir)
42
+ WorkingCopy.new(
43
+ copied_to: dest_dir,
44
+ full_name: source_repo_name,
45
+ )
42
46
  else
43
- logger.log ' skipping (not found) '.magenta + source_copy.path.to_s
47
+ logger.log ' skipping (not found) '.magenta + source_dir.to_s
48
+ MissingWorkingCopy.new(source_repo_name)
44
49
  end
45
50
  end
46
51
 
47
- def announce_copy(source_copy)
48
- logger.log ' copying '.yellow + source_copy.path.to_s
52
+ def announce_copy(source_dir)
53
+ logger.log ' copying '.yellow + source_dir.to_s
49
54
  end
50
55
  end
51
56
  end
@@ -0,0 +1,21 @@
1
+ module Bookbinder
2
+ module Ingest
3
+ class MissingWorkingCopy
4
+ def initialize(source_repo_name)
5
+ @source_repo_name = source_repo_name
6
+ end
7
+
8
+ def full_name
9
+ @source_repo_name
10
+ end
11
+
12
+ def path
13
+ Pathname("/this/doesnt/actually/exist/#{SecureRandom.uuid}")
14
+ end
15
+
16
+ def available?
17
+ false
18
+ end
19
+ end
20
+ end
21
+ end
@@ -3,7 +3,7 @@ require_relative '../deprecated_logger'
3
3
  require_relative '../values/section'
4
4
 
5
5
  module Bookbinder
6
- module Repositories
6
+ module Ingest
7
7
  class SectionRepository
8
8
  def initialize(logger, cloner)
9
9
  @logger = logger
@@ -20,11 +20,10 @@ module Bookbinder
20
20
  destination_parent_dir: destination_dir,
21
21
  destination_dir_name: section_config.desired_directory_name)
22
22
  Section.new(
23
- working_copy.copied_to,
23
+ working_copy.path,
24
24
  working_copy.full_name,
25
- working_copy.copied?,
26
25
  destination_dir,
27
- working_copy.directory,
26
+ section_config.desired_directory_name,
28
27
  section_config.subnav_template,
29
28
  section_config.preprocessor_config
30
29
  )
@@ -1,7 +1,7 @@
1
1
  require_relative 'section_repository'
2
2
 
3
3
  module Bookbinder
4
- module Repositories
4
+ module Ingest
5
5
  class SectionRepositoryFactory
6
6
  def initialize(logger)
7
7
  @logger = logger
@@ -1,30 +1,26 @@
1
- require_relative 'destination_directory'
1
+ require_relative '../errors/programmer_mistake'
2
2
 
3
3
  module Bookbinder
4
4
  module Ingest
5
5
  class WorkingCopy
6
- def initialize(repo_dir: nil,
7
- copied_to: nil,
8
- directory: nil,
6
+ def initialize(copied_to: nil,
9
7
  full_name: nil)
10
- @repo_dir = repo_dir
11
- @copied_to = copied_to
12
- @directory = directory
13
- @full_name = full_name
8
+ if [copied_to, full_name].none?
9
+ raise Errors::ProgrammerMistake.new("Must provide copied_to and/or full_name to WorkingCopy.new")
10
+ else
11
+ @copied_to = copied_to
12
+ @full_name = full_name
13
+ end
14
14
  end
15
15
 
16
- attr_reader :copied_to, :full_name
16
+ attr_reader :full_name
17
17
 
18
- def copied?
19
- ! copied_to.nil?
20
- end
21
-
22
- def directory
23
- DestinationDirectory.new(full_name, @directory).to_s
18
+ def available?
19
+ !! @copied_to
24
20
  end
25
21
 
26
22
  def path
27
- Pathname(@repo_dir).join(directory)
23
+ Pathname(@copied_to)
28
24
  end
29
25
  end
30
26
  end
@@ -6,15 +6,14 @@ module Bookbinder
6
6
  end
7
7
 
8
8
  def applicable_to?(section)
9
- section.subnav_template != 'dita_subnav' &&
10
- filesystem.file_exist?(section.path_to_repository)
9
+ filesystem.file_exist?(section.path_to_repository)
11
10
  end
12
11
 
13
12
  def preprocess(sections, output_locations, *_)
14
13
  sections.each do |section|
15
14
  filesystem.copy_contents(
16
15
  section.path_to_repository,
17
- output_locations.source_for_site_generator.join(section.desired_directory)
16
+ output_locations.source_for_site_generator.join(section.destination_directory)
18
17
  )
19
18
  end
20
19
  end
@@ -23,7 +23,7 @@ module Bookbinder
23
23
  command = command_creator.convert_to_html_command(
24
24
  dita_section,
25
25
  dita_flags: dita_flags(options),
26
- write_to: output_locations.html_from_preprocessing_dir.join(dita_section.desired_directory)
26
+ write_to: output_locations.html_from_preprocessing_dir.join(dita_section.destination_directory)
27
27
  )
28
28
  status = sheller.run_command(command, output_streams.to_h)
29
29
  unless status.success?
@@ -33,16 +33,16 @@ module Bookbinder
33
33
  'and that your DITA toolkit is correctly configured.'
34
34
  end
35
35
 
36
- generate_subnav(dita_section.desired_directory,
36
+ generate_subnav(dita_section.destination_directory,
37
37
  output_locations,
38
38
  output_locations.source_for_site_generator.join('subnavs', '_dita_subnav_template.erb'),
39
39
  output_locations.subnavs_for_layout_dir)
40
40
  end
41
41
 
42
42
  dita_sections.each do |dita_section|
43
- html_dir = output_locations.html_from_preprocessing_dir.join(dita_section.desired_directory)
44
- formatted_dir = output_locations.formatted_dir.join(dita_section.desired_directory)
45
- source_for_site_gen_dir = output_locations.source_for_site_generator.join(dita_section.desired_directory)
43
+ html_dir = output_locations.html_from_preprocessing_dir.join(dita_section.destination_directory)
44
+ formatted_dir = output_locations.formatted_dir.join(dita_section.destination_directory)
45
+ source_for_site_gen_dir = output_locations.source_for_site_generator.join(dita_section.destination_directory)
46
46
 
47
47
  dita_formatter.format_html html_dir, formatted_dir
48
48
 
@@ -10,7 +10,7 @@ module Bookbinder
10
10
  @processes = processes
11
11
  end
12
12
 
13
- def preprocess(objs, *args, &block)
13
+ def preprocess(objs, *args)
14
14
  objs.group_by { |obj|
15
15
  processes.detect ->{ NullProcess.new } { |process| process.applicable_to?(obj) }
16
16
  }.each do |process, objs|
@@ -7,6 +7,9 @@ module Bookbinder
7
7
  class DevNull
8
8
  def puts(_)
9
9
  end
10
+
11
+ def <<(_)
12
+ end
10
13
  end
11
14
 
12
15
  def run_command(*command)
@@ -10,7 +10,7 @@ module Bookbinder
10
10
  end
11
11
 
12
12
  def puts(line)
13
- stream << colorizer.colorize(line, color)
13
+ stream.puts(colorizer.colorize(line, color))
14
14
  end
15
15
 
16
16
  private
@@ -5,15 +5,26 @@ module Bookbinder
5
5
  end
6
6
 
7
7
  def apps_by_host_and_domain
8
- @apps_by_host_and_domain ||= Hash[
9
- raw_routes.lines[3..-1].
10
- map { |line| line.split(/\s+/, 3) }.
11
- map { |item| [item[0..1], item[2].split(',').map(&:strip)] }
12
- ]
8
+ @apps_by_host_and_domain ||= data(raw_routes).reduce({}) {|acc, row|
9
+ parsed_row = Hash[headers(raw_routes).zip(row)]
10
+ acc.merge(parsed_row.values_at('host', 'domain') => parse_apps(parsed_row['apps']))
11
+ }
13
12
  end
14
13
 
15
14
  private
16
15
 
17
16
  attr_reader :raw_routes
17
+
18
+ def parse_apps(apps)
19
+ apps.split(',').map(&:strip)
20
+ end
21
+
22
+ def headers(raw)
23
+ raw.lines[2].split(/\s+/)
24
+ end
25
+
26
+ def data(raw)
27
+ raw.lines[3..-1].map {|line| line.split(/\s+/, headers(raw).size)}
28
+ end
18
29
  end
19
- end
30
+ end
@@ -3,18 +3,11 @@ require_relative '../errors/programmer_mistake'
3
3
 
4
4
  module Bookbinder
5
5
  class OutputLocations
6
- attr_reader :layout_repo_dir
7
-
8
6
  include DirectoryHelperMethods
9
7
 
10
- def initialize(final_app_dir: nil,
11
- layout_repo_dir: nil,
12
- context_dir: nil,
13
- local_repo_dir: nil)
8
+ def initialize(final_app_dir: nil, context_dir: nil)
14
9
  @final_app_dir = final_app_dir
15
- @layout_repo_dir = layout_repo_dir
16
10
  @context_dir = context_dir
17
- @local_repo_dir = local_repo_dir
18
11
  end
19
12
 
20
13
  def final_app_dir
@@ -41,10 +34,6 @@ module Bookbinder
41
34
  context_dir.join(output_dir_name)
42
35
  end
43
36
 
44
- def local_repo_dir
45
- Pathname(@local_repo_dir) if @local_repo_dir
46
- end
47
-
48
37
  def preprocessing_home_dir
49
38
  output_dir.join('preprocessing')
50
39
  end
@@ -4,15 +4,10 @@ require_relative '../ingest/destination_directory'
4
4
  module Bookbinder
5
5
  Section = Struct.new(:path_to_repository,
6
6
  :full_name,
7
- :copied,
8
7
  :destination_dir,
9
8
  :desired_directory_name,
10
9
  :subnav_templ,
11
10
  :preprocessor_config) do
12
- def requires_preprocessing?
13
- !preprocessor_config.nil?
14
- end
15
-
16
11
  def path_to_repository
17
12
  Pathname(self[:path_to_repository].to_s)
18
13
  end
@@ -21,12 +16,12 @@ module Bookbinder
21
16
  subnav_templ.sub(/^_/, '').sub(/\.erb$/, '') if subnav_templ
22
17
  end
23
18
 
24
- def desired_directory
19
+ def destination_directory
25
20
  Ingest::DestinationDirectory.new(full_name, desired_directory_name)
26
21
  end
27
22
 
28
23
  def subnav
29
- namespace = desired_directory.to_s.gsub('/', '_')
24
+ namespace = destination_directory.to_s.gsub('/', '_')
30
25
  template = subnav_template || 'default'
31
26
  {namespace => template}
32
27
  end
@@ -27,10 +27,7 @@ module Bookbinder
27
27
  source_ref: 'master',
28
28
  destination_parent_dir: workspace)
29
29
 
30
- snippet, language = code_example_reader.get_snippet_and_language_at(at,
31
- working_copy.copied_to,
32
- working_copy.copied?,
33
- working_copy.full_name)
30
+ snippet, language = code_example_reader.get_snippet_and_language_at(at, working_copy)
34
31
 
35
32
  delimiter = '```'
36
33
 
@@ -38,15 +35,7 @@ module Bookbinder
38
35
  end
39
36
 
40
37
  def yield_for_subnav
41
- if index_subnav
42
- template = current_page.data.index_subnav
43
- else
44
- namespaces = decreasingly_specific_namespaces
45
- template = namespaces.map do |namespace|
46
- config[:subnav_templates][namespace]
47
- end.compact.pop || 'default'
48
- end
49
- partial "subnavs/#{template}"
38
+ partial "subnavs/#{subnav_template_name}"
50
39
  end
51
40
 
52
41
  def yield_for_archive_drop_down_menu
@@ -80,17 +69,33 @@ module Bookbinder
80
69
 
81
70
  private
82
71
 
83
- def index_subnav
84
- return true if current_page.data.index_subnav
72
+ def subnav_template_name
73
+ if current_page.data.index_subnav
74
+ current_page.data.index_subnav
75
+ else
76
+ template_key = decreasingly_specific_namespaces.detect { |ns|
77
+ config[:subnav_templates].has_key?(ns)
78
+ }
79
+ config[:subnav_templates][template_key] || 'default'
80
+ end
85
81
  end
86
82
 
87
83
  def decreasingly_specific_namespaces
88
- page_classes.split(' ')[0...-1].reverse
84
+ page_classes(numeric_prefix: numeric_class_prefix).
85
+ split(' ').reverse.drop(1).
86
+ map {|ns| ns.sub(/^#{numeric_class_prefix}/, '')}
87
+ end
88
+
89
+ def numeric_class_prefix
90
+ 'NUMERIC_CLASS_PREFIX'
89
91
  end
90
92
 
91
93
  def add_ancestors_of(page, ancestors)
92
- return ancestors if !page
93
- add_ancestors_of(page.parent, ancestors << page)
94
+ if page
95
+ add_ancestors_of(page.parent, ancestors + [page])
96
+ else
97
+ ancestors
98
+ end
94
99
  end
95
100
 
96
101
  def make_breadcrumb(page, is_current_page)
@@ -1,3 +1,4 @@
1
+ require 'nokogiri'
1
2
  require 'redcarpet'
2
3
 
3
4
  class QuicklinksRenderer < Redcarpet::Render::Base
@@ -1,3 +1,5 @@
1
+ require 'rack'
2
+
1
3
  class Rack::Static
2
4
  def route_file(path)
3
5
  @urls.kind_of?(Array) && @urls.any? { |url| url.index(path) == 0 }
@@ -1,3 +1,5 @@
1
+ require 'vienna'
2
+
1
3
  class Vienna::Application
2
4
  def initialize(root = 'public')
3
5
  @app = Rack::Builder.new do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bookbindery
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Grafton
@@ -15,90 +15,90 @@ authors:
15
15
  autorequire:
16
16
  bindir: install_bin
17
17
  cert_chain: []
18
- date: 2015-05-21 00:00:00.000000000 Z
18
+ date: 2015-06-09 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: fog-aws
22
22
  requirement: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.0.6
27
27
  type: :runtime
28
28
  prerelease: false
29
29
  version_requirements: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.0.6
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: ansi
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.4'
41
41
  type: :runtime
42
42
  prerelease: false
43
43
  version_requirements: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.4'
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: unf
50
50
  requirement: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.1'
55
55
  type: :runtime
56
56
  prerelease: false
57
57
  version_requirements: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0.1'
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: middleman
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: 3.3.5
69
69
  type: :runtime
70
70
  prerelease: false
71
71
  version_requirements: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
75
  version: 3.3.5
76
76
  - !ruby/object:Gem::Dependency
77
77
  name: middleman-syntax
78
78
  requirement: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
82
  version: '2.0'
83
83
  type: :runtime
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ~>
88
88
  - !ruby/object:Gem::Version
89
89
  version: '2.0'
90
90
  - !ruby/object:Gem::Dependency
91
91
  name: redcarpet
92
92
  requirement: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ~>
95
95
  - !ruby/object:Gem::Version
96
96
  version: 3.2.3
97
97
  type: :runtime
98
98
  prerelease: false
99
99
  version_requirements: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - ~>
102
102
  - !ruby/object:Gem::Version
103
103
  version: 3.2.3
104
104
  - !ruby/object:Gem::Dependency
@@ -119,140 +119,140 @@ dependencies:
119
119
  name: anemone
120
120
  requirement: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - '>='
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  type: :runtime
126
126
  prerelease: false
127
127
  version_requirements: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ">="
129
+ - - '>='
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  - !ruby/object:Gem::Dependency
133
133
  name: css_parser
134
134
  requirement: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ">="
136
+ - - '>='
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  type: :runtime
140
140
  prerelease: false
141
141
  version_requirements: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ">="
143
+ - - '>='
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: puma
148
148
  requirement: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ">="
150
+ - - '>='
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  type: :runtime
154
154
  prerelease: false
155
155
  version_requirements: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - ">="
157
+ - - '>='
158
158
  - !ruby/object:Gem::Version
159
159
  version: '0'
160
160
  - !ruby/object:Gem::Dependency
161
161
  name: rack-rewrite
162
162
  requirement: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - ">="
164
+ - - '>='
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  type: :runtime
168
168
  prerelease: false
169
169
  version_requirements: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - ">="
171
+ - - '>='
172
172
  - !ruby/object:Gem::Version
173
173
  version: '0'
174
174
  - !ruby/object:Gem::Dependency
175
175
  name: therubyracer
176
176
  requirement: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - ">="
178
+ - - '>='
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
181
  type: :runtime
182
182
  prerelease: false
183
183
  version_requirements: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - ">="
185
+ - - '>='
186
186
  - !ruby/object:Gem::Version
187
187
  version: '0'
188
188
  - !ruby/object:Gem::Dependency
189
189
  name: git
190
190
  requirement: !ruby/object:Gem::Requirement
191
191
  requirements:
192
- - - "~>"
192
+ - - ~>
193
193
  - !ruby/object:Gem::Version
194
194
  version: 1.2.8
195
195
  type: :runtime
196
196
  prerelease: false
197
197
  version_requirements: !ruby/object:Gem::Requirement
198
198
  requirements:
199
- - - "~>"
199
+ - - ~>
200
200
  - !ruby/object:Gem::Version
201
201
  version: 1.2.8
202
202
  - !ruby/object:Gem::Dependency
203
203
  name: license_finder
204
204
  requirement: !ruby/object:Gem::Requirement
205
205
  requirements:
206
- - - ">="
206
+ - - '>='
207
207
  - !ruby/object:Gem::Version
208
208
  version: '0'
209
209
  type: :development
210
210
  prerelease: false
211
211
  version_requirements: !ruby/object:Gem::Requirement
212
212
  requirements:
213
- - - ">="
213
+ - - '>='
214
214
  - !ruby/object:Gem::Version
215
215
  version: '0'
216
216
  - !ruby/object:Gem::Dependency
217
217
  name: pry-byebug
218
218
  requirement: !ruby/object:Gem::Requirement
219
219
  requirements:
220
- - - ">="
220
+ - - '>='
221
221
  - !ruby/object:Gem::Version
222
222
  version: '0'
223
223
  type: :development
224
224
  prerelease: false
225
225
  version_requirements: !ruby/object:Gem::Requirement
226
226
  requirements:
227
- - - ">="
227
+ - - '>='
228
228
  - !ruby/object:Gem::Version
229
229
  version: '0'
230
230
  - !ruby/object:Gem::Dependency
231
231
  name: rake
232
232
  requirement: !ruby/object:Gem::Requirement
233
233
  requirements:
234
- - - ">="
234
+ - - '>='
235
235
  - !ruby/object:Gem::Version
236
236
  version: '0'
237
237
  type: :development
238
238
  prerelease: false
239
239
  version_requirements: !ruby/object:Gem::Requirement
240
240
  requirements:
241
- - - ">="
241
+ - - '>='
242
242
  - !ruby/object:Gem::Version
243
243
  version: '0'
244
244
  - !ruby/object:Gem::Dependency
245
245
  name: rspec
246
246
  requirement: !ruby/object:Gem::Requirement
247
247
  requirements:
248
- - - ">="
248
+ - - '>='
249
249
  - !ruby/object:Gem::Version
250
250
  version: '0'
251
251
  type: :development
252
252
  prerelease: false
253
253
  version_requirements: !ruby/object:Gem::Requirement
254
254
  requirements:
255
- - - ">="
255
+ - - '>='
256
256
  - !ruby/object:Gem::Version
257
257
  version: '0'
258
258
  description: A command line utility to be run in Book repositories to stitch together
@@ -265,7 +265,6 @@ extra_rdoc_files: []
265
265
  files:
266
266
  - lib/bookbinder/app_fetcher.rb
267
267
  - lib/bookbinder/archive.rb
268
- - lib/bookbinder/archive_menu_configuration.rb
269
268
  - lib/bookbinder/artifact_namer.rb
270
269
  - lib/bookbinder/cf_command_runner.rb
271
270
  - lib/bookbinder/cli.rb
@@ -279,6 +278,7 @@ files:
279
278
  - lib/bookbinder/commands/bookbinder_command.rb
280
279
  - lib/bookbinder/commands/build_and_push_tarball.rb
281
280
  - lib/bookbinder/commands/chain.rb
281
+ - lib/bookbinder/commands/collection.rb
282
282
  - lib/bookbinder/commands/help.rb
283
283
  - lib/bookbinder/commands/naming.rb
284
284
  - lib/bookbinder/commands/push_from_local.rb
@@ -287,14 +287,22 @@ files:
287
287
  - lib/bookbinder/commands/tag.rb
288
288
  - lib/bookbinder/commands/update_local_doc_repos.rb
289
289
  - lib/bookbinder/commands/version.rb
290
+ - lib/bookbinder/config/archive_menu_configuration.rb
290
291
  - lib/bookbinder/config/aws_credentials.rb
291
292
  - lib/bookbinder/config/bind_config_factory.rb
292
293
  - lib/bookbinder/config/cf_credentials.rb
294
+ - lib/bookbinder/config/checkers/archive_menu_checker.rb
295
+ - lib/bookbinder/config/checkers/dita_section_checker.rb
296
+ - lib/bookbinder/config/checkers/duplicate_section_name_checker.rb
297
+ - lib/bookbinder/config/checkers/repository_name_presence_checker.rb
298
+ - lib/bookbinder/config/checkers/required_keys_checker.rb
299
+ - lib/bookbinder/config/configuration.rb
300
+ - lib/bookbinder/config/fetcher.rb
293
301
  - lib/bookbinder/config/remote_bind_configuration.rb
302
+ - lib/bookbinder/config/remote_yaml_credential_provider.rb
294
303
  - lib/bookbinder/config/section_config.rb
295
- - lib/bookbinder/configuration.rb
296
- - lib/bookbinder/configuration_fetcher.rb
297
- - lib/bookbinder/configuration_validator.rb
304
+ - lib/bookbinder/config/validator.rb
305
+ - lib/bookbinder/config/yaml_loader.rb
298
306
  - lib/bookbinder/css_link_checker.rb
299
307
  - lib/bookbinder/deprecated_logger.rb
300
308
  - lib/bookbinder/directory_helpers.rb
@@ -309,7 +317,10 @@ files:
309
317
  - lib/bookbinder/ingest/destination_directory.rb
310
318
  - lib/bookbinder/ingest/git_cloner.rb
311
319
  - lib/bookbinder/ingest/local_filesystem_cloner.rb
320
+ - lib/bookbinder/ingest/missing_working_copy.rb
312
321
  - lib/bookbinder/ingest/repo_identifier.rb
322
+ - lib/bookbinder/ingest/section_repository.rb
323
+ - lib/bookbinder/ingest/section_repository_factory.rb
313
324
  - lib/bookbinder/ingest/working_copy.rb
314
325
  - lib/bookbinder/local_file_system_accessor.rb
315
326
  - lib/bookbinder/middleman_runner.rb
@@ -318,12 +329,7 @@ files:
318
329
  - lib/bookbinder/preprocessing/dita_preprocessor.rb
319
330
  - lib/bookbinder/preprocessing/preprocessor.rb
320
331
  - lib/bookbinder/pusher.rb
321
- - lib/bookbinder/remote_yaml_credential_provider.rb
322
- - lib/bookbinder/repositories/command_repository.rb
323
- - lib/bookbinder/repositories/section_repository.rb
324
- - lib/bookbinder/repositories/section_repository_factory.rb
325
332
  - lib/bookbinder/server_director.rb
326
- - lib/bookbinder/shell_out.rb
327
333
  - lib/bookbinder/sheller.rb
328
334
  - lib/bookbinder/sieve.rb
329
335
  - lib/bookbinder/sitemap_generator.rb
@@ -333,19 +339,12 @@ files:
333
339
  - lib/bookbinder/subnav_formatter.rb
334
340
  - lib/bookbinder/terminal.rb
335
341
  - lib/bookbinder/time_fetcher.rb
336
- - lib/bookbinder/validation_checkers/archive_menu_checker.rb
337
- - lib/bookbinder/validation_checkers/dita_section_checker.rb
338
- - lib/bookbinder/validation_checkers/duplicate_section_name_checker.rb
339
- - lib/bookbinder/validation_checkers/repository_name_presence_checker.rb
340
- - lib/bookbinder/validation_checkers/required_keys_checker.rb
341
342
  - lib/bookbinder/values/blue_green_app.rb
342
343
  - lib/bookbinder/values/cf_routes.rb
343
344
  - lib/bookbinder/values/output_locations.rb
344
345
  - lib/bookbinder/values/section.rb
345
346
  - lib/bookbinder/values/subnav.rb
346
347
  - lib/bookbinder/values/user_message.rb
347
- - lib/bookbinder/yaml_loader.rb
348
- - lib/bookbinder.rb
349
348
  - template_app/app.rb
350
349
  - template_app/config.ru
351
350
  - template_app/Gemfile
@@ -368,12 +367,12 @@ require_paths:
368
367
  - lib
369
368
  required_ruby_version: !ruby/object:Gem::Requirement
370
369
  requirements:
371
- - - "~>"
370
+ - - ~>
372
371
  - !ruby/object:Gem::Version
373
372
  version: '2.0'
374
373
  required_rubygems_version: !ruby/object:Gem::Requirement
375
374
  requirements:
376
- - - ">="
375
+ - - '>='
377
376
  - !ruby/object:Gem::Version
378
377
  version: '0'
379
378
  requirements: []