softcover 1.0.beta1 → 1.0.beta2
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/softcover/book.rb +27 -23
- data/lib/softcover/cli.rb +4 -0
- data/lib/softcover/client.rb +3 -2
- data/lib/softcover/commands/publisher.rb +8 -8
- data/lib/softcover/version.rb +1 -1
- data/softcover.gemspec +1 -1
- data/spec/commands/publisher_spec.rb +6 -4
- data/spec/webmock_helpers.rb +7 -3
- metadata +4 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 9ccab0f06964521c03fd7c56a996de31eabd757b
         | 
| 4 | 
            +
              data.tar.gz: 643ddcb936aa0f665b58427f0be674872e411a9f
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 2e23b52f39af0eee6b25bb2f6d7c45b9dc46ac492cc68234385dba25716df4731caea95ed49c0a4138532ea5d6d28a95a43006f0509962af06f63f8d3a0a17ef
         | 
| 7 | 
            +
              data.tar.gz: 77452de4891b2a2df57c256030c224248a50d8d33d4626ade977658c6322ace645617b7ebf7c902df891a5a6a79fcf7bdcdbe44997ad6dc88a582eb1150825da
         | 
    
        data/lib/softcover/book.rb
    CHANGED
    
    | @@ -93,25 +93,29 @@ class Softcover::Book | |
| 93 93 | 
             
                end
         | 
| 94 94 | 
             
              end
         | 
| 95 95 |  | 
| 96 | 
            -
              def create_or_update
         | 
| 96 | 
            +
              def create_or_update(options={})
         | 
| 97 97 | 
             
                raise "HTML not built!" if Dir['html/*'].empty?
         | 
| 98 98 |  | 
| 99 | 
            -
                 | 
| 100 | 
            -
             | 
| 101 | 
            -
             | 
| 102 | 
            -
             | 
| 103 | 
            -
             | 
| 104 | 
            -
             | 
| 105 | 
            -
             | 
| 106 | 
            -
             | 
| 107 | 
            -
             | 
| 108 | 
            -
             | 
| 109 | 
            -
             | 
| 110 | 
            -
             | 
| 111 | 
            -
             | 
| 112 | 
            -
             | 
| 113 | 
            -
             | 
| 114 | 
            -
             | 
| 99 | 
            +
                params = {
         | 
| 100 | 
            +
                  id: id,
         | 
| 101 | 
            +
                  files: files,
         | 
| 102 | 
            +
                  title: title,
         | 
| 103 | 
            +
                  slug: slug,
         | 
| 104 | 
            +
                  subtitle: subtitle,
         | 
| 105 | 
            +
                  description: description,
         | 
| 106 | 
            +
                  chapters: chapter_attributes,
         | 
| 107 | 
            +
                  prices: prices,
         | 
| 108 | 
            +
                  faq: faq,
         | 
| 109 | 
            +
                  testimonials: testimonials,
         | 
| 110 | 
            +
                  marketing_content: marketing_content,
         | 
| 111 | 
            +
                  contact_email: contact_email,
         | 
| 112 | 
            +
                  hide_softcover_footer: hide_softcover_footer,
         | 
| 113 | 
            +
                  authors: authors,
         | 
| 114 | 
            +
                  ga_account: ga_account,
         | 
| 115 | 
            +
                  remove_unused_media_bundles: options[:remove_unused_media_bundles]
         | 
| 116 | 
            +
                }
         | 
| 117 | 
            +
             | 
| 118 | 
            +
                res = @client.create_or_update_book params
         | 
| 115 119 |  | 
| 116 120 | 
             
                if res['errors']
         | 
| 117 121 | 
             
                  @errors = res['errors']
         | 
| @@ -180,14 +184,14 @@ class Softcover::Book | |
| 180 184 | 
             
              # => get checksums for all included files
         | 
| 181 185 | 
             
              # => send each to /media API endpoint and then upload
         | 
| 182 186 |  | 
| 183 | 
            -
              def process_media
         | 
| 187 | 
            +
              def process_media(options={})
         | 
| 184 188 | 
             
                Dir["media/*"].each do |media_dir|
         | 
| 185 189 | 
             
                  next unless File.directory?(media_dir) && !(media_dir =~ /^\./)
         | 
| 186 | 
            -
                  process_media_directory media_dir
         | 
| 190 | 
            +
                  process_media_directory media_dir, options
         | 
| 187 191 | 
             
                end
         | 
| 188 192 | 
             
              end
         | 
| 189 193 |  | 
| 190 | 
            -
              def process_media_directory(dir)
         | 
| 194 | 
            +
              def process_media_directory(dir, options={})
         | 
| 191 195 | 
             
                return false if @processed_media.include?(dir)
         | 
| 192 196 |  | 
| 193 197 | 
             
                puts "Processing #{dir} directory..."
         | 
