jekyll-generator-single-source 0.0.2 → 0.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e651ab73d6f998179bce7f5e714cb65a3de3395c3cbbd0a2e6537c811f805198
4
- data.tar.gz: d31ec800b3b67e11c4f6dd7c54b1ffb2b7aa0a962322e0fbbfaf136142a3eb83
3
+ metadata.gz: 2aca19672cf3db42a62347e77ca5576f7e83c7044150ad7fa8f34425e39086e7
4
+ data.tar.gz: 8ed57306afbc005b1958ff14dc7819070d10c4dd575dc018fd2abcb1f9c7733b
5
5
  SHA512:
6
- metadata.gz: 3c824783e55aa654214b2b12762fb6cddd07849c5fd8329336acadab5e95584f4faa26cee513f771efc7cda137203319f3d2ebb4c7f369b5c769ebbedeeb0a3f
7
- data.tar.gz: 021f60ea8e4595e6ef4135f921eaa8758f3928005d37e09ec5d7cb38f2e25662ea09034e29c91c8b18985e2b7722f934938e9b6a0f2dd1fab5902958cbcbde12
6
+ metadata.gz: 9ed3e1fe6f04b3ff6d8f24e7be951998617b6d496752fdb5ca7d436d7759b81ee9f5c53f4e2475c03221237d351a4c122ae5d20351e860a2f5625a5e8a6ed4fd
7
+ data.tar.gz: 9551d769cfe366db6cf50a338435f5e2decb30c24c3bcc022d00b5c65b5b68749071c2b035bdd77eedb7c3fea554b4789dfe6d21948021f94601bc8a376baaec
data/README.md CHANGED
@@ -11,13 +11,16 @@ end
11
11
  ```
12
12
 
13
13
  ## Usage
14
-
14
+
15
+ ### Projects that have multiple products
15
16
  Add these lines to your site's `_config.yml`:
16
17
 
17
18
  ```yaml
18
19
  jekyll-generator-single-source:
19
20
  versions_file: '<path_to_versions_file>.yml'
20
21
  docs_nav_folder: '<path_to_folder_containing_doc_nav_files'
