photish 0.3.11 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.pryrc +2 -0
  3. data/README.md +73 -12
  4. data/TODO.md +8 -8
  5. data/bin/console +2 -10
  6. data/bin/setup +0 -2
  7. data/lib/photish/assets/example/photos/Big Dogs/Custom Template Page.slim +5 -0
  8. data/lib/photish/assets/example/site/_plugins/footer_links.rb +2 -1
  9. data/lib/photish/assets/example/site/_plugins/tmpdir_deploy.rb +2 -2
  10. data/lib/photish/assets/example/site/_plugins/yell_loud.rb +2 -1
  11. data/lib/photish/assets/example/site/_templates/album.slim +4 -0
  12. data/lib/photish/cache/db_file.rb +40 -0
  13. data/lib/photish/cache/manifest.rb +20 -18
  14. data/lib/photish/cache/repository.rb +42 -0
  15. data/lib/photish/cli/interface.rb +4 -0
  16. data/lib/photish/command/base.rb +6 -2
  17. data/lib/photish/command/deploy.rb +4 -8
  18. data/lib/photish/command/generate.rb +10 -26
  19. data/lib/photish/command/host.rb +8 -7
  20. data/lib/photish/command/init.rb +1 -1
  21. data/lib/photish/command/worker.rb +5 -17
  22. data/lib/photish/config/default_config.rb +5 -3
  23. data/lib/photish/config/file_config.rb +19 -5
  24. data/lib/photish/config/settings.rb +59 -0
  25. data/lib/photish/gallery/album.rb +27 -14
  26. data/lib/photish/gallery/collection.rb +27 -13
  27. data/lib/photish/gallery/image.rb +5 -12
  28. data/lib/photish/gallery/page.rb +40 -0
  29. data/lib/photish/gallery/photo.rb +7 -10
  30. data/lib/photish/gallery/traits/albumable.rb +9 -3
  31. data/lib/photish/gallery/traits/fileable.rb +30 -0
  32. data/lib/photish/gallery/traits/urlable.rb +12 -7
  33. data/lib/photish/log/io.rb +20 -0
  34. data/lib/photish/log/loggable.rb +1 -1
  35. data/lib/photish/log/{log_setup.rb → setup.rb} +1 -1
  36. data/lib/photish/{gallery/traits/breadcrumbable.rb → plugin/core/breadcrumb.rb} +12 -3
  37. data/lib/photish/plugin/core/build_url.rb +26 -0
  38. data/lib/photish/plugin/core/exifable.rb +15 -0
  39. data/lib/photish/plugin/core/metadatable.rb +27 -0
  40. data/lib/photish/plugin/repository.rb +3 -7
  41. data/lib/photish/plugin/type.rb +1 -0
  42. data/lib/photish/render/{image_conversion.rb → image.rb} +34 -18
  43. data/lib/photish/render/{site_worker.rb → model.rb} +13 -12
  44. data/lib/photish/render/page.rb +13 -24
  45. data/lib/photish/render/site.rb +3 -3
  46. data/lib/photish/render/template.rb +59 -0
  47. data/lib/photish/version.rb +1 -1
  48. data/lib/photish.rb +14 -11
  49. data/photish.gemspec +1 -0
  50. metadata +32 -14
  51. data/lib/photish/cache/manifest_db_file.rb +0 -36
  52. data/lib/photish/config/app_settings.rb +0 -57
  53. data/lib/photish/config/file_config_location.rb +0 -27
  54. data/lib/photish/config/image_extension.rb +0 -8
  55. data/lib/photish/core_plugin/breadcrumb.rb +0 -35
  56. data/lib/photish/core_plugin/build_url.rb +0 -20
  57. data/lib/photish/gallery/traits/metadatable.rb +0 -30
  58. data/lib/photish/log/access_log.rb +0 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dd549e0b900be9de4fb137293813237d8e320aa4
4
- data.tar.gz: 96dbedfaf551bbb1d3e70c8a6f6a383707578ac3
3
+ metadata.gz: 126b9558be5101767839891a8bb1f439e4ceeb4d
4
+ data.tar.gz: f7f5788e4eae6c56c450f81b5079eb9747ac4660
5
5
  SHA512:
6
- metadata.gz: 0cee42768c288ffbd5a31011b0fdff42fd4ddf18b1127492b43a0da0275ee8a44cf17dc5c688aa2f43718854d6a592f7ac3aa42706a389dedab8cab6f2dd4366
7
- data.tar.gz: aaf9bef8e114106b96e2c9e77960364deee7b8a4f83ffdfe75ab8dc9c573d50b4d8de0c4a25d7632d48a95603051fb4ecf4e4cd121d89abee7519a695f1144c7
6
+ metadata.gz: bfb7b794c442026a35bd9a2e8281068c083fd9e7bd963a0630c878683002dd13ed4b7c8f4f79ad231f565edd94ce2803b2363ac65113f2d8d9006929b24d2f48
7
+ data.tar.gz: 8ad4cdffaae09e93667179b2d25b3ec6320244c6d4a582994d7bc283592dc9d7900ec64b1e22435b8458ee0466e2fb873e9635c6281f4702277fcbffe02d7891
data/.pryrc ADDED
@@ -0,0 +1,2 @@
1
+ require "awesome_print"
2
+ AwesomePrint.pry!
data/README.md CHANGED
@@ -28,11 +28,11 @@ has changed, it is not needlessly regenerated. This results in a responsive
28
28
  and fast local development environment, making it easy to perfect the design
29
29
  of your photo based website without having to wait for regeneration.
30
30
 
31
- ## Photish in the Wild
31
+ ## Example
32
32
 