| @@ -196,7 +200,7 @@ class Softcover::Book | |
| 196 200 | 
             
                  file.ready?
         | 
| 197 201 | 
             
                end
         | 
| 198 202 |  | 
| 199 | 
            -
                upload_media! dir, files_to_upload
         | 
| 203 | 
            +
                upload_media! dir, files_to_upload, options
         | 
| 200 204 |  | 
| 201 205 | 
             
                @processed_media.push dir
         | 
| 202 206 | 
             
              end
         | 
| @@ -207,13 +211,13 @@ class Softcover::Book | |
| 207 211 | 
             
                end.compact
         | 
| 208 212 | 
             
              end
         | 
| 209 213 |  | 
| 210 | 
            -
              def upload_media!(path, files)
         | 
| 214 | 
            +
              def upload_media!(path, files, options={})
         | 
| 211 215 | 
             
                return if files.empty?
         | 
| 212 216 |  | 
| 213 217 | 
             
                manifest_path = File.join(path, "manifest.yml")
         | 
| 214 218 | 
             
                manifest = File.exists?(manifest_path) ? File.read(manifest_path) : nil
         | 
| 215 219 |  | 
| 216 | 
            -
                res = @client.get_media_upload_params path, files, manifest
         | 
| 220 | 
            +
                res = @client.get_media_upload_params path, files, manifest, options
         | 
| 217 221 |  | 
| 218 222 | 
             
                if res['upload_params']
         | 
| 219 223 | 
             
                  media_uploader = Softcover::Uploader.new res
         | 
    
        data/lib/softcover/cli.rb
    CHANGED
    
    | @@ -137,6 +137,8 @@ module Softcover | |
| 137 137 | 
             
                                      desc: "Quiet output", type: :boolean
         | 
| 138 138 | 
             
                method_option :silent, aliases: '-s',
         | 
| 139 139 | 
             
                                       desc: "Silent output", type: :boolean
         | 
| 140 | 
            +
                method_option :remove_unused_media_bundles, aliases: '-r',
         | 
| 141 | 
            +
                                       desc: "Remove unused media bundles", type: :boolean
         | 
| 140 142 | 
             
                def publish
         | 
| 141 143 | 
             
                  require 'softcover/commands/publisher'
         | 
| 142 144 |  | 
| @@ -151,6 +153,8 @@ module Softcover | |
| 151 153 | 
             
                  desc: "Run as daemon", type: :boolean
         | 
| 152 154 | 
             
                method_option :watch, aliases: '-w', type: :boolean,
         | 
| 153 155 | 
             
                  force: false, desc: "Watch a directory to auto upload."
         | 
| 156 | 
            +
                method_option :remove_unused_media_files, aliases: '-r',
         | 
| 157 | 
            +
                                       desc: "Remove unused media files", type: :boolean
         | 
| 154 158 |  | 
| 155 159 | 
             
                # TODO: make screencasts dir .book configurable
         | 
| 156 160 | 
             
                define_method "publish:media" do |dir=
         | 
    
        data/lib/softcover/client.rb
    CHANGED
    
    | @@ -66,11 +66,12 @@ module Softcover | |
| 66 66 | 
             
                end
         | 
| 67 67 |  | 
| 68 68 | 
             
                # ============ Media ===========
         | 
| 69 | 
            -
                def get_media_upload_params(path, files, manifest=nil)
         | 
| 69 | 
            +
                def get_media_upload_params(path, files, manifest=nil, options={})
         | 
| 70 70 | 
             
                  JSON post path_for(:books, book.id, :media),
         | 
| 71 71 | 
             
                    path: path,
         | 
| 72 72 | 
             
                    files: files,
         | 
| 73 | 
            -
                    manifest: manifest
         | 
| 73 | 
            +
                    manifest: manifest,
         | 
| 74 | 
            +
                    remove_unused_media_files: options[:remove_unused_media_files]
         | 
| 74 75 | 
             
                  # TODO: handle errors
         | 
| 75 76 | 
             
                end
         | 
| 76 77 |  | 
| @@ -7,7 +7,7 @@ module Softcover::Commands::Publisher | |
| 7 7 | 
             
              def publish!(options={})
         | 
| 8 8 | 
             
                return false unless current_book
         | 
| 9 9 |  | 
| 10 | 
            -
                if current_book.create_or_update
         | 
| 10 | 
            +
                if current_book.create_or_update(options)
         | 
| 11 11 | 
             
                  require 'ruby-progressbar'
         | 
| 12 12 | 
             
                  require 'curb'
         | 
| 13 13 | 
             
                  unless options[:quiet] || options[:silent]
         | 
| @@ -47,18 +47,18 @@ module Softcover::Commands::Publisher | |
| 47 47 |  | 
| 48 48 | 
             
                if options[:daemon]
         | 
