bookbindery 4.2.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/bookbinder/cli.rb +0 -3
- data/lib/bookbinder/code_example_reader.rb +54 -36
- data/lib/bookbinder/commands/bind.rb +42 -69
- data/lib/bookbinder/commands/bind/bind_options.rb +23 -13
- data/lib/bookbinder/commands/bind/directory_preparer.rb +18 -34
- data/lib/bookbinder/commands/collection.rb +40 -8
- data/lib/bookbinder/commands/watch.rb +90 -0
- data/lib/bookbinder/config/configuration.rb +0 -4
- data/lib/bookbinder/ingest/git_accessor.rb +9 -14
- data/lib/bookbinder/ingest/local_filesystem_cloner.rb +7 -7
- data/lib/bookbinder/ingest/missing_working_copy.rb +3 -2
- data/lib/bookbinder/ingest/repo_identifier.rb +1 -1
- data/lib/bookbinder/ingest/section_repository.rb +4 -11
- data/lib/bookbinder/ingest/working_copy.rb +8 -2
- data/lib/bookbinder/local_file_system_accessor.rb +8 -1
- data/lib/bookbinder/middleman_runner.rb +25 -78
- data/lib/bookbinder/preprocessing/preprocessor.rb +5 -5
- data/master_middleman/bookbinder_helpers.rb +14 -5
- data/master_middleman/config.rb +13 -4
- data/master_middleman/{submodule_aware_assets.rb → subdirectory_aware_assets.rb} +7 -5
- metadata +34 -8
- data/lib/bookbinder/config/bind_config_factory.rb +0 -28
- data/lib/bookbinder/config/remote_bind_configuration.rb +0 -44
- data/lib/bookbinder/ingest/section_repository_factory.rb +0 -19
| @@ -10,11 +10,11 @@ module Bookbinder | |
| 10 10 | 
             
                    @processes = processes
         | 
| 11 11 | 
             
                  end
         | 
