photish 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.simplecov +19 -0
  3. data/README.md +7 -7
  4. data/Rakefile +1 -1
  5. data/TODO.md +6 -7
  6. data/exe/photish +0 -2
  7. data/lib/photish.rb +2 -0
  8. data/lib/photish/assets/Gemfile +3 -0
  9. data/lib/photish/assets/barebones/site/_templates/collection.slim +10 -0
  10. data/lib/photish/assets/barebones/site/_templates/layout.slim +7 -0
  11. data/lib/photish/assets/barebones/site/styles/basic.css +4 -0
  12. data/lib/photish/assets/config.yml +0 -10
  13. data/lib/photish/assets/photos/Big Dogs/Tired Dogs.jpg b/data/lib/photish/assets/example/photos/Big Dogs/Tired → Dogs.jpg +0 -0
  14. data/lib/photish/assets/photos/Big Dogs/Winking Dog.jpg b/data/lib/photish/assets/example/photos/Big Dogs/Winking → Dog.jpg +0 -0
  15. data/lib/photish/assets/photos/Small Dogs/Fluffy Dogs/Exhausted Dogs.jpg b/data/lib/photish/assets/example/photos/Small Dogs/Fluffy Dogs/Exhausted → Dogs.jpg +0 -0
  16. data/lib/photish/assets/photos/Small Dogs/Fluffy Dogs/Exhausted Dogs.yml b/data/lib/photish/assets/example/photos/Small Dogs/Fluffy Dogs/Exhausted → Dogs.yml +0 -0
  17. data/lib/photish/assets/photos/Small Dogs/Fluffy Dogs/Many Dogs.jpg b/data/lib/photish/assets/example/photos/Small Dogs/Fluffy Dogs/Many → Dogs.jpg +0 -0
  18. data/lib/photish/assets/photos/Small Dogs/Fluffy Dogs/Many Dogs.yml b/data/lib/photish/assets/example/photos/Small Dogs/Fluffy Dogs/Many → Dogs.yml +0 -0
  19. data/lib/photish/assets/photos/Small Dogs/Sleepy Dog.jpg b/data/lib/photish/assets/example/photos/Small Dogs/Sleepy → Dog.jpg +0 -0
  20. data/lib/photish/assets/photos/Small Dogs/Sleepy Dog.yml b/data/lib/photish/assets/example/photos/Small Dogs/Sleepy → Dog.yml +0 -0
  21. data/lib/photish/assets/photos/Small Dogs/Squishy Dogs/Big Ear Dog.jpg b/data/lib/photish/assets/example/photos/Small Dogs/Squishy Dogs/Big Ear → Dog.jpg +0 -0
  22. data/lib/photish/assets/{site → example/site}/_plugins/footer_links.rb +0 -6
  23. data/lib/photish/assets/{site → example/site}/_plugins/tmpdir_deploy.rb +0 -0
  24. data/lib/photish/assets/{site → example/site}/_plugins/yell_loud.rb +0 -0
  25. data/lib/photish/assets/{site → example/site}/_templates/album.slim +1 -1
  26. data/lib/photish/assets/{site → example/site}/_templates/collection.slim +1 -1
  27. data/lib/photish/assets/{site → example/site}/_templates/layout.slim +0 -0
  28. data/lib/photish/assets/{site → example/site}/_templates/photo.slim +0 -0
  29. data/lib/photish/assets/{site → example/site}/custom.html +0 -0
  30. data/lib/photish/assets/{site → example/site}/images/crumbs.gif +0 -0
  31. data/lib/photish/assets/{site → example/site}/styles/basic.css +0 -0
  32. data/lib/photish/cli/interface.rb +1 -0
  33. data/lib/photish/command/base.rb +1 -1
  34. data/lib/photish/command/generate.rb +3 -1
  35. data/lib/photish/command/host.rb +1 -1
  36. data/lib/photish/command/init.rb +33 -8
  37. data/lib/photish/config/default_config.rb +1 -0
  38. data/lib/photish/log/logger.rb +8 -3
  39. data/lib/photish/render/change_manifest.rb +53 -0
  40. data/lib/photish/render/image_conversion.rb +57 -11
  41. data/lib/photish/render/page.rb +15 -6
  42. data/lib/photish/render/site.rb +5 -3
  43. data/lib/photish/version.rb +1 -1
  44. data/photish.gemspec +3 -2
  45. metadata +57 -37
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1d2196afefb3930e090519fd81435fbba5c8347c
4
- data.tar.gz: 5b2213f00cf0521772295fb2e21f84e764cfdbb1
3
+ metadata.gz: 5f8a0b8f1e4161d340f6021e13870235e33f6023
4
+ data.tar.gz: 957653b7e8c8c17beafbc7dfebf6dd6e1ed6fde6
5
5
  SHA512:
6
- metadata.gz: 3db008201ee711a28556bbd0c5b7d65f1e6dca3a6a0c775518c88e61881fd885f55ad11cfee2ab4b208144f4346dd92e6759bfd0f90f8146dc0c1ab4d079d5e0
7
- data.tar.gz: 732b2b201fabfc21593277d1c633bc8a54d4d464d658085871a626e12b5fe02f627f3de53082fd86374723a8620736ca2b32e18d551d8d0d2874d8a766bb1d22
6
+ metadata.gz: 47e2ba13affb3eb5598f1c5d88f4d593ebb9282aaed27b45e195ebf611fa38a12d8b7c5d9720e3c215371814fc9ee2a6c22a51d75fa0925f896003e2f24cb3ae
7
+ data.tar.gz: 876a3d8d56247e9e210c9f91cc43f275c71215d24d7c83b869ec815c9bcaf5972b09c21211c46e002cad079a021d1de053c7ec371fc63fede584232a96a20e1e
data/.simplecov ADDED
@@ -0,0 +1,19 @@
1
+ require 'codeclimate-test-reporter'
2
+
3
+ SimpleCov.start(CodeClimate::TestReporter.configuration.profile) do
4
+ filters.clear
5
+
6
+ add_filter do |src|
7
+ !(src.filename =~ /^#{SimpleCov.root}/) unless src.filename =~ /photish/
8
+ end
9
+
10
+ add_filter '/bin/'
11
+ add_filter '/coverage/'
12
+ add_filter '/exe/'
13
+ add_filter '/log/'
14
+ add_filter '/pkg/'
15
+
16
+ add_group 'Library', 'lib'
17
+ add_group 'Specs', 'spec'
18
+ add_group 'Features', ['features', 'tmp/aruba']
19
+ end
data/README.md CHANGED
@@ -288,22 +288,22 @@ The meanings and purpose of each field is defined below:
288
288
 
289
289
  Field | Purpose
290
290
  ---------------------- | -------
291
- `port` | the port number that the `photish host` command will bind to
291
+ `port` | the port number that the `photish host` command will bind to, default is `9876`
292
292
  `qualities` | an array of `name` and `params` fields for **Images**
293
293
  `qualities[]/name` | the name of the **Image** quality
294
294
  `qualities[]/params` | the parameters to be provided to the ImageMagick `convert` utility for the **Image** file quality
295
295
  `templates` | a listing of the various template files
296
- `templates/layout` | the layout template file in the `site/_templates` folder
297
- `templates/collection` | the collection template file in the `site/_templates` folder
298
- `templates/album` | the album template file in the `site/_templates` folder
299
- `templates/photo` | the photo template file in the `site/_templates` folder
296
+ `templates/layout` | the layout template file in the `site/_templates` folder, must be overridden if using a different template engine
297
+ `templates/collection` | the collection template file in the `site/_templates` folder, must be overridden if using a different template engine
298
+ `templates/album` | the album template file in the `site/_templates` folder, must be overridden if using a different template engine
299
+ `templates/photo` | the photo template file in the `site/_templates` folder, must be overridden if using a different template engine
300
300
  `logging` | a listing of the various logging options
301
301
  `logging/colorize` | when outputting to `STDOUT`, `true` to use color, `false` for none
302
302
  `logging/level` | the default logging level, it is advised to keep this at `info`
303
303
  `logging/output` | the appenders for the logger, `stdout` goes to `STDOUT`, `file` goes to `log/photish.log`
304
304
  `url` | a listing of the various url options
305
- `url/host` | default is to leave this configuration blank, however if you would like URLs generated with a specific host prefix, you can define it here
306
- `url/base` | default is to leave this configuration blank, if your website will be hosted in a sub folder and will not be accessible at the root of the host, you can specify the sub folder(s) here, this will also mean your website will be hosted in a sub folder when ran using `photish host`
305
+ `url/host` | if you would like URLs generated with a specific host prefix, you can define it here, otherwise leave it as '/' or do not set this configuration at all
306
+ `url/base` | if your website will be hosted in a sub folder and will not be accessible at the root of the host, you can specify the sub folder(s) here, this will also mean your website will be hosted in a sub folder when ran using `photish host`
307
307
 
308
308
  #### Customizing Templates
309
309
 
data/Rakefile CHANGED
@@ -7,7 +7,7 @@ require 'photish/rake/task'
7
7
  RSpec::Core::RakeTask.new(:spec)
8
8
 
9
9
  Cucumber::Rake::Task.new(:features) do |t|
10
- t.cucumber_opts = "features --format pretty"
10
+ t.cucumber_opts = "features --format pretty --tags ~@wip"
11
11
  end
12
12
 
13
13
  desc 'Gather code climate results'
data/TODO.md CHANGED
@@ -2,18 +2,17 @@
2
2
 
3
3
  ## In Progress
4
4
 
5
- 1. A `deploy` command as a gem to deploy to github pages, netlify, amazon s3
6
- 1. URL customization, relative, absolute with or without hostname URLs (for
7
- different host envs)
5
+ 1. Add feature test for change and regenerate
8
6
 
9
7
  ## Backlog
10
8
 
9
+ 1. Plugin as a gem to deploy to github pages, netlify, amazon s3
11
10
  1. Custom template rendering outside of `_templates` folder using `page.{type}`
12
11
  1. Proper asset pipeline for CSS
13
12
  1. A sitemap helper plugin for use in custom templates for example
14
13
  `sitemap.xml`
15
14
  1. Share on RubyWebToolkit, StaticGen, etc
16
- 1. RDoc documentation for classes
17
- 1. More intelligent regeneration based on changes
18
- 1. Change `init` to have `--example` and normal for barebones
19
- 1. Add `Gemfile` to `init`
15
+ 1. RDoc documentation for classes, perhaps use the badge too
16
+ 1. Provide generic way to override config from arguments to allow for host name
17
+ override on deploy etc.
18
+ 1. Video transcoding and template rendering
data/exe/photish CHANGED
@@ -1,11 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
  if ENV['COVERAGE']
3
3
  require 'simplecov'
4
- require 'codeclimate-test-reporter'
5
4
 
6
5
  SimpleCov.command_name "photish-binary-#{Process.pid}"
7
6
  SimpleCov.root(File.join(File.expand_path(File.dirname(__FILE__)), '..'))
8
- SimpleCov.start CodeClimate::TestReporter.configuration.profile
9
7
  end
10
8
 
11
9
  require 'photish'
data/lib/photish.rb CHANGED
@@ -13,6 +13,7 @@ require 'thor'
13
13
  require 'filemagic'
14
14
  require 'recursive_open_struct'
15
15
  require 'cgi'
16
+ require 'facter'
16
17
 
17
18
  # Photish
18
19
  require 'photish/plugin/type'
@@ -43,6 +44,7 @@ require 'photish/gallery/collection'
43
44
  require 'photish/render/page'
44
45
  require 'photish/render/site'
45
46
  require 'photish/render/image_conversion'
47
+ require 'photish/render/change_manifest'
46
48
  require 'photish/rake/task'
47
49
  require 'photish/version'
48
50
 
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "photish"
@@ -0,0 +1,10 @@
1
+ h2 Welcome
2
+ p This is a barebones Photish site with only the collection template.
3
+ p Run `photish init --example` for an example site.
4
+
5
+ h3 Getting started
6
+ ol
7
+ li Read the documentation on Github
8
+ li Copy your photos to the `./photos` directory
9
+ li Create templates for the different models in `./site/_templates`
10
+
@@ -0,0 +1,7 @@
1
+ doctype html
2
+ html
3
+ head
4
+ title Photish
5
+ link href="/styles/basic.css" media="screen" rel="stylesheet" type="text/css"
6
+ body
7
+ == yield
@@ -0,0 +1,4 @@
1
+ body {
2
+ font-family:sans-serif, arial, helvetica;
3
+ font-size:12pt;
4
+ }
@@ -1,16 +1,6 @@
1
1
  ---
2
- port: 9876
3
2
  qualities:
4
3
  - name: Original
5
4
  params: []
6
5
  - name: Low
7
6
  params: ['-resize', '200x200']
8
- templates:
9
- layout: layout.slim
10
- collection: collection.slim
11
- album: album.slim
12
- photo: photo.slim
13
- logging:
14
- colorize: true
15
- level: 'info'
16
- output: ['stdout', 'file']
@@ -26,11 +26,5 @@ module Photish::Plugin::FooterLinks
26
26
  end
27
27
  doc.to_html
28
28
  end
29
-
30
- private
31
-
32
- def text(link_text, seperator)
33
-
34
- end
35
29
  end
36
30
 
@@ -6,7 +6,7 @@ div.album
6
6
  - photos.each do |photo|
7
7
  div.album-photo
8
8
  a href=photo.url title=photo.name
9
- img src=photo.images.find{|i|i.quality_name=='Low'}.url alt=photo.name
9
+ img src=photo.images.find{ |i|i.quality_name=='Low' }.url alt=photo.name
10
10
 
11
11
  div.sub-albums
12
12
  - albums.each do |album|
@@ -7,4 +7,4 @@
7
7
  - album.all_photos.each do |photo|
8
8
  div.album-photo
9
9
  a href=photo.url title=photo.name
10
- img src=photo.images.find{|i|i.quality_name=='Low'}.url alt=photo.name
10
+ img src=photo.images.find{ |i| i.quality_name=='Low' }.url alt=photo.name
@@ -14,6 +14,7 @@ module Photish
14
14
  end
15
15
 
16
16
  desc "init", "Creates a basic Photish site structure"
17
+ option :example, type: :boolean
17
18
  def init
18
19
  Photish::Command::Init.new(options).execute
19
20
  end
@@ -12,7 +12,7 @@ module Photish
12
12
  run
13
13
  rescue => e
14
14
  log.fatal "An exception occured #{e.class} \"#{e.message}\" #{e.backtrace.join("\n")}"
15
- false
15
+ exit(false)
16
16
  end
17
17
  end
18
18
 
@@ -17,6 +17,7 @@ module Photish
17
17
  :qualities,
18
18
  :templates,
19
19
  :url,
20
+ :max_workers,
20
21
  to: :config
21
22
 
22
23
  def load_all_plugins
@@ -39,7 +40,8 @@ module Photish
39
40
  def render_whole_site
40
41
  Photish::Render::Site.new(templates,
41
42
  site_dir,
42
- output_dir)
43
+ output_dir,
44
+ max_workers)
43
45
  .all_for(collection)