| 49 49 | 
             
                  pid = fork do
         | 
| 50 | 
            -
                    run_publish_media
         | 
| 50 | 
            +
                    run_publish_media(options)
         | 
| 51 51 | 
             
                  end
         | 
| 52 52 |  | 
| 53 53 | 
             
                  puts "Daemonized, pid: #{pid}"
         | 
| 54 54 | 
             
                else
         | 
| 55 | 
            -
                  run_publish_media
         | 
| 55 | 
            +
                  run_publish_media(options)
         | 
| 56 56 | 
             
                end
         | 
| 57 57 |  | 
| 58 58 | 
             
                current_book
         | 
| 59 59 | 
             
              end
         | 
| 60 60 |  | 
| 61 | 
            -
              def run_publish_media
         | 
| 61 | 
            +
              def run_publish_media(options={})
         | 
| 62 62 | 
             
                if @watch
         | 
| 63 63 | 
             
                  puts "Watching..."
         | 
| 64 64 |  | 
| @@ -69,7 +69,7 @@ module Softcover::Commands::Publisher | |
| 69 69 |  | 
| 70 70 | 
             
                  begin
         | 
| 71 71 | 
             
                    loop do
         | 
| 72 | 
            -
                      process_media
         | 
| 72 | 
            +
                      process_media(options)
         | 
| 73 73 | 
             
                      sleep 1
         | 
| 74 74 | 
             
                    end
         | 
| 75 75 | 
             
                  rescue Interrupt
         | 
| @@ -77,13 +77,13 @@ module Softcover::Commands::Publisher | |
| 77 77 | 
             
                    exit_with_message
         | 
| 78 78 | 
             
                  end
         | 
| 79 79 | 
             
                else
         | 
| 80 | 
            -
                  process_media
         | 
| 80 | 
            +
                  process_media(options)
         | 
| 81 81 | 
             
                  exit_with_message
         | 
| 82 82 | 
             
                end
         | 
| 83 83 | 
             
              end
         | 
| 84 84 |  | 
| 85 | 
            -
              def process_media
         | 
| 86 | 
            -
                current_book.process_media
         | 
| 85 | 
            +
              def process_media(options={})
         | 
| 86 | 
            +
                current_book.process_media(options)
         | 
| 87 87 | 
             
              end
         | 
| 88 88 |  | 
| 89 89 | 
             
              def exit_with_message
         | 
    
        data/lib/softcover/version.rb
    CHANGED
    
    
    
        data/softcover.gemspec
    CHANGED
    
    | @@ -18,7 +18,7 @@ Gem::Specification.new do |gem| | |
| 18 18 | 
             
              gem.test_files    = gem.files.grep(%r{^(test|spec|features)/})
         | 
| 19 19 | 
             
              gem.require_paths = ["lib"]
         | 
| 20 20 |  | 
| 21 | 
            -
              gem.add_dependency 'polytexnic', '~> 1.0. | 
| 21 | 
            +
              gem.add_dependency 'polytexnic', '~> 1.0.beta2'
         | 
| 22 22 | 
             
              gem.add_dependency 'msgpack', '~> 0.4.2'
         | 
| 23 23 | 
             
              gem.add_dependency 'nokogiri', '~> 1.6.0'
         | 
| 24 24 | 
             
              gem.add_dependency 'thor', '~> 0.18.1'
         | 
| @@ -5,6 +5,8 @@ describe Softcover::Commands::Publisher do | |
| 5 5 | 
             
              before(:all) { generate_book }
         | 
| 6 6 | 
             
              after(:all)  { remove_book }
         | 
| 7 7 |  | 
| 8 | 
            +
              let(:publish_options) { { remove_unused_media_bundles: true } }
         | 
| 9 | 
            +
             | 
| 8 10 | 
             
              describe "#publish" do
         | 
| 9 11 | 
             
                context "publishing from non book directory" do
         | 
| 10 12 | 
             
                  before do
         | 
| @@ -24,7 +26,7 @@ describe Softcover::Commands::Publisher do | |
| 24 26 | 
             
                  end
         | 
| 25 27 |  | 
| 26 28 | 
             
                  it "publishes" do
         | 
| 27 | 
            -
                    expect(subject.publish!).to be_true
         | 
| 29 | 
            +
                    expect(subject.publish!(publish_options)).to be_true
         | 
| 28 30 | 
             
                  end
         | 
| 29 31 | 
             
                end
         | 
| 30 32 | 
             
              end
         | 
| @@ -45,7 +47,7 @@ describe Softcover::Commands::Publisher do | |
| 45 47 | 
             
                    chdir_to_book
         | 
| 46 48 | 
             
                    stub_create_book book
         | 
| 47 49 | 
             
                    stub_media_upload book
         | 
| 48 | 
            -
                    subject.publish!
         | 