33
- 1. [Photish Montage](https://foinq.com/photish-montage/index.html) - A quick
34
- mockup to show what can be done with Photish. [Source
35
- here](https://github.com/henrylawson/photish-montage).
33
+ [Photish Montage](https://foinq.com/photish-montage/index.html) - A quick
34
+ mockup to show what can be done with Photish. [Source
35
+ here](https://github.com/henrylawson/photish-montage).
36
36
 
37
37
  ## Getting Started
38
38
 
@@ -66,6 +66,8 @@ and running:
66
66
  - [Album Template](#album-template)
67
67
  - [Photo Template](#photo-template)
68
68
  - [Template Helpers](#template-helpers)
69
+ - [Custom Rendered Content](#custom-rendered-content)
70
+ - [Gallery Page](#gallery-page)
69
71
  - [Generate](#generate)
70
72
  - [Execution Order](#execution-order)
71
73
  - [Workers and Threads](#workers-and-threads)
@@ -208,19 +210,24 @@ Photish has dependencies on certain software:
208
210
  - [Exiftool](http://www.sno.phy.queensu.ca/~phil/exiftool/) for image metadata
209
211
  retrieval
210
212
 
211
- Softer dependencies:
213
+ Target OS dependencies:
212
214
 
213
- - [Unix](http://www.unix.org/) based OS, Photish has been tested thoroughly on
214
- Linux and MacOSX computers but theoretically should work on Windows, though
215
- this is not tested
215
+ - [Unix](http://www.unix.org/) based operating system, Photish has been tested
216
+ thoroughly on Ubuntu and MacOSX
216
217
 
217
218
  **On MacOSX, using [Brew](http://brew.sh/)**
218
219
 
220
+ $ brew install ruby
219
221
  $ brew install imagemagick
220
222
  $ brew install exiftool
223
+ $ gem install bundler
221
224
 
222
225
  **On Ubuntu or Debian**
223
226
 
227
+ $ sudo apt-add-repository ppa:brightbox/ruby-ng
228
+ $ sudo apt-get update
229
+ $ sudo apt-get install ruby2.2
230
+ $
224
231
  $ sudo apt-get install imagemagick
225
232
  $ sudo apt-get install libimage-exiftool-perl
226
233
 
@@ -292,7 +299,21 @@ generated file, the generated file will clobber the asset.
292
299
 
293
300
  #### Config File Options
294
301
 
295
- Below is a complete `config.yml` file:
302
+ The default way to express config is in the `config.yml` file. However config
303
+ can also be overridden using the `--config_override` flag to any of the Photish
304
+ commands. When using the `--config_override` flag, the config must be expressed
305
+ as [JSON](http://www.json.org/). For example, to override logging when calling
306
+ the Generate command, you can use:
307
+
308
+ $ photish generate --config_override='{"logging":{"colorize":false}}'
309
+
310
+ This method of config override is only recommended for cases where the value
311
+ needs to be temporarily overridden, such as during a deployment or while
312
+ debugging.
313
+
314
+ Below is a complete `config.yml` file, recommended practice is to only set the
315
+ config values you need, otherwise just use the defaults, the file can be empty
316
+ and Photish will still function:
296
317
 
297
318
  ```yaml
298
319
  port: 9876
@@ -308,7 +329,7 @@ templates:
308
329
  photo: photo.slim
309
330
  logging:
310
331
  colorize: true
311
- level: 'info'
332
+ level: 'debug'
312
333
  output: ['stdout', 'file']
313
334
  url:
314
335
  host: http://mydomain.com
@@ -319,6 +340,7 @@ threads: 2
319
340
  force: false
320
341
  plugins: ['ssh_deploy', 'other_plugin']
321
342
  image_extensions: ['jpg', 'gif']
343
+ page_extension: 'slim'
322
344
  ```
323
345
 
324
346
  The meanings and purpose of each field is defined below:
@@ -336,7 +358,7 @@ Field | Purpose
336
358
  `templates/photo` | the photo template file in the `site/_templates` folder, must be overridden if using a different template engine
337
359
  `logging` | a listing of the various logging options
338
360
  `logging/colorize` | when outputting to `STDOUT`, `true` to use color, `false` for none
339
- `logging/level` | the default logging level, it is advised to keep this at `info`, supported are `debug`, `info`, `warn`, `error` and `fatal`
361
+ `logging/level` | the default logging level, it is advised to keep this at `debug`, supported are `debug`, `info`, `warn`, `error` and `fatal`
340
362
  `logging/output` | the appenders for the logger, `stdout` goes to `STDOUT`, `file` goes to `log/photish.log`
341
363
  `url` | a listing of the various url options
342
364
  `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
@@ -347,6 +369,7 @@ Field | Purpose
347
369
  `force` | this should always be false, if true, all content will be regenerated and nothing cached
348
370
  `plugins` | an array of plugin names that have been included in your Gemfile and that Photish should require into it's runtime
349
371
  `image_extensions` | by default, Photish obtains a list of supported image format extensions from ImageMagick, however if you choose too, you can explicitly list the extensions that Photish should use to find images
372
+ `page_extension` | the extension of **Pages** files that will live amongst the photo collection
350
373
 
351
374
  #### Customizing Templates
352
375
 
@@ -407,6 +430,7 @@ albums | an array of child [Albums](https://github.com/henrylawson/
407
430
  all_albums | an array of all child [Albums](https://github.com/henrylawson/photish/blob/master/lib/photish/gallery/album.rb)
408
431
  all_photos | an array of all child [Photos](https://github.com/henrylawson/photish/blob/master/lib/photish/gallery/photo.rb)
409
432
  all_images | an array of all child [Images](https://github.com/henrylawson/photish/blob/master/lib/photish/gallery/image.rb)
433
+ all_pages | an array of all child [Pages](https://github.com/henrylawson/photish/blob/master/lib/photish/gallery/page.rb)
410
434
 
411
435
  ##### Album Template
412
436
 
@@ -442,6 +466,7 @@ albums | an array of child [Albums](https://github.com/henrylawson/
442
466
  all_albums | an array of all child [Albums](https://github.com/henrylawson/photish/blob/master/lib/photish/gallery/album.rb)
443
467
  all_photos | an array of all child [Photos](https://github.com/henrylawson/photish/blob/master/lib/photish/gallery/photo.rb)
444
468
  all_images | an array of all child [Images](https://github.com/henrylawson/photish/blob/master/lib/photish/gallery/image.rb)
469
+ all_pages | an array of all child [Pages](https://github.com/henrylawson/photish/blob/master/lib/photish/gallery/page.rb)
445
470
 
446
471
  ##### Photo Template
447
472
 
@@ -519,6 +544,36 @@ Method | Description
519
544
  breadcrumbs | an unordered list of pages above the current page in the hierarchy
520
545
  build_url(\*pieces) | use this to ensure your URLs have the correct host name and base directory, to avoid having it hard coded in the template
521
546
 
547
+ #### Custom Rendered Content
548
+
549
+ ##### Gallery Page
550
+
551
+ A gallery page is a simple way to create a custom web page within the
552
+ collection or album of your gallery that will render within your site's [Layout
553
+ Template](#layout-template).
554
+
555
+ For example, if you would like to create a "more details about album" page
556
+ somewhere within an album, and you would like it rendered in the [Layout
557
+ Template](#layout-template) to have a consistent look and feel, you can do it
558
+ by creating a file a Gallery Page file such as `more-about.slim` in your
559
+ album's directory. The file extension is determined using the `page_extension`
560
+ [Config File Option](#config-file-option). A Gallery Page can live anywhere and
561
+ you can have as many of them as you like within the `photos` directory.
562
+
563
+ `photos/**/*.{page_extension}`
564
+
565
+ ```slim
566
+ div.more-about-album
567
+ h2 The More Details Page
568
+ p Lorem ipsum...
569
+ p Lorem ipsum...
570
+ p Lorem ipsum...
571
+ ```
572
+
573
+ As with other gallery generated content, a gallery page is accessible from the
574
+ `all_pages` method within the [Collection](#collection-template) or
575
+ [Album](#album-template) template.
576
+
522
577
  ### Generate
523
578
 
524
579
  The static HTML can be generated by running the below command inside the
@@ -644,6 +699,12 @@ The local version of your website will be visible at
644
699
  The Host command will also automatically regenerate the website on startup and
645
700
  when a file is added, removed or modified in the `photo_dir` or `site_dir`.
646
701
 
702
+ Note, when running in this mode any Image Conversion errors are swallowed and
703
+ logged. This is done as it is quite common for image files to be moved while
704
+ conversion is in progress. Rather then terminate the Host, the file move is
705
+ recorded and regeneration will be triggered once the current generation
706
+ completes.
707
+
647
708
  ### Deploy
648
709
 
649
710
  Photish provides a plugin type specifically for deployments, called the
@@ -777,7 +838,7 @@ module Photish::Plugin::MyCustomDeploy
777
838
  end
778
839
 
779
840
  def deploy_site
780
- @log.info "Deploying using my plugin"
841
+ @log.debug "Deploying using my plugin"
781
842
  FileUtils.cp(@config.output_dir, '/srv/www')
782
843
  end
783
844
  end
data/TODO.md CHANGED
@@ -2,17 +2,17 @@
2
2
 
3
3
  ## In Progress
4
4
 
5
+ 1. Create the Asset Page feature, pages in the site folder, passing collection
6
+ reference
7
+ 1. RCode tools
8
+
5
9
  ## Backlog
6
10
 
7
- 1. Worker can die when large folders moved mid generation
8
- 1. Changing convert items does not trigger regeneration but changing name does
11
+ 1. Video transcoding and template rendering for videos
9
12
  1. Templates with exif data, super slow
10
- 1. Custom template rendering outside of `_templates` folder using `page.{type}`
11
13
  1. Proper asset pipeline for CSS
12
14
  1. A sitemap helper plugin for use in custom templates for example
13
15
  `sitemap.xml`
14
- 1. Share on RubyWebToolkit, StaticGen, etc
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
16
+ 1. Add unit tests to classes relying on feature tests
17
+ 1. Improve metric scores from `rake stats`
18
+ 1. Improve the `--example` template of Photish
data/bin/console CHANGED
@@ -2,13 +2,5 @@
2
2
 
3
3
  require "bundler/setup"
4
4
  require "photish"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start
5
+ require "pry"
6
+ Pry.start
data/bin/setup CHANGED
@@ -6,5 +6,3 @@ command -v convert >/dev/null 2>&1 || { echo >&2 "imagemagick required. run \"br
6
6
  command -v exiftool >/dev/null 2>&1 || { echo >&2 "exiftool required. run \"brew install exiftool\""; exit 1; }
7
7
 
8
8
  bundle install
9
-
10
- # Do any other automated setup that you need to do here
@@ -0,0 +1,5 @@
1
+ div.album
2
+ div.album-title
3
+ Custom Template Page
4
+ p By creating a page that ends with the template extension, you can create
5
+ custom pages that are rendered in the default layout.
@@ -4,7 +4,8 @@ module Photish::Plugin::FooterLinks
4
4
  Photish::Plugin::Type::Collection,
5
5
  Photish::Plugin::Type::Album,
6
6
  Photish::Plugin::Type::Photo,
7
- Photish::Plugin::Type::Image
7
+ Photish::Plugin::Type::Image,
8
+ Photish::Plugin::Type::Page,
8
9
  ].include?(type)
9
10
  end
10
11
 
@@ -8,8 +8,8 @@ class Photish::Plugin::TmpdirDeploy
8
8
  tmpdir = Dir.mktmpdir
9
9
  FileUtils.cp_r(config.output_dir, tmpdir)
10
10
 
11
- log.info "Static site deployed to directory: #{tmpdir}"
12
- log.info "Deployment to tmpdir successful"
11
+ log.debug "Static site deployed to directory: #{tmpdir}"
12
+ log.debug "Deployment to tmpdir successful"
13
13
  end
14
14
 
15
15
  private
@@ -4,7 +4,8 @@ module Photish::Plugin::YellLoud
4
4
  Photish::Plugin::Type::Collection,
5
5
  Photish::Plugin::Type::Album,
6
6
  Photish::Plugin::Type::Photo,
7
- Photish::Plugin::Type::Image
7
+ Photish::Plugin::Type::Image,
8
+ Photish::Plugin::Type::Page,
8
9
  ].include?(type)
9
10
  end
10
11
 
@@ -7,6 +7,10 @@ div.album
7
7
  div.album-photo
8
8
  a href=photo.url title=photo.name
9
9
  img src=photo.images.find{ |i|i.quality_name=='Low' }.url alt=photo.name
10
+ div.album-pages
11
+ - pages.each do |page|
12
+ div.album-page
13
+ a href=page.url title=page.name #{page.name}
10
14
 
11
15
  div.sub-albums
12
16
  - albums.each do |album|
@@ -0,0 +1,40 @@
1
+ module Photish
2
+ module Cache
3
+ class DbFile
4
+ def self.new_master(output_dir)
5
+ new(path(output_dir, '.changes.yml'))
6
+ end
7
+
8
+ def self.new_worker(output_dir, index)
9
+ new(path(output_dir, ".changes.#{index}.yml"))
10
+ end
11
+
12
+ def write(hash)
13
+ File.open(file, 'w') do
14
+ |f| f.write(hash.to_yaml)
15
+ end
16
+ end
17
+
18
+ def read
19
+ File.exist?(file) ? YAML.load_file(file) : {}
20
+ end
21
+
22
+ def clear
23
+ FileUtils.rm_rf(file)
24
+ end
25
+
26
+ private
27
+
28
+ attr_reader :file
29
+
30
+ def initialize(file)
31
+ @file = file
32
+ end
33
+
34
+ def self.path(output_dir, filename)
35
+ FileUtils.mkdir_p(output_dir)
36
+ path = File.join(output_dir, filename)
37
+ end
38
+ end
39
+ end
40
+ end
@@ -1,8 +1,9 @@
1
1
  module Photish
2
2
  module Cache
3
3
  class Manifest
4
- def initialize(output_dir, worker_index, version_hash)
4
+ def initialize(output_dir, workers, worker_index, version_hash)
5
5
  @output_dir = output_dir
6
+ @workers = workers
6
7
  @worker_index = worker_index
7
8
  @version_hash = version_hash
8
9
  @cache = {}
@@ -12,23 +13,21 @@ module Photish
12
13
  def record(key, file_path = nil)
13
14
  checksum = checksum_of_file(file_path || key)
14
15
  worker_db[key] = checksum
15
- db[key] = checksum
16
+ master_db[key] = checksum
16
17
  end
17
18
 
18
19
  def changed?(key, file_path = nil)
19
20
  checksum = checksum_of_file(file_path || key)
20
21
  worker_db[key] = checksum
21
- checksum != db[key]
22
+ checksum != master_db[key]
22
23
  end
23
24
 
24
25
  def flush_to_disk
25
- File.open(worker_db_file(worker_index), 'w') do
26
- |f| f.write(worker_db.to_yaml)
27
- end
26
+ worker_db_file(worker_index).write(worker_db)
28
27
  end
29
28
 
30
- def preload
31
- db
29
+ def load_from_disk
30
+ master_db
32
31
  end
33
32
 
34
33
  private
@@ -37,26 +36,29 @@ module Photish
37
36
  :cache,
38
37
  :version_hash,
39
38
  :worker_index,
40
- :worker_db
39
+ :worker_db,
40
+ :workers
41
41
 
42
- delegate :db_file,
42
+ delegate :master_db_file,
43
43
  :worker_db_file,
44
- to: :manifest_db_file
44
+ to: :repository
45
45
 
46
46
  def checksum_of_file(file_path)
47
47
  cache.fetch(file_path.hash) do |key|
48
- cache[key] = version_hash.to_s +
49
- Digest::MD5.file(file_path).hexdigest
48
+ cache[key] = hash(file_path)
50
49
  end
51
50
  end
52
51
 
53
- def db
54
- return @db if @db
55
- @db = File.exist?(db_file) ? YAML.load_file(db_file) : {}
52
+ def hash(file_path)
53
+ version_hash.to_s + Digest::MD5.file(file_path).hexdigest
54
+ end
55
+
56
+ def master_db
57
+ @master_db ||= master_db_file.read
56
58
  end
57
59
 
58
- def manifest_db_file
59
- ManifestDbFile.new(output_dir)
60
+ def repository
61
+ @repository ||= Repository.new(output_dir, workers)
60
62
  end
61
63
  end
62
64
  end
@@ -0,0 +1,42 @@
1
+ module Photish
2
+ module Cache
3
+ class Repository
4
+ def initialize(output_dir, workers)
5
+ @output_dir = output_dir
6
+ @workers = workers
7
+ @worker_db_file_cache = {}
8
+ end
9
+
10
+ delegate :clear,
11
+ to: :master_db_file,
12
+ prefix: true
13
+
14
+ def concat_worker_db_files
15
+ master_db_file.write(accumulate_changes)
16
+ end
17
+
18
+ def master_db_file
19
+ @master_db_file ||= DbFile.new_master(output_dir)
20
+ end
21
+
22
+ def worker_db_file(index)
23
+ worker_db_file_cache.fetch(index) do
24
+ DbFile.new_worker(output_dir, index)
25
+ end
26
+ end
27
+
28
+ private
29
+
30
+ attr_reader :output_dir,
31
+ :workers,
32
+ :worker_db_file_cache
33
+
34
+ def accumulate_changes
35
+ (1..workers).inject({}) do |accumulator, worker_index|
36
+ db_file = worker_db_file(worker_index)
37
+ accumulator.merge(db_file.read)
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -5,6 +5,7 @@ module Photish
5
5
 
6
6
  desc "generate", "Generates the gallery static site"
7
7
  option :force, type: :boolean
8
+ option :config_override, type: :string
8
9
  def generate
9
10
  Photish::Command::Generate.new(options).execute
10
11
  end
@@ -17,18 +18,21 @@ module Photish
17
18
 
18
19
  desc "host", "Serves the HTML on a HTTP server"
19
20
  option :force, type: :boolean
21
+ option :config_override, type: :string
20
22
  def host
21
23
  Photish::Command::Host.new(options).execute
22
24
  end
23
25
 
24
26
  desc "init", "Creates a basic Photish site structure"
25
27
  option :example, type: :boolean
28
+ option :config_override, type: :string
26
29
  def init
27
30
  Photish::Command::Init.new(options).execute
28
31
  end
29
32
 
30
33
  desc "deploy", "Deploys the static site, using the specified engine"
31
34
  method_option :engine, required: true
35
+ option :config_override, type: :string
32
36
  def deploy
33
37
  Photish::Command::Deploy.new(options).execute
34
38
  end
@@ -23,14 +23,18 @@ module Photish
23
23
  :version_hash,
24
24
  to: :app_settings
25
25
 
26
+ def load_all_plugins
27
+ Plugin::Repository.instance.reload(config)
28
+ end
29
+
26
30
  private
27
31
 
28
32
  def app_settings
29
- @app_settings ||= Config::AppSettings.new(runtime_config)
33
+ @app_settings ||= Config::Settings.new(runtime_config)
30
34
  end
31
35
 
32
36
  def setup_logging
33
- Log::LogSetup.instance.configure(config.logging)
37
+ Log::Setup.instance.configure(config.logging)
34
38
  end
35
39
  end
36
40
  end
@@ -3,14 +3,14 @@ module Photish
3
3
  class Deploy < Base
4
4
  def run
5
5
  load_all_plugins
6
- log.info "Requested engine: #{engine}"
6
+ log.debug "Requested engine: #{engine}"
7
7
 
8
8
  return no_engine_found unless engine && engine_class
9
9
 
10
- log.info "Regenerating site, to ensure fresh copy"
10
+ log.debug "Regenerating site, to ensure fresh copy"
11
11
  regenerate_entire_site
12
12
 
13
- log.info "Deploying with engine #{engine_class}"
13
+ log.debug "Deploying with engine #{engine_class}"
14
14
  engine_class.new(config, log).deploy_site
15
15
  end
16
16
 
@@ -26,11 +26,7 @@ module Photish
26
26
  end
27
27
 
28
28
  def no_engine_found
29
- log.info "No engine found..."
30
- end
31
-
32
- def load_all_plugins
33
- Plugin::Repository.instance.reload(config)
29
+ log.debug "No engine found..."
34
30
  end
35
31
 
36
32
  def engine_class
@@ -2,44 +2,35 @@ module Photish
2
2
  module Command
3
3
  class Generate < Base
4
4
  def run
5
- log.info "Generating with #{workers} workers and #{threads} threads"
5
+ log.debug "Generating with #{workers} workers and #{threads} threads"
6
6
 
7
- clear if force_regeneration?
7
+ master_db_file_clear if force_regeneration?
8
8
  spawn_all_workers
9
9
  load_all_plugins
10
10
  wait_for_workers_to_complete
11
- concat_db_files(workers)
11
+ concat_worker_db_files
12
12
  perform_serial_generation
13
13
 
14
- log.info "Generation completed successfully"
14
+ log.debug "Generation completed successfully"
15
15
  end
16
16
 
17
17
  private
18
18
 
19
19
  delegate :output_dir,
20
- :photo_dir,
21
- :url,
22
- :site_dir,
23
- :qualities,
24
20
  :photish_executable,
25
21
  :workers,
26
22
  :force,
27
23
  :threads,
28
- :image_extensions,
29
24
  to: :config
30
25
 
31
- delegate :concat_db_files,
32
- :clear,
33
- to: :manifest_db_file
26
+ delegate :concat_worker_db_files,
27
+ :master_db_file_clear,
28
+ to: :cache_repository
34
29
 
35
30
  def force_regeneration?
36
31
  force == true
37
32
  end
38
33
 
39
- def load_all_plugins
40
- Plugin::Repository.instance.reload(config)
41
- end
42
-
43
34
  def spawn_all_workers
44
35
  return single_worker if one_worker?
45
36
  @spawned_processes ||= (1..workers).map do |index|
@@ -68,14 +59,7 @@ module Photish
68
59
  end
69
60
 
70
61
  def collection
71
- @collection ||= Gallery::Collection.new(photo_dir,
72
- qualities_mapped,
73
- url,
74
- image_extensions)
75
- end
76
-
77
- def qualities_mapped
78
- qualities.map { |quality| OpenStruct.new(quality) }
62
+ @collection ||= Gallery::Collection.new(config)
79
63
  end
80
64
 
81
65
  def worker_command(worker_index)
@@ -84,8 +68,8 @@ module Photish
84
68
  "--worker_index=#{worker_index}"].join(' ')
85
69
  end
86
70
 
87
- def manifest_db_file
88
- Cache::ManifestDbFile.new(output_dir)
71
+ def cache_repository
72
+ Cache::Repository.new(output_dir, workers)
89
73
  end
90
74
  end
91
75
  end