44
46
  end
45
47
 
@@ -59,7 +59,7 @@ module Photish
59
59
  def regenerate_entire_site
60
60
  log.info "Regenerating site"
61
61
  Photish::Command::Generate.new(runtime_config)
62
- .execute
62
+ .execute
63
63
  end
64
64
  end
65
65
  end
@@ -2,15 +2,36 @@ module Photish
2
2
  module Command
3
3
  class Init < Base
4
4
  def run
5
- FileUtils.cp_r(config_file, Dir.pwd)
6
- FileUtils.cp_r(gitignore_file, File.join(Dir.pwd, '.gitignore'))
7
- FileUtils.cp_r(photo_dir, Dir.pwd)
8
- FileUtils.cp_r(site_dir, Dir.pwd)
5
+ if runtime_config.example
6
+ init_example
7
+ else
8
+ init_barebones
9
+ end
9
10
  log.info "Photish site initiated successfully"
10
11
  end
11
12
 
12
13
  private
13
14
 
15
+ def init_barebones
16
+ FileUtils.cp_r(config_file, Dir.pwd)
17
+ FileUtils.cp_r(gemfile_file, Dir.pwd)
18
+ FileUtils.cp_r(gitignore_file, File.join(Dir.pwd, '.gitignore'))
19
+ FileUtils.mkdir_p('photos')
20
+ FileUtils.cp_r(barebones_site_dir, Dir.pwd)
21
+ end
22
+
23
+ def init_example
24
+ FileUtils.cp_r(config_file, Dir.pwd)
25
+ FileUtils.cp_r(gemfile_file, Dir.pwd)
26
+ FileUtils.cp_r(gitignore_file, File.join(Dir.pwd, '.gitignore'))
27
+ FileUtils.cp_r(example_photo_dir, Dir.pwd)
28
+ FileUtils.cp_r(example_site_dir, Dir.pwd)
29
+ end
30
+
31
+ def gemfile_file
32
+ asset_path('Gemfile')
33
+ end
34
+
14
35
  def config_file