22
+ layout: 'docs-v2' # default value
23
+ multiple_products: true # default value
21
24
  ```
22
25
 
23
26
  The paths are relative to the site's `source`.
@@ -28,4 +31,28 @@ Example configuration:
28
31
  jekyll-generator-single-source:
29
32
  versions_file: '_data/versions.yml'
30
33
  docs_nav_folder: '_data'
31
- ```
34
+ ```
35
+
36
+ ### Projects with a single product
37
+
38
+ Add these lines to your site's `_config.yml`:
39
+
40
+ ``` yaml
41
+ jekyll-generator-single-source:
42
+ versions_file: '<path_to_versions_file>.yml'
43
+ docs_nav_folder: '<path_to_folder_containing_doc_nav_files'
44
+ layout: 'page'
45
+ multiple_products: false
46
+ base_dest_path: '<path_to_dest_folder_within_dist>'
47
+ ```
48
+
49
+ Example configuration:
50
+
51
+ ``` yaml
52
+ jekyll-generator-single-source:
53
+ versions_file: '_data/versions.yml'
54
+ docs_nav_folder: '_data'
55
+ layout: 'page'
56
+ multiple_products: false
57
+ base_dest_path: 'docs'
58
+ ```
@@ -62,6 +62,14 @@ module Jekyll
62
62
 
63
63
  private
64
64
 
65
+ def multiple_products?
66
+ GeneratorConfig.new(site).multiple_products?
67
+ end
68
+
69
+ def base_dest_path
70
+ GeneratorConfig.new(site).base_dest_path
71
+ end
72
+
65
73
  def source_path
66
74
  raise NotImplementedError.new('implement this in subclass')
67
75
  end
@@ -19,12 +19,20 @@ module Jekyll
19
19
  if src.start_with?('/')
20
20
  src
21
21
  else
22
- [product, src].join('/')
22
+ if multiple_products?
23
+ [product, src].join('/')
24
+ else
25
+ src
26
+ end
23
27
  end
24
28
  end
25
29
 
26
30
  def dest_path
27
- File.join(product, release, @item_config['url'], '/')
31
+ if multiple_products?
32
+ File.join(product, release, @item_config['url'], '/')
33
+ else
34
+ File.join(base_dest_path, release, @item_config['url'], '/')
35
+ end
28
36
  end
29
37
 
30
38
  def src
@@ -19,18 +19,34 @@ module Jekyll
19
19
  private
20
20
 
21
21
  def source_path
22
- if product_page?
23
- product
22
+ if multiple_products?
23
+ if product_page?
24
+ product
25
+ else
26
+ File.join(product, url.delete_prefix('/'))
27
+ end
24
28
  else
25
- File.join(product, url.delete_prefix('/'))
29
+ if product_page?
30
+ 'index'
31
+ else
32
+ File.join(url.delete_prefix('/'))
33
+ end
26
34
  end
27
35
  end
28
36
 
29
37
  def dest_path
30
- if product_page?
31
- File.join(product, release, '/')
38
+ if multiple_products?
39
+ if product_page?
40
+ File.join(product, release, '/')
41
+ else
42
+ File.join(product, release, url, '/')
43
+ end
32
44
  else
33
- File.join(product, release, url, '/')
45
+ if product_page?
46
+ File.join(base_dest_path, release, '/')
47
+ else
48
+ File.join(base_dest_path, release, url, '/')
49
+ end
34
50
  end
35
51
  end
36
52
 
@@ -5,26 +5,12 @@ module Jekyll
5
5
  class Generator < Jekyll::Generator
6
6
  priority :highest
7
7
 
8
- attr_reader :config, :versions
9
-
10
- def initialize(config = {})
11
- @config = config.fetch('jekyll-generator-single-source', {})
12
- end
13
-
14
8
  def generate(site)
15
- Dir.glob(File.join(docs_nav_folder(site), 'docs_nav_*.yml')).each do |f|
16
- DocNavConfig.new(f, site, versions(site)).generate_pages
17
- end
18
- end
19
-
20
- def docs_nav_folder(site)
21
- File.expand_path(@config.fetch('docs_nav_folder'), site.source)
22
- end
9
+ config = GeneratorConfig.new(site)
23
10
 
24
- def versions(site)
25
- @versions ||= SafeYAML.load(
26
- File.read(File.expand_path @config.fetch('versions_file'), site.source)
27
- )
11
+ Dir.glob(File.join(config.docs_nav_folder, 'docs_nav_*.yml')).each do |f|
12
+ DocNavConfig.new(f, site, config.versions).generate_pages
13
+ end
28
14
  end
29
15
  end
30
16
  end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jekyll
4
+ module GeneratorSingleSource
5
+ class GeneratorConfig
6
+ CONFIG_KEY = 'jekyll-generator-single-source'
7
+
8
+ attr_reader :site
9
+
10
+ def initialize(site)
11
+ @site = site
12
+ end
13
+
14
+ def versions
15
+ @versions ||= SafeYAML.load(File.read(
16
+ File.expand_path(versions_file, @site.source)
17
+ ))
18
+ end
19
+
20
+ def layout
21
+ config['layout'] || 'docs-v2'
22
+ end
23
+
24
+ def versions_file
25
+ config['versions_file']
26
+ end
27
+
28
+ def docs_nav_folder
29
+ File.expand_path(config.fetch('docs_nav_folder'), @site.source)
30
+ end
31
+
32
+ def multiple_products?
33
+ !!config.fetch('multiple_products', true)
34
+ end
35
+
36
+ def base_dest_path
37
+ config['base_dest_path']
38
+ end
39
+
40
+ private
41
+
42
+ def config
43
+ @config ||= @site.config.fetch(CONFIG_KEY, {})
44
+ end
45
+ end
46
+ end
47
+ end
@@ -35,7 +35,7 @@ module Jekyll
35
35
  @data['versions'] = nav_item.versions
36
36
 
37
37
  # Set the layout if it's not already provided
38
- @data['layout'] ||= 'docs-v2'
38
+ @data['layout'] ||= GeneratorConfig.new(@site).layout
39
39
 
40
40
 
41
41
  # Apply any overrides
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jekyll
4
4
  module GeneratorSingleSource
5
- VERSION = '0.0.2'
5
+ VERSION = '0.0.3'
6
6
  end
7
7
  end
@@ -8,6 +8,7 @@ require_relative 'generator-single-source/source/base'
8
8
  require_relative 'generator-single-source/source/dir_source'
9
9
  require_relative 'generator-single-source/source/file_source'
10
10
  require_relative 'generator-single-source/doc_nav_config'
11
+ require_relative 'generator-single-source/generator_config'
11
12
  require_relative 'generator-single-source/generator'
12
13
  require_relative 'generator-single-source/single_source_page'
13
14
  require_relative 'generator-single-source/version'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-generator-single-source
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fabian Rodriguez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-19 00:00:00.000000000 Z
11
+ date: 2022-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -91,6 +91,7 @@ files:
91
91
  - lib/jekyll/generator-single-source/doc_nav_item/without_src.rb
92
92
  - lib/jekyll/generator-single-source/doc_nav_item/without_src_and_url.rb
93
93
  - lib/jekyll/generator-single-source/generator.rb
94
+ - lib/jekyll/generator-single-source/generator_config.rb
94
95
  - lib/jekyll/generator-single-source/hooks/version_is.rb
95
96
  - lib/jekyll/generator-single-source/liquid/tags/version_is.rb
96
97
  - lib/jekyll/generator-single-source/single_source_page.rb