| 12 12 |  | 
| 13 | 
            -
                  def preprocess( | 
| 14 | 
            -
                     | 
| 15 | 
            -
                      processes.detect ->{ NullProcess.new } { |process| process.applicable_to?( | 
| 16 | 
            -
                    }.each do |process,  | 
| 17 | 
            -
                      process.preprocess( | 
| 13 | 
            +
                  def preprocess(sections, *args)
         | 
| 14 | 
            +
                    sections.group_by { |section|
         | 
| 15 | 
            +
                      processes.detect ->{ NullProcess.new } { |process| process.applicable_to?(section) }
         | 
| 16 | 
            +
                    }.each do |process, grouped_sections|
         | 
| 17 | 
            +
                      process.preprocess(grouped_sections, *args)
         | 
| 18 18 | 
             
                    end
         | 
| 19 19 | 
             
                  end
         | 
| 20 20 |  | 
| @@ -1,3 +1,7 @@ | |
| 1 | 
            +
            require 'bookbinder/code_example_reader'
         | 
| 2 | 
            +
            require 'bookbinder/ingest/cloner_factory'
         | 
| 3 | 
            +
            require 'bookbinder/ingest/git_accessor'
         | 
| 4 | 
            +
            require 'bookbinder/local_file_system_accessor'
         | 
| 1 5 | 
             
            require 'date'
         | 
| 2 6 | 
             
            require_relative 'archive_drop_down_menu'
         | 
| 3 7 | 
             
            require_relative 'quicklinks_renderer'
         | 
| @@ -17,11 +21,16 @@ module Bookbinder | |
| 17 21 | 
             
                module HelperMethods
         | 
| 18 22 |  | 
| 19 23 | 
             
                  def yield_for_code_snippet(from: nil, at: nil)
         | 
| 20 | 
            -
                     | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 24 | 
            +
                    cloner_factory = Ingest::ClonerFactory.new({out: $stdout},
         | 
| 25 | 
            +
                                                               LocalFileSystemAccessor.new,
         | 
| 26 | 
            +
                                                               Ingest::GitAccessor.new)
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                    cloner = cloner_factory.produce(config[:local_repo_dir])
         | 
| 29 | 
            +
                    code_example_reader = CodeExampleReader.new({out: $stdout},
         | 
| 30 | 
            +
                                                                LocalFileSystemAccessor.new)
         | 
| 31 | 
            +
                    working_copy = cloner.call(source_repo_name: from,
         | 
| 32 | 
            +
                                               source_ref: 'master',
         | 
| 33 | 
            +
                                               destination_parent_dir: config[:workspace])
         | 
| 25 34 |  | 
| 26 35 | 
             
                    snippet, language = code_example_reader.get_snippet_and_language_at(at, working_copy)
         | 
| 27 36 |  | 
    
        data/master_middleman/config.rb
    CHANGED
    
    | @@ -1,5 +1,12 @@ | |
| 1 1 | 
             
            require 'bookbinder_helpers'
         | 
| 2 | 
            -
            require ' | 
| 2 | 
            +
            require 'middleman-syntax'
         | 
| 3 | 
            +
            require 'middleman-livereload'
         | 
| 4 | 
            +
            require 'subdirectory_aware_assets'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            config = YAML.load_file('bookbinder_config.yml')
         | 
| 7 | 
            +
            config.each do |k, v|
         | 
| 8 | 
            +
              set k, v
         | 
| 9 | 
            +
            end
         | 
| 3 10 |  | 
| 4 11 | 
             
            set :markdown_engine, :redcarpet
         | 
| 5 12 | 
             
            set :markdown, :layout_engine => :erb,
         | 
| @@ -14,10 +21,12 @@ set :js_dir, 'javascripts' | |
| 14 21 |  | 
| 15 22 | 
             
            set :images_dir, 'images'
         | 
| 16 23 |  | 
| 17 | 
            -
            set :relative_links,  | 
| 24 | 
            +
            set :relative_links, false
         | 
| 18 25 |  | 
| 19 | 
            -
            activate : | 
| 26 | 
            +
            activate :subdirectory_aware_assets
         | 
| 20 27 |  | 
| 21 28 | 
             
            activate :navigation
         | 
| 22 29 |  | 
| 23 | 
            -
            activate :syntax
         | 
| 30 | 
            +
            activate :syntax
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            activate :livereload
         | 
| @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            class  | 
| 1 | 
            +
            class SubdirectoryAwareAssets < ::Middleman::Extension
         | 
| 2 2 | 
             
              def initialize(app, options_hash={}, &block)
         | 
| 3 3 | 
             
                super
         | 
| 4 4 |  | 
| @@ -9,15 +9,15 @@ class SubmoduleAwareAssets < ::Middleman::Extension | |
| 9 9 | 
             
              end
         | 
| 10 10 |  | 
| 11 11 | 
             
              helpers do
         | 
| 12 | 
            -
                def asset_url(path, prefix="")
         | 
| 13 | 
            -
                  url = super(path, prefix)
         | 
| 12 | 
            +
                def asset_url(path, prefix="", options={})
         | 
| 13 | 
            +
                  url = super(path, prefix, options)
         | 
| 14 14 |  | 
| 15 15 | 
             
                  unless global_asset_at? url
         | 
| 16 16 | 
             
                    current_dir = Pathname('/' + current_resource.destination_path)
         | 
| 17 17 | 
             
                    url = Pathname(url).relative_path_from(current_dir.dirname).to_s
         | 
| 18 18 | 
             
                  end
         | 
| 19 19 |  | 
| 20 | 
            -
                  # middleman assumes your assets live at the top level, but they may be in the  | 
| 20 | 
            +
                  # middleman assumes your assets live at the top level, but they may be in the nested repos instead
         | 
| 21 21 | 
             
                  # here we start at top level and dive down until we find the real asset
         | 
| 22 22 | 
             
                  current_page_path_parts = current_resource.destination_path.split('/')
         | 
| 23 23 | 
             
                  current_page_path_parts.pop
         | 
| @@ -42,4 +42,6 @@ class SubmoduleAwareAssets < ::Middleman::Extension | |
| 42 42 |  | 
| 43 43 | 
             
            end
         | 
| 44 44 |  | 
| 45 | 
            -
            ::Middleman::Extensions.register(: | 
| 45 | 
            +
            ::Middleman::Extensions.register(:subdirectory_aware_assets, SubdirectoryAwareAssets)
         | 
| 46 | 
            +
             | 
| 47 | 
            +
             | 
    
        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:  | 
| 4 | 
            +
              version: 5.0.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Mike Grafton
         | 
| @@ -15,7 +15,7 @@ authors: | |
| 15 15 | 
             
            autorequire: 
         | 
| 16 16 | 
             
            bindir: install_bin
         | 
| 17 17 | 
             
            cert_chain: []
         | 
| 18 | 
            -
            date: 2015- | 
| 18 | 
            +
            date: 2015-08-26 00:00:00.000000000 Z
         | 
| 19 19 | 
             
            dependencies:
         | 
| 20 20 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 21 21 | 
             
              name: fog-aws
         | 
| @@ -65,14 +65,28 @@ dependencies: | |
| 65 65 | 
             
                requirements:
         | 
| 66 66 | 
             
                - - ~>
         | 
| 67 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: 3. | 
| 68 | 
            +
                    version: 3.4.0
         | 
| 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 | 
            -
                    version: 3. | 
| 75 | 
            +
                    version: 3.4.0
         | 
| 76 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 77 | 
            +
              name: middleman-livereload
         | 
| 78 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 79 | 
            +
                requirements:
         | 
| 80 | 
            +
                - - ~>
         | 
| 81 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            +
                    version: 3.4.3
         | 
| 83 | 
            +
              type: :runtime
         | 
| 84 | 
            +
              prerelease: false
         | 
| 85 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 86 | 
            +
                requirements:
         | 
| 87 | 
            +
                - - ~>
         | 
| 88 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            +
                    version: 3.4.3
         | 
| 76 90 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 77 91 | 
             
              name: middleman-syntax
         | 
| 78 92 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -87,6 +101,20 @@ dependencies: | |
| 87 101 | 
             
                - - ~>
         | 
| 88 102 | 
             
                  - !ruby/object:Gem::Version
         | 
| 89 103 | 
             
                    version: '2.0'
         | 
| 104 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 105 | 
            +
              name: rouge
         | 
| 106 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 107 | 
            +
                requirements:
         | 
| 108 | 
            +
                - - '!='
         | 
| 109 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 110 | 
            +
                    version: 1.9.1
         | 
| 111 | 
            +
              type: :runtime
         | 
| 112 | 
            +
              prerelease: false
         | 
| 113 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 114 | 
            +
                requirements:
         | 
| 115 | 
            +
                - - '!='
         | 
| 116 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 117 | 
            +
                    version: 1.9.1
         | 
| 90 118 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 91 119 | 
             
              name: redcarpet
         | 
| 92 120 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -284,9 +312,9 @@ files: | |
| 284 312 | 
             
            - lib/bookbinder/commands/tag.rb
         | 
| 285 313 | 
             
            - lib/bookbinder/commands/update_local_doc_repos.rb
         | 
| 286 314 | 
             
            - lib/bookbinder/commands/version.rb
         | 
| 315 | 
            +
            - lib/bookbinder/commands/watch.rb
         | 
| 287 316 | 
             
            - lib/bookbinder/config/archive_menu_configuration.rb
         | 
| 288 317 | 
             
            - lib/bookbinder/config/aws_credentials.rb
         | 
| 289 | 
            -
            - lib/bookbinder/config/bind_config_factory.rb
         | 
| 290 318 | 
             
            - lib/bookbinder/config/cf_credentials.rb
         | 
| 291 319 | 
             
            - lib/bookbinder/config/checkers/archive_menu_checker.rb
         | 
| 292 320 | 
             
            - lib/bookbinder/config/checkers/dita_section_checker.rb
         | 
| @@ -295,7 +323,6 @@ files: | |
| 295 323 | 
             
            - lib/bookbinder/config/checkers/required_keys_checker.rb
         | 
| 296 324 | 
             
            - lib/bookbinder/config/configuration.rb
         | 
| 297 325 | 
             
            - lib/bookbinder/config/fetcher.rb
         | 
| 298 | 
            -
            - lib/bookbinder/config/remote_bind_configuration.rb
         | 
| 299 326 | 
             
            - lib/bookbinder/config/remote_yaml_credential_provider.rb
         | 
| 300 327 | 
             
            - lib/bookbinder/config/section_config.rb
         | 
| 301 328 | 
             
            - lib/bookbinder/config/validator.rb
         | 
| @@ -326,7 +353,6 @@ files: | |
| 326 353 | 
             
            - lib/bookbinder/ingest/missing_working_copy.rb
         | 
| 327 354 | 
             
            - lib/bookbinder/ingest/repo_identifier.rb
         | 
| 328 355 | 
             
            - lib/bookbinder/ingest/section_repository.rb
         | 
| 329 | 
            -
            - lib/bookbinder/ingest/section_repository_factory.rb
         | 
| 330 356 | 
             
            - lib/bookbinder/ingest/update_failure.rb
         | 
| 331 357 | 
             
            - lib/bookbinder/ingest/update_success.rb
         | 
| 332 358 | 
             
            - lib/bookbinder/ingest/working_copy.rb
         | 
| @@ -360,7 +386,7 @@ files: | |
| 360 386 | 
             
            - master_middleman/bookbinder_helpers.rb
         | 
| 361 387 | 
             
            - master_middleman/config.rb
         | 
| 362 388 | 
             
            - master_middleman/quicklinks_renderer.rb
         | 
| 363 | 
            -
            - master_middleman/ | 
| 389 | 
            +
            - master_middleman/subdirectory_aware_assets.rb
         | 
| 364 390 | 
             
            - install_bin/bookbinder
         | 
| 365 391 | 
             
            homepage: https://github.com/pivotal-cf/bookbinder
         | 
| 366 392 | 
             
            licenses:
         | 
| @@ -1,28 +0,0 @@ | |
| 1 | 
            -
            require_relative 'remote_bind_configuration'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module Bookbinder
         | 
| 4 | 
            -
              module Config
         | 
| 5 | 
            -
                class BindConfigFactory
         | 
| 6 | 
            -
                  def initialize(version_control_system, config_fetcher)
         | 
| 7 | 
            -
                    @version_control_system = version_control_system
         | 
| 8 | 
            -
                    @config_fetcher = config_fetcher
         | 
| 9 | 
            -
                  end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                  def produce(bind_source)
         | 
| 12 | 
            -
                    if %w(remote github).include?(bind_source) && config.has_option?('versions')
         | 
| 13 | 
            -
                      RemoteBindConfiguration.new(version_control_system, config).fetch
         | 
| 14 | 
            -
                    else
         | 
| 15 | 
            -
                      config
         | 
| 16 | 
            -
                    end
         | 
| 17 | 
            -
                  end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                  private
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                  def config
         | 
| 22 | 
            -
                    config_fetcher.fetch_config
         | 
| 23 | 
            -
                  end
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                  attr_reader :version_control_system, :config_fetcher
         | 
| 26 | 
            -
                end
         | 
| 27 | 
            -
              end
         | 
| 28 | 
            -
            end
         | 
| @@ -1,44 +0,0 @@ | |
| 1 | 
            -
            require 'yaml'
         | 
| 2 | 
            -
            require_relative '../ingest/destination_directory'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            module Bookbinder
         | 
| 5 | 
            -
              module Config
         | 
| 6 | 
            -
                class RemoteBindConfiguration
         | 
| 7 | 
            -
                  VersionUnsupportedError = Class.new(RuntimeError)
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                  def initialize(version_control_system, base_config)
         | 
| 10 | 
            -
                    @version_control_system = version_control_system
         | 
| 11 | 
            -
                    @base_config = base_config
         | 
| 12 | 
            -
                  end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                  def fetch
         | 
| 15 | 
            -
                    base_config.merge_sections(base_config.versions.flat_map { |version| sections_from(version) })
         | 
| 16 | 
            -
                  end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                  private
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                  attr_reader :version_control_system, :base_config
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                  def sections_from(version)
         | 
| 23 | 
            -
                    sections = Configuration.parse(
         | 
| 24 | 
            -
                      YAML.load(
         | 
| 25 | 
            -
                      version_control_system.read_file(
         | 
| 26 | 
            -
                        'config.yml',
         | 
| 27 | 
            -
                        from_repo: base_config.book_repo_url,
         | 
| 28 | 
            -
                        checkout: version
         | 
| 29 | 
            -
                      )
         | 
| 30 | 
            -
                    )).sections
         | 
| 31 | 
            -
                    raise VersionUnsupportedError.new(version) if sections.empty?
         | 
| 32 | 
            -
             | 
| 33 | 
            -
                    sections.map do |section|
         | 
| 34 | 
            -
                      section.merge(
         | 
| 35 | 
            -
                        Config::SectionConfig.new(
         | 
| 36 | 
            -
                          'repository' => { 'name' => section.repo_name, 'ref' => version },
         | 
| 37 | 
            -
                          'directory' => File.join(version, section.desired_directory_name)
         | 
| 38 | 
            -
                        )
         | 
| 39 | 
            -
                      )
         | 
| 40 | 
            -
                    end
         | 
| 41 | 
            -
                  end
         | 
| 42 | 
            -
                end
         | 
| 43 | 
            -
              end
         | 
| 44 | 
            -
            end
         | 
| @@ -1,19 +0,0 @@ | |
| 1 | 
            -
            require_relative 'section_repository'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module Bookbinder
         | 
| 4 | 
            -
              module Ingest
         | 
| 5 | 
            -
                class SectionRepositoryFactory
         | 
| 6 | 
            -
                  def initialize(logger)
         | 
| 7 | 
            -
                    @logger = logger
         | 
| 8 | 
            -
                  end
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                  def produce(cloner)
         | 
| 11 | 
            -
                    SectionRepository.new(logger, cloner)
         | 
| 12 | 
            -
                  end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                  private
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                  attr_reader :logger
         | 
| 17 | 
            -
                end
         | 
| 18 | 
            -
              end
         | 
| 19 | 
            -
            end
         |