15
36
  asset_path('config.yml')
16
37
  end
@@ -19,12 +40,16 @@ module Photish
19
40
  asset_path('gitignore')
20
41
  end
21
42
 
22
- def photo_dir
23
- asset_path('photos')
43
+ def example_photo_dir
44
+ asset_path('example', 'photos')
45
+ end
46
+
47
+ def barebones_site_dir
48
+ asset_path('barebones', 'site')
24
49
  end
25
50
 
26
- def site_dir
27
- asset_path('site')
51
+ def example_site_dir
52
+ asset_path('example', 'site')
28
53
  end
29
54
 
30
55
  def asset_path(*path)
@@ -7,6 +7,7 @@ module Photish
7
7
  site_dir: File.join(Dir.pwd, 'site'),
8
8
  photo_dir: File.join(Dir.pwd, 'photos'),
9
9
  output_dir: File.join(Dir.pwd, 'output'),
10
+ max_workers: Facter.value('processors')['count'],
10
11
  qualities: [
11
12
  { name: 'Original',
12
13
  params: [] },
@@ -52,19 +52,24 @@ module Photish
52
52
  end
53
53
 
54
54
  def setup_stdout_output
55
- Logging.appenders.stdout(
55
+ stdout_appender = Logging.appenders.stdout(
56
56
  'stdout',
57
57
  layout: Logging.layouts.pattern(
58
58
  pattern: '[%d] %-5l %c: %m\n',
59
59
  color_scheme: 'bright'
60
60
  )
61
61
  )
62
- Logging.logger.root.add_appenders('stdout')
62
+ Logging.logger.root.add_appenders(stdout_appender)
63
63
  end
64
64
 
65
65
  def setup_file_output
66
66
  FileUtils.mkdir_p('log')
67
- file_appender = Logging.appenders.file('log/photish.log')
67
+ file_appender = Logging.appenders.file(
68
+ 'log/photish.log',
69
+ layout: Logging.layouts.pattern(
70
+ pattern: '[%d] %-5l %c: %m\n',
71
+ )
72
+ )
68
73
  Logging.logger.root.add_appenders(file_appender)
69
74
  end
70
75
  end
@@ -0,0 +1,53 @@
1
+ module Photish
2
+ module Render
3
+ class ChangeManifest
4
+ def initialize(output_dir)
5
+ @output_dir = output_dir
6
+ end
7
+
8
+ def record(key, file_path = nil)
9
+ update do |db|
10
+ db[key] = md5_of_file(file_path || key)
11
+ end
12
+ end
13
+
14
+ def changed?(key, file_path = nil)
15
+ md5_of_file(file_path || key) != old_md5_of_file(key)
16
+ end
17
+
18
+ def flush_to_disk
19
+ File.open(db_file, 'w') { |f| f.write((@db || {}).to_yaml) }
20
+ end
21
+
22
+ private
23
+
24
+ attr_reader :output_dir
25
+
26
+ def md5_of_file(file_path)
27
+ Digest::MD5.file(file_path).hexdigest
28
+ end
29
+
30
+ def old_md5_of_file(file_path)
31
+ read_from_file[file_path]
32
+ end
33
+
34
+ def update
35
+ db = read_from_file
36
+ yield(db)
37
+ write_to_file(db)
38
+ end
39
+
40
+ def read_from_file
41
+ @db ||= File.exist?(db_file) ? YAML.load_file(db_file) : {}
42
+ end
43
+
44
+ def write_to_file(db)
45
+ @db = db
46
+ end
47
+
48
+ def db_file
49
+ File.join(output_dir, '.changes.yml')
50
+ end
51
+ end
52
+ end
53
+ end
@@ -1,29 +1,75 @@
1
1
  module Photish
2
2
  module Render
3
3
  class ImageConversion
4
- def initialize(output_dir)
4
+ def initialize(output_dir, max_workers)
5
5
  @output_dir = output_dir
6
+ @max_workers = max_workers
6
7
  @log = Logging.logger[self]
7
8
  end
8
9
 
9
10
  def render(images)
10
- Array(images).each do |image|
11
- output_file = File.join(output_dir, image.url_parts)
12
- FileUtils.mkdir_p(File.join(output_dir, image.base_url_parts))
13
-
14
- MiniMagick::Tool::Convert.new do |convert|
15
- convert << image.path
16
- convert.merge!(image.quality_params)
17
- convert << output_file
18
- log.info "Performing image conversion #{convert.command}"
11
+ image_queue = to_queue(images)
12
+
13
+ log.info "Rendering #{images.count} across #{max_workers} threads"
14
+
15
+ workers = (0...max_workers).map do
16
+ Thread.new do
17
+ begin
18
+ while image = image_queue.pop(true)
19
+ convert(image) if changed?(output_path(image), image.path)
20
+ end
21
+ rescue ThreadError => e
22
+ log.info "Expected exception, queue is empty #{e.class} \"#{e.message}\" #{e.backtrace.join("\n")}"
23
+ end
19
24
  end
20
25
  end
26
+ workers.map(&:join)
27
+ flush_to_disk
21
28
  end
22
29
 
23
30
  private
24
31
 
25
32
  attr_reader :output_dir,
26
- :log
33
+ :log,
34
+ :max_workers
35
+
36
+ delegate :record,
37
+ :changed?,
38
+ :flush_to_disk,
39
+ to: :change_manifest
40
+
41
+ def to_queue(images)
42
+ image_queue = Queue.new
43
+ Array(images).each { |image| image_queue << image }
44
+ image_queue
45
+ end
46
+
47
+ def convert(image)
48
+ create_parent_directories(image)
49
+ convert_with_imagemagick(image)
50
+ record(output_path(image), image.path)
51
+ end
52
+
53
+ def convert_with_imagemagick(image)
54
+ MiniMagick::Tool::Convert.new do |convert|
55
+ convert << image.path
56
+ convert.merge!(image.quality_params)
57
+ convert << output_path(image)
58
+ log.info "Performing image conversion #{convert.command}"
59
+ end
60
+ end
61
+
62
+ def output_path(image)
63
+ File.join(output_dir, image.url_parts)
64
+ end
65
+
66
+ def create_parent_directories(image)
67
+ FileUtils.mkdir_p(File.join(output_dir, image.base_url_parts))
68
+ end
69
+
70
+ def change_manifest
71
+ @change_manifest ||= ChangeManifest.new(output_dir)
72
+ end
27
73
  end
28
74
  end
29
75
  end
@@ -9,6 +9,18 @@ module Photish
9
9
  end
10
10
 
11
11
  def render(models)
12
+ return template_missing unless File.exist?(template_file)
13
+ render_all(models)
14
+ end
15
+
16
+ private
17
+
18
+ attr_reader :template_file,
19
+ :layout_file,
20
+ :output_dir,
21
+ :log
22
+
23
+ def render_all(models)
12
24
  Array(models).each do |model|
13
25
  rendered_model = render_template_and_layout(model)
14
26
  output_model_file = relative_to_output_dir(model.url_parts)
@@ -21,12 +33,9 @@ module Photish
21
33
  end
22
34
  end
23
35
 
24
- private
25
-
26
- attr_reader :template_file,
27
- :layout_file,
28
- :output_dir,
29
- :log
36
+ def template_missing
37
+ log.info "Template not found #{template_file}, skipping rendering"
38
+ end
30
39
 
31
40
  def relative_to_output_dir(url_parts)
32
41
  File.join(output_dir, url_parts)
@@ -1,10 +1,11 @@
1
1
  module Photish
2
2
  module Render
3
3
  class Site
4
- def initialize(templates, site_dir, output_dir)
4
+ def initialize(templates, site_dir, output_dir, max_workers)
5
5
  @templates = templates
6
6
  @site_dir = site_dir
7
7
  @output_dir = output_dir
8
+ @max_workers = max_workers
8
9
  end
9
10
 
10
11
  def all_for(collection)
@@ -21,7 +22,8 @@ module Photish
21
22
 
22
23
  attr_reader :templates,
23
24
  :site_dir,
24
- :output_dir
25
+ :output_dir,
26
+ :max_workers
25
27
 
26
28
  def move_non_ignored_site_contents
27
29
  FileUtils.mkdir_p(output_dir)
@@ -29,7 +31,7 @@ module Photish
29
31
  end
30
32
 
31
33
  def image_conversion
32
- Photish::Render::ImageConversion.new(output_dir)
34
+ Photish::Render::ImageConversion.new(output_dir, max_workers)
33
35
  end
34
36
 
35
37
  def album_template
@@ -1,3 +1,3 @@
1
1
  module Photish
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
data/photish.gemspec CHANGED
@@ -28,13 +28,14 @@ Gem::Specification.new do |spec|
28
28
  spec.add_dependency "tilt", "~> 2.0"
29
29
  spec.add_dependency "mini_magick", "~> 4.3"
30
30
  spec.add_dependency "ruby-filemagic", "~> 0.7"
31
- spec.add_dependency "anemone", "~> 0.7"
32
31
  spec.add_dependency "mini_exiftool", "~> 2.5"
33
- spec.add_dependency "recursive-open-struct", "~> 0.6"
32
+ spec.add_dependency "recursive-open-struct", "~> 1.0"
34
33
  spec.add_dependency "nokogiri", "~> 1.6"
35
34
  spec.add_dependency "logging", "~> 2.0"
36
35
  spec.add_dependency "listen", "~> 3.0"
36
+ spec.add_dependency "facter", "~> 2.4"
37
37
 
38
+ spec.add_development_dependency "anemone", "~> 0.7"
38
39
  spec.add_development_dependency "bundler", "~> 1.10"
39
40
  spec.add_development_dependency "rake", "~> 10.0"
40
41
  spec.add_development_dependency "rspec"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: photish
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henry Lawson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-11-29 00:00:00.000000000 Z
11
+ date: 2015-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -94,20 +94,6 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0.7'
97
- - !ruby/object:Gem::Dependency
98
- name: anemone
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '0.7'
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '0.7'
111
97
  - !ruby/object:Gem::Dependency
112
98
  name: mini_exiftool
113
99
  requirement: !ruby/object:Gem::Requirement
@@ -128,14 +114,14 @@ dependencies:
128
114
  requirements:
129
115
  - - "~>"
130
116
  - !ruby/object:Gem::Version
131
- version: '0.6'
117
+ version: '1.0'
132
118
  type: :runtime
133
119
  prerelease: false
134
120
  version_requirements: !ruby/object:Gem::Requirement
135
121
  requirements:
136
122
  - - "~>"
137
123
  - !ruby/object:Gem::Version
138
- version: '0.6'
124
+ version: '1.0'
139
125
  - !ruby/object:Gem::Dependency
140
126
  name: nokogiri
141
127
  requirement: !ruby/object:Gem::Requirement
@@ -178,6 +164,34 @@ dependencies:
178
164
  - - "~>"
179
165
  - !ruby/object:Gem::Version
180
166
  version: '3.0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: facter
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '2.4'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '2.4'
181
+ - !ruby/object:Gem::Dependency
182
+ name: anemone
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '0.7'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '0.7'
181
195
  - !ruby/object:Gem::Dependency
182
196
  name: bundler
183
197
  requirement: !ruby/object:Gem::Requirement
@@ -305,6 +319,7 @@ files:
305
319
  - ".gitignore"
306
320
  - ".rspec"
307
321
  - ".rubocop.yml"
322
+ - ".simplecov"
308
323
  - ".travis.yml"
309
324
  - CODE_OF_CONDUCT.md
310
325
  - Gemfile
@@ -316,27 +331,31 @@ files:
316
331
  - bin/setup
317
332
  - exe/photish
318
333
  - lib/photish.rb
334
+ - lib/photish/assets/Gemfile
335
+ - lib/photish/assets/barebones/site/_templates/collection.slim
336
+ - lib/photish/assets/barebones/site/_templates/layout.slim
337
+ - lib/photish/assets/barebones/site/styles/basic.css
319
338
  - lib/photish/assets/config.yml
339
+ - lib/photish/assets/example/photos/Big Dogs/Tired Dogs.jpg
340
+ - lib/photish/assets/example/photos/Big Dogs/Winking Dog.jpg
341
+ - lib/photish/assets/example/photos/Small Dogs/Fluffy Dogs/Exhausted Dogs.jpg
342
+ - lib/photish/assets/example/photos/Small Dogs/Fluffy Dogs/Exhausted Dogs.yml
343
+ - lib/photish/assets/example/photos/Small Dogs/Fluffy Dogs/Many Dogs.jpg
344
+ - lib/photish/assets/example/photos/Small Dogs/Fluffy Dogs/Many Dogs.yml
345
+ - lib/photish/assets/example/photos/Small Dogs/Sleepy Dog.jpg
346
+ - lib/photish/assets/example/photos/Small Dogs/Sleepy Dog.yml
347
+ - lib/photish/assets/example/photos/Small Dogs/Squishy Dogs/Big Ear Dog.jpg
348
+ - lib/photish/assets/example/site/_plugins/footer_links.rb
349
+ - lib/photish/assets/example/site/_plugins/tmpdir_deploy.rb
350
+ - lib/photish/assets/example/site/_plugins/yell_loud.rb
351
+ - lib/photish/assets/example/site/_templates/album.slim
352
+ - lib/photish/assets/example/site/_templates/collection.slim
353
+ - lib/photish/assets/example/site/_templates/layout.slim
354
+ - lib/photish/assets/example/site/_templates/photo.slim
355
+ - lib/photish/assets/example/site/custom.html
356
+ - lib/photish/assets/example/site/images/crumbs.gif
357
+ - lib/photish/assets/example/site/styles/basic.css
320
358
  - lib/photish/assets/gitignore
321
- - lib/photish/assets/photos/Big Dogs/Tired Dogs.jpg
322
- - lib/photish/assets/photos/Big Dogs/Winking Dog.jpg
323
- - lib/photish/assets/photos/Small Dogs/Fluffy Dogs/Exhausted Dogs.jpg
324
- - lib/photish/assets/photos/Small Dogs/Fluffy Dogs/Exhausted Dogs.yml
325
- - lib/photish/assets/photos/Small Dogs/Fluffy Dogs/Many Dogs.jpg
326
- - lib/photish/assets/photos/Small Dogs/Fluffy Dogs/Many Dogs.yml
327
- - lib/photish/assets/photos/Small Dogs/Sleepy Dog.jpg
328
- - lib/photish/assets/photos/Small Dogs/Sleepy Dog.yml
329
- - lib/photish/assets/photos/Small Dogs/Squishy Dogs/Big Ear Dog.jpg
330
- - lib/photish/assets/site/_plugins/footer_links.rb
331
- - lib/photish/assets/site/_plugins/tmpdir_deploy.rb
332
- - lib/photish/assets/site/_plugins/yell_loud.rb
333
- - lib/photish/assets/site/_templates/album.slim
334
- - lib/photish/assets/site/_templates/collection.slim
335
- - lib/photish/assets/site/_templates/layout.slim
336
- - lib/photish/assets/site/_templates/photo.slim
337
- - lib/photish/assets/site/custom.html
338
- - lib/photish/assets/site/images/crumbs.gif
339
- - lib/photish/assets/site/styles/basic.css
340
359
  - lib/photish/cli/interface.rb
341
360
  - lib/photish/command/base.rb
342
361
  - lib/photish/command/deploy.rb
@@ -361,6 +380,7 @@ files:
361
380
  - lib/photish/plugin/repository.rb
362
381
  - lib/photish/plugin/type.rb
363
382
  - lib/photish/rake/task.rb
383
+ - lib/photish/render/change_manifest.rb
364
384
  - lib/photish/render/image_conversion.rb
365
385
  - lib/photish/render/page.rb
366
386
  - lib/photish/render/site.rb