| 50 | 
            +
                    subject.publish! publish_options
         | 
| 49 51 | 
             
                    stub_destroy_book book
         | 
| 50 52 | 
             
                  end
         | 
| 51 53 |  | 
| @@ -64,7 +66,7 @@ describe Softcover::Commands::Publisher do | |
| 64 66 | 
             
                    chdir_to_book
         | 
| 65 67 | 
             
                    stub_create_book book
         | 
| 66 68 | 
             
                    stub_media_upload book
         | 
| 67 | 
            -
                    subject.publish!
         | 
| 69 | 
            +
                    subject.publish!(publish_options)
         | 
| 68 70 | 
             
                    Softcover::BookConfig['id'] = 0
         | 
| 69 71 | 
             
                    stub_destroy_book_not_found book
         | 
| 70 72 | 
             
                  end
         | 
| @@ -79,7 +81,7 @@ describe Softcover::Commands::Publisher do | |
| 79 81 | 
             
                    chdir_to_book
         | 
| 80 82 | 
             
                    stub_create_book book
         | 
| 81 83 | 
             
                    stub_media_upload book
         | 
| 82 | 
            -
                    subject.publish!
         | 
| 84 | 
            +
                    subject.publish! publish_options
         | 
| 83 85 | 
             
                    Dir.chdir(File.dirname(__FILE__))
         | 
| 84 86 | 
             
                  end
         | 
| 85 87 |  | 
    
        data/spec/webmock_helpers.rb
    CHANGED
    
    | @@ -67,7 +67,8 @@ module WebmockHelpers | |
| 67 67 | 
             
                       contact_email: book.contact_email,
         | 
| 68 68 | 
             
                       hide_softcover_footer: book.hide_custom_domain_footer,
         | 
| 69 69 | 
             
                       authors: book.authors,
         | 
| 70 | 
            -
                       ga_account: book.ga_account
         | 
| 70 | 
            +
                       ga_account: book.ga_account,
         | 
| 71 | 
            +
                       remove_unused_media_bundles: true
         | 
| 71 72 | 
             
                    }.to_json,
         | 
| 72 73 | 
             
                       :headers => headers).
         | 
| 73 74 | 
             
                  to_return(:status => 200, :body => return_body, :headers => {})
         | 
| @@ -122,7 +123,7 @@ module WebmockHelpers | |
| 122 123 | 
             
                             to_return(:status => 200, :body => "", :headers => {})
         | 
| 123 124 | 
             
              end
         | 
| 124 125 |  | 
| 125 | 
            -
              def stub_media_upload(book, dir='ebooks')
         | 
| 126 | 
            +
              def stub_media_upload(book, dir='ebooks', options={})
         | 
| 126 127 | 
             
                stub_s3_post
         | 
| 127 128 | 
             
                stub_create_book(book)
         | 
| 128 129 |  | 
| @@ -132,7 +133,10 @@ module WebmockHelpers | |
| 132 133 | 
             
                              with(:body => {
         | 
| 133 134 | 
             
                                              path: dir,
         | 
| 134 135 | 
             
                                              files: files,
         | 
| 135 | 
            -
                                              manifest: nil | 
| 136 | 
            +
                                              manifest: nil,
         | 
| 137 | 
            +
                                              remove_unused_media_files:
         | 
| 138 | 
            +
                                                options[:remove_unused_media_files]
         | 
| 139 | 
            +
                                            }.to_json,
         | 
| 136 140 | 
             
                                   :headers => headers).
         | 
| 137 141 | 
             
                              to_return(:status => 200, :body => {
         | 
| 138 142 | 
             
                                        upload_params: files.map { |file|
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: softcover
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0. | 
| 4 | 
            +
              version: 1.0.beta2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Michael Hartl
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2014- | 
| 12 | 
            +
            date: 2014-07-01 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: polytexnic
         | 
| @@ -17,14 +17,14 @@ dependencies: | |
| 17 17 | 
             
                requirements:
         | 
| 18 18 | 
             
                - - ~>
         | 
| 19 19 | 
             
                  - !ruby/object:Gem::Version
         | 
| 20 | 
            -
                    version: 1.0. | 
| 20 | 
            +
                    version: 1.0.beta2
         | 
| 21 21 | 
             
              type: :runtime
         | 
| 22 22 | 
             
              prerelease: false
         | 
| 23 23 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 24 24 | 
             
                requirements:
         | 
| 25 25 | 
             
                - - ~>
         | 
| 26 26 | 
             
                  - !ruby/object:Gem::Version
         | 
| 27 | 
            -
                    version: 1.0. | 
| 27 | 
            +
                    version: 1.0.beta2
         | 
| 28 28 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 29 29 | 
             
              name: msgpack
         | 
| 30 30 | 
             
              requirement: !ruby/object:Gem::Requirement
         |