metanorma-cli 1.3.9 → 1.4.0pre
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/README.adoc +15 -0
- data/lib/metanorma/cli.rb +1 -0
- data/lib/metanorma/cli/command.rb +4 -0
- data/lib/metanorma/cli/commands/site.rb +26 -0
- data/lib/metanorma/cli/errors.rb +1 -0
- data/lib/metanorma/cli/site_generator.rb +130 -0
- data/lib/metanorma/cli/ui.rb +4 -0
- data/lib/metanorma/cli/version.rb +1 -1
- data/metanorma-cli.gemspec +2 -1
- metadata +22 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 88924f3243331ffe69a875d04a60ba95b22a7dc2a580b3d7019f919a4b930da7
|
4
|
+
data.tar.gz: 238e5f13c374e907ab8d4245e1ac3794891c6cb24b9da0e3c4abd66c982e9c33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e45a497c87d344efae6f3c5783ad3d1508ef405dba142adf8044d1fc77c733e2c334091bb263389d9ce4e61398ecb3ac3d3f759f4f81887293beff5e6ccf8c61
|
7
|
+
data.tar.gz: 77e5b0b96d5e7ebcb549c3f018f794998c3512165aa13ddc64974ea5ce163b32b919b593206849180a0d22d104d1a275af2be37696f21a49edeb3fec624b8d36
|
data/README.adoc
CHANGED
@@ -285,6 +285,21 @@ repository.
|
|
285
285
|
metanorma template-repo add my-iso https://github.com/you/my-iso-template
|
286
286
|
----
|
287
287
|
|
288
|
+
=== Generate metanorma minisite
|
289
|
+
|
290
|
+
The `site` interface allows you to manage mini site generation using the CLI.
|
291
|
+
To generate a mini site you need to provide the `SOURCE_PATH` and the CLI will
|
292
|
+
take care of compiling each of those files and generate deployable site in the
|
293
|
+
provided output directory.
|
294
|
+
|
295
|
+
This interface also supports a YAML manifest file that can be used to customize
|
296
|
+
the site generation process. You can check more details here: link:./spec/fixtures/metanorma.yml[metanorma.yml]
|
297
|
+
|
298
|
+
[source, sh]
|
299
|
+
----
|
300
|
+
metanorma site generate SOURCE_PATH -o OUTPUT_PATH -c metanorma.yml
|
301
|
+
----
|
302
|
+
|
288
303
|
== Credits
|
289
304
|
|
290
305
|
This gem is developed, maintained and funded by https://www.metanorma.com/docs/getting-started/[Ribose Inc.]
|
data/lib/metanorma/cli.rb
CHANGED
@@ -3,6 +3,7 @@ require "metanorma/cli/compiler"
|
|
3
3
|
require "metanorma/cli/generator"
|
4
4
|
require "metanorma/cli/git_template"
|
5
5
|
require "metanorma/cli/commands/template_repo"
|
6
|
+
require "metanorma/cli/commands/site"
|
6
7
|
require "metanorma"
|
7
8
|
|
8
9
|
module Metanorma
|
@@ -92,6 +93,9 @@ module Metanorma
|
|
92
93
|
desc "template-repo", "Manage metanorma templates repository"
|
93
94
|
subcommand :template_repo, Metanorma::Cli::Commands::TemplateRepo
|
94
95
|
|
96
|
+
desc "site", "Manage site for metanorma collections"
|
97
|
+
subcommand :site, Metanorma::Cli::Commands::Site
|
98
|
+
|
95
99
|
private
|
96
100
|
|
97
101
|
def single_type_extensions(type)
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require "pathname"
|
2
|
+
require "metanorma/cli/site_generator"
|
3
|
+
|
4
|
+
module Metanorma
|
5
|
+
module Cli
|
6
|
+
module Commands
|
7
|
+
class Site < Thor
|
8
|
+
desc "site generate SOURCE_PATH", "Geneate site from collection"
|
9
|
+
option :config, aliases: "-c", desc: "The metanorma configuration file"
|
10
|
+
option(
|
11
|
+
:output_dir,
|
12
|
+
aliases: "-o",
|
13
|
+
default: Pathname.new(Dir.pwd).join("site").to_s,
|
14
|
+
desc: "Output directory for the generated site",
|
15
|
+
)
|
16
|
+
|
17
|
+
def generate(source_path)
|
18
|
+
Cli::SiteGenerator.generate(source_path, options.dup)
|
19
|
+
UI.say("Site has been generated at #{options[:output_dir]}")
|
20
|
+
rescue Cli::Errors::InvalidManifestFileError
|
21
|
+
UI.error("Invalid data in: #{options[:config]}")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/metanorma/cli/errors.rb
CHANGED
@@ -0,0 +1,130 @@
|
|
1
|
+
require "yaml"
|
2
|
+
require "pathname"
|
3
|
+
require "fileutils"
|
4
|
+
|
5
|
+
module Metanorma
|
6
|
+
module Cli
|
7
|
+
class SiteGenerator
|
8
|
+
def initialize(source, options = {})
|
9
|
+
@source = find_realpath(source)
|
10
|
+
@site_path = options.fetch(:output_dir, "site").to_s
|
11
|
+
@manifest_file = find_realpath(options.fetch(:config, nil))
|
12
|
+
@asset_folder = options.fetch(:asset_folder, "documents").to_s
|
13
|
+
@collection_name = options.fetch(:collection_name, "documents.xml")
|
14
|
+
|
15
|
+
ensure_site_asset_directory!
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.generate(source, options = {})
|
19
|
+
new(source, options).generate
|
20
|
+
end
|
21
|
+
|
22
|
+
def generate
|
23
|
+
site_directory = asset_directory.join("..")
|
24
|
+
|
25
|
+
Dir.chdir(site_directory) do
|
26
|
+
select_source_files.each { |source| compile(source) }
|
27
|
+
|
28
|
+
build_collection_file(collection_name)
|
29
|
+
convert_to_html_page(collection_name, "index.html")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
attr_reader :source, :asset_folder, :asset_directory
|
36
|
+
attr_reader :site_path, :manifest_file, :collection_name
|
37
|
+
|
38
|
+
def find_realpath(source_path)
|
39
|
+
Pathname.new(source_path.to_s).realpath if source_path
|
40
|
+
rescue Errno::ENOENT
|
41
|
+
source_path
|
42
|
+
end
|
43
|
+
|
44
|
+
def select_source_files
|
45
|
+
files = source_from_manifest
|
46
|
+
|
47
|
+
if files.empty?
|
48
|
+
files = Dir[File.join(source, "**", "*.adoc")]
|
49
|
+
end
|
50
|
+
|
51
|
+
files.flatten.uniq.reject { |file| File.directory?(file) }
|
52
|
+
end
|
53
|
+
|
54
|
+
def build_collection_file(collection_name)
|
55
|
+
collection_path = [site_path, collection_name].join("/")
|
56
|
+
UI.info("Building collection file: #{collection_path} ...")
|
57
|
+
|
58
|
+
Relaton::Cli::RelatonFile.concatenate(
|
59
|
+
asset_folder,
|
60
|
+
collection_name,
|
61
|
+
title: manifest[:collection_name],
|
62
|
+
organization: manifest[:collection_organization],
|
63
|
+
)
|
64
|
+
end
|
65
|
+
|
66
|
+
def compile(source)
|
67
|
+
UI.info("Compiling #{source} ...")
|
68
|
+
|
69
|
+
Metanorma::Cli::Compiler.compile(
|
70
|
+
source.to_s, format: :asciidoc, "output-dir" => asset_folder
|
71
|
+
)
|
72
|
+
end
|
73
|
+
|
74
|
+
def convert_to_html_page(collection, page_name)
|
75
|
+
UI.info("Generating html site in #{site_path} ...")
|
76
|
+
|
77
|
+
Relaton::Cli::XMLConvertor.to_html(collection)
|
78
|
+
File.rename(Pathname.new(collection).sub_ext(".html").to_s, page_name)
|
79
|
+
end
|
80
|
+
|
81
|
+
def manifest
|
82
|
+
@manifest ||= config_from_manifest || {
|
83
|
+
files: [], collection_name: "", collection_organization: ""
|
84
|
+
}
|
85
|
+
end
|
86
|
+
|
87
|
+
def config_from_manifest
|
88
|
+
if manifest_file
|
89
|
+
manifest_config(YAML.safe_load(File.read(manifest_file.to_s)))
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def manifest_config(manifest)
|
94
|
+
{
|
95
|
+
files: extract_config_data(
|
96
|
+
manifest["metanorma"]["source"], "files"
|
97
|
+
) || [],
|
98
|
+
|
99
|
+
collection_name: extract_config_data(
|
100
|
+
manifest["relaton"]["collection"], "name"
|
101
|
+
),
|
102
|
+
|
103
|
+
collection_organization: extract_config_data(
|
104
|
+
manifest["relaton"]["collection"], "organization"
|
105
|
+
),
|
106
|
+
}
|
107
|
+
rescue NoMethodError
|
108
|
+
raise Errors::InvalidManifestFileError.new("Invalid manifest file")
|
109
|
+
end
|
110
|
+
|
111
|
+
def extract_config_data(node, key)
|
112
|
+
node ? node[key] : nil
|
113
|
+
end
|
114
|
+
|
115
|
+
def source_from_manifest
|
116
|
+
@source_from_manifest ||= manifest[:files].map do |source_file|
|
117
|
+
file_path = source.join(source_file).to_s
|
118
|
+
file_path.include?("*") ? Dir.glob(file_path) : file_path
|
119
|
+
end.flatten
|
120
|
+
end
|
121
|
+
|
122
|
+
def ensure_site_asset_directory!
|
123
|
+
asset_path = [site_path, asset_folder].join("/")
|
124
|
+
@asset_directory = Pathname.new(Dir.pwd).join(asset_path)
|
125
|
+
|
126
|
+
FileUtils.mkdir_p(@asset_directory) unless @asset_directory.exist?
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
data/lib/metanorma/cli/ui.rb
CHANGED
data/metanorma-cli.gemspec
CHANGED
@@ -42,9 +42,10 @@ Gem::Specification.new do |spec|
|
|
42
42
|
#spec.add_runtime_dependency "metanorma-gb", "~> 1.5.0"
|
43
43
|
spec.add_runtime_dependency "metanorma-iec", "~> 1.2.0"
|
44
44
|
spec.add_runtime_dependency "metanorma-cc", "~> 1.6.0"
|
45
|
-
spec.add_runtime_dependency "metanorma-csa", "~> 1.
|
45
|
+
spec.add_runtime_dependency "metanorma-csa", "~> 1.7.0"
|
46
46
|
#spec.add_runtime_dependency 'metanorma-ribose', "~> 1.6.0"
|
47
47
|
spec.add_runtime_dependency "metanorma-m3aawg", "~> 1.6.0"
|
48
|
+
spec.add_runtime_dependency "metanorma-bipm", "~> 1.0.0"
|
48
49
|
spec.add_runtime_dependency "metanorma-generic", "~> 1.8.0"
|
49
50
|
spec.add_runtime_dependency "metanorma-standoc", "~> 1.6.0"
|
50
51
|
#spec.add_runtime_dependency 'metanorma-mpfa', "~> 0.5.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-12-
|
11
|
+
date: 2020-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -226,14 +226,14 @@ dependencies:
|
|
226
226
|
requirements:
|
227
227
|
- - "~>"
|
228
228
|
- !ruby/object:Gem::Version
|
229
|
-
version: 1.
|
229
|
+
version: 1.7.0
|
230
230
|
type: :runtime
|
231
231
|
prerelease: false
|
232
232
|
version_requirements: !ruby/object:Gem::Requirement
|
233
233
|
requirements:
|
234
234
|
- - "~>"
|
235
235
|
- !ruby/object:Gem::Version
|
236
|
-
version: 1.
|
236
|
+
version: 1.7.0
|
237
237
|
- !ruby/object:Gem::Dependency
|
238
238
|
name: metanorma-m3aawg
|
239
239
|
requirement: !ruby/object:Gem::Requirement
|
@@ -248,6 +248,20 @@ dependencies:
|
|
248
248
|
- - "~>"
|
249
249
|
- !ruby/object:Gem::Version
|
250
250
|
version: 1.6.0
|
251
|
+
- !ruby/object:Gem::Dependency
|
252
|
+
name: metanorma-bipm
|
253
|
+
requirement: !ruby/object:Gem::Requirement
|
254
|
+
requirements:
|
255
|
+
- - "~>"
|
256
|
+
- !ruby/object:Gem::Version
|
257
|
+
version: 1.0.0
|
258
|
+
type: :runtime
|
259
|
+
prerelease: false
|
260
|
+
version_requirements: !ruby/object:Gem::Requirement
|
261
|
+
requirements:
|
262
|
+
- - "~>"
|
263
|
+
- !ruby/object:Gem::Version
|
264
|
+
version: 1.0.0
|
251
265
|
- !ruby/object:Gem::Dependency
|
252
266
|
name: metanorma-generic
|
253
267
|
requirement: !ruby/object:Gem::Requirement
|
@@ -447,11 +461,13 @@ files:
|
|
447
461
|
- lib/metanorma-cli.rb
|
448
462
|
- lib/metanorma/cli.rb
|
449
463
|
- lib/metanorma/cli/command.rb
|
464
|
+
- lib/metanorma/cli/commands/site.rb
|
450
465
|
- lib/metanorma/cli/commands/template_repo.rb
|
451
466
|
- lib/metanorma/cli/compiler.rb
|
452
467
|
- lib/metanorma/cli/errors.rb
|
453
468
|
- lib/metanorma/cli/generator.rb
|
454
469
|
- lib/metanorma/cli/git_template.rb
|
470
|
+
- lib/metanorma/cli/site_generator.rb
|
455
471
|
- lib/metanorma/cli/template_repo.rb
|
456
472
|
- lib/metanorma/cli/ui.rb
|
457
473
|
- lib/metanorma/cli/version.rb
|
@@ -475,9 +491,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
475
491
|
version: 2.4.0
|
476
492
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
477
493
|
requirements:
|
478
|
-
- - "
|
494
|
+
- - ">"
|
479
495
|
- !ruby/object:Gem::Version
|
480
|
-
version:
|
496
|
+
version: 1.3.1
|
481
497
|
requirements: []
|
482
498
|
rubygems_version: 3.0.3
|
483
499
|
signing_key:
|