From 38350f0dfc1328543772d2aaa24bdfb589c12885 Mon Sep 17 00:00:00 2001 From: Hendrik Cannoodt Date: Thu, 17 Aug 2023 13:23:39 +0200 Subject: [PATCH 1/3] Generate reference main page from cli and config schemas Logic is still a bit hard defined: - add cli commands - add a hard defined section - add parameter groups specified by group names and regexes Remove seemingly outdated and no longer used files --- .../config.vsh.yaml | 30 ++ .../script.py | 95 ++++ reference/_metadata.yml | 9 - reference/reference.css | 9 - reference/reference.lua | 499 ------------------ reference/reference.yml | 189 ++++--- 6 files changed, 217 insertions(+), 614 deletions(-) create mode 100644 _src/automation/generate_reference_main_index_page/config.vsh.yaml create mode 100644 _src/automation/generate_reference_main_index_page/script.py delete mode 100644 reference/_metadata.yml delete mode 100644 reference/reference.css delete mode 100644 reference/reference.lua diff --git a/_src/automation/generate_reference_main_index_page/config.vsh.yaml b/_src/automation/generate_reference_main_index_page/config.vsh.yaml new file mode 100644 index 00000000..76da3a00 --- /dev/null +++ b/_src/automation/generate_reference_main_index_page/config.vsh.yaml @@ -0,0 +1,30 @@ +functionality: + name: generate_reference_main_index_page + description: | + The script reads the viash cli & config schema json schemas and assembles it to the main reference page listing + arguments: + - name: "--cli" + type: file + direction: input + description: The cli json file to use as input + required: true + must_exist: true + - name: "--config" + type: file + direction: input + description: The config json file to use as input + required: true + must_exist: true + - name: "--output" + type: file + alternatives: "-o" + direction: output + default: 'reference/reference.yml' + description: Path to use to store the index page listing + resources: + - type: python_script + path: script.py + - type: file + path: ../config_pages_settings.yaml +platforms: + - type: native diff --git a/_src/automation/generate_reference_main_index_page/script.py b/_src/automation/generate_reference_main_index_page/script.py new file mode 100644 index 00000000..076cc9a7 --- /dev/null +++ b/_src/automation/generate_reference_main_index_page/script.py @@ -0,0 +1,95 @@ +import json, re, yaml +from pathlib import Path + +## VIASH START +par = { + 'cli': 'reference/cli_schema_export.json', + 'config': 'reference/config_schema_export.json', + 'output': 'reference/cli' +} +meta = { + "resources_dir": "_src/automation/generate_reference_cli_pages" +} +## VIASH END + +output = Path(par["output"]) +# keyword_regex = r"\@\[(.*?)\]\((.*?)\)" + +config_file = Path(meta['resources_dir'], 'config_pages_settings.yaml') + +with open(config_file, 'r') as infile: + config_pages_settings = yaml.safe_load(infile) + +ref_dict = {} +def add_entry(topic, name, href): + # print(f'topic: {topic}, name: {name}, href: {href} ') + if topic in ref_dict: + ref_dict[topic].append({ 'text': name, 'href': href + '.html' }) + else: + ref_dict[topic] = [{ 'text': name, 'href': href + '.html' }] + +def generate_reference_page(): + """ Load the generated JSON files and create reference entries. """ + + # List the CLI commands + with open(par['cli'], 'r') as infile: + cli_json = json.load(infile) + + for entry in cli_json: + if "bannerCommand" in entry: + name = f'Viash {entry["name"]}'.title() + filename = entry["name"] + add_entry("Viash CLI Commands", name, f'./reference/cli/{filename}') + else: + for subcommand in entry['subcommands']: + name = f'Viash {entry["name"]} {subcommand["name"]}'.title() + filename = f'{entry["name"]}_{subcommand["name"]}' + add_entry("Viash CLI Commands", name, f'/reference/cli/{filename}') + + # Add some static pages :( + add_entry("Viash Config", "Viash Config Overview", "/reference/config/index") + add_entry("Viash Config", "Functionality", "/reference/config/functionality/index") + add_entry("Viash Config", "Viash Project Config", "/reference/project/index") + + # Add config pages highlighting field groups + with open(par['config'], 'r') as infile: + config_json = json.load(infile) + + # Regex filters. Platforms are not simply contained in a main folder, grab index files. For other matches, skip the index files. + to_document = { + '\./platforms/\w*/index': "Platforms", + '\./functionality/arguments/(?!index$)\w*': "Argument Types", + '\./functionality/resources/(?!index$)\w*': "Resource Types", + '\./platforms/docker/setup/(?!index$)\w*': "Docker Setup Requirements" + } + + for entry in config_json: + this_parameter = {} + # Get the __this__ parameter + for d in entry: + if d['name'] == '__this__': + this_parameter = d + break + + topic = this_parameter['type'] + title = re.sub(r"(\w)([A-Z])", r"\1 \2", topic).title() \ + .replace("Java Script", "JavaScript") \ + .replace("C Sharp", "C#") \ + .replace(" Argument", "") + filename = config_pages_settings['structure'][topic] + for key, value in to_document.items(): + if re.match(key, filename): + add_entry(value, title, f'/reference/config{filename.strip(".")}') + break + + # Minor final touch on the output and save to file + output = [] + for key, value in ref_dict.items(): + output.append({ 'title': key, 'links': sorted(value, key=lambda k: k['text'] ) }) + + with open(par['output'], 'w') as outfile: + outfile.write(yaml.safe_dump(output)) + +if __name__ == "__main__": + generate_reference_page() + diff --git a/reference/_metadata.yml b/reference/_metadata.yml deleted file mode 100644 index 799ff39d..00000000 --- a/reference/_metadata.yml +++ /dev/null @@ -1,9 +0,0 @@ -filters: - - reference.lua - -format: - html: - code-copy: false - css: reference.css - -search: false \ No newline at end of file diff --git a/reference/reference.css b/reference/reference.css deleted file mode 100644 index 7701dfa8..00000000 --- a/reference/reference.css +++ /dev/null @@ -1,9 +0,0 @@ -h2 { - border-bottom: none; -} - -#execution table, -div[id^=table-] { - margin-top: 30px; -} - diff --git a/reference/reference.lua b/reference/reference.lua deleted file mode 100644 index 91664fc6..00000000 --- a/reference/reference.lua +++ /dev/null @@ -1,499 +0,0 @@ - - -text = require 'text' - --- local isProject = pandoc.system.get_working_directory():find("reference/projects") - -function Div(el) - -- only process divs for projects - -- if isProject then - -- local tableType = el.attr.identifier:match("^table%-(.*)$") - -- if tableType then - -- local tableJsonPath = tableType .. ".json" - -- local tableJsonFile = io.open(tableJsonPath, "r") - -- if tableJsonFile ~= nil then - -- io.input(tableJsonFile) - -- local tableJson = io.read("*all") - -- io.close(tableJsonFile) - - -- local options = jsonDecode(tableJson) - -- el.content:insert(optionTable(options)) - -- return el - -- end - -- end - - -- end - -end - -function Pandoc(doc) - - -- -- skip for project docs - -- if isProject then - -- return doc - -- end - - - -- json file - local stem, ext = pandoc.path.split_extension(PANDOC_STATE.output_file) - local refJsonPath = stem .. ".json" - - local refJsonFile = io.open(refJsonPath, "r") - if refJsonFile ~= nil then - io.input(refJsonFile) - local refJson = io.read("*all") - io.close(refJsonFile) - - if doc.blocks:find_if(function(block) return block.t == "CodeBlock" end) == nil and - pandoc.system.get_working_directory():find("formats") then - doc.blocks:insert(pandoc.CodeBlock("format: " .. stem, pandoc.Attr("", { "yaml" }))) - end - - local groups = jsonDecode(refJson) - for _,group in ipairs(groups) do - -- title - doc.blocks:insert(pandoc.Header(2, markdownToInlines(group.name), pandoc.Attr(autoId(group.name)))) - -- optionalal description - if group.banner then - local banner = pandoc.read(group.banner).blocks - for _,blk in ipairs(banner) do - doc.blocks:insert(blk) - end - end - - -- options table - doc.blocks:insert(optionTable(group.opts)) - end - end - - return doc - -end - -function optionTable(options) - -- options table - local rows = pandoc.List() - for _,option in ipairs(options) do - local name = { pandoc.Plain( { pandoc.Code("--"..option.name) } ) } - local description = { pandoc.Plain( { pandoc.Str(option.descr) } ) } - -- local description = pandoc.read(option.descr).blocks..pandoc.read("Short: "..option.type).blocks..pandoc.read("Type: "..option.type).blocks - local row = pandoc.List( { name, description } ) - rows:insert(row) - end - - -- make the table - local optionTbl = pandoc.SimpleTable( - pandoc.List(), -- caption - { pandoc.AlignLeft, pandoc.AlignLeft }, - { 0.3, 0.7 }, - pandoc.List({}), - rows - ) - optionTbl = pandoc.utils.from_simple_table(optionTbl) - optionTbl.caption.short = nil - optionTbl.caption.long = pandoc.List() - - return optionTbl -end - -function autoId(title) - return text.lower(title):gsub("[ &]", "-"):gsub("%-%-+", "-") -end - -function markdownToInlines(str) - if str and str ~= '' then - local doc = pandoc.read(str) - return doc.blocks[1].content - else - return { pandoc.Str('') } - end -end - --- --- json.lua --- --- Copyright (c) 2020 rxi --- https://github.com/rxi/json.lua --- --- Permission is hereby granted, free of charge, to any person obtaining a copy of --- this software and associated documentation files (the "Software"), to deal in --- the Software without restriction, including without limitation the rights to --- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies --- of the Software, and to permit persons to whom the Software is furnished to do --- so, subject to the following conditions: --- --- The above copyright notice and this permission notice shall be included in all --- copies or substantial portions of the Software. --- --- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE --- SOFTWARE. --- - -local json = { _version = "0.1.2" } - -------------------------------------------------------------------------------- --- Encode -------------------------------------------------------------------------------- - -local encode - -local escape_char_map = { - [ "\\" ] = "\\", - [ "\"" ] = "\"", - [ "\b" ] = "b", - [ "\f" ] = "f", - [ "\n" ] = "n", - [ "\r" ] = "r", - [ "\t" ] = "t", -} - -local escape_char_map_inv = { [ "/" ] = "/" } -for k, v in pairs(escape_char_map) do - escape_char_map_inv[v] = k -end - - -local function escape_char(c) - return "\\" .. (escape_char_map[c] or string.format("u%04x", c:byte())) -end - - -local function encode_nil(val) - return "null" -end - - -local function encode_table(val, stack) - local res = {} - stack = stack or {} - - -- Circular reference? - if stack[val] then error("circular reference") end - - stack[val] = true - - if rawget(val, 1) ~= nil or next(val) == nil then - -- Treat as array -- check keys are valid and it is not sparse - local n = 0 - for k in pairs(val) do - if type(k) ~= "number" then - error("invalid table: mixed or invalid key types") - end - n = n + 1 - end - if n ~= #val then - error("invalid table: sparse array") - end - -- Encode - for i, v in ipairs(val) do - table.insert(res, encode(v, stack)) - end - stack[val] = nil - return "[" .. table.concat(res, ",") .. "]" - - else - -- Treat as an object - for k, v in pairs(val) do - if type(k) ~= "string" then - error("invalid table: mixed or invalid key types") - end - table.insert(res, encode(k, stack) .. ":" .. encode(v, stack)) - end - stack[val] = nil - return "{" .. table.concat(res, ",") .. "}" - end -end - - -local function encode_string(val) - return '"' .. val:gsub('[%z\1-\31\\"]', escape_char) .. '"' -end - - -local function encode_number(val) - -- Check for NaN, -inf and inf - if val ~= val or val <= -math.huge or val >= math.huge then - error("unexpected number value '" .. tostring(val) .. "'") - end - return string.format("%.14g", val) -end - - -local type_func_map = { - [ "nil" ] = encode_nil, - [ "table" ] = encode_table, - [ "string" ] = encode_string, - [ "number" ] = encode_number, - [ "boolean" ] = tostring, -} - - -encode = function(val, stack) - local t = type(val) - local f = type_func_map[t] - if f then - return f(val, stack) - end - error("unexpected type '" .. t .. "'") -end - - -function jsonEncode(val) - return ( encode(val) ) -end - - -------------------------------------------------------------------------------- --- Decode -------------------------------------------------------------------------------- - -local parse - -local function create_set(...) - local res = {} - for i = 1, select("#", ...) do - res[ select(i, ...) ] = true - end - return res -end - -local space_chars = create_set(" ", "\t", "\r", "\n") -local delim_chars = create_set(" ", "\t", "\r", "\n", "]", "}", ",") -local escape_chars = create_set("\\", "/", '"', "b", "f", "n", "r", "t", "u") -local literals = create_set("true", "false", "null") - -local literal_map = { - [ "true" ] = true, - [ "false" ] = false, - [ "null" ] = nil, -} - - -local function next_char(str, idx, set, negate) - for i = idx, #str do - if set[str:sub(i, i)] ~= negate then - return i - end - end - return #str + 1 -end - - -local function decode_error(str, idx, msg) - local line_count = 1 - local col_count = 1 - for i = 1, idx - 1 do - col_count = col_count + 1 - if str:sub(i, i) == "\n" then - line_count = line_count + 1 - col_count = 1 - end - end - error( string.format("%s at line %d col %d", msg, line_count, col_count) ) -end - - -local function codepoint_to_utf8(n) - -- http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=iws-appendixa - local f = math.floor - if n <= 0x7f then - return string.char(n) - elseif n <= 0x7ff then - return string.char(f(n / 64) + 192, n % 64 + 128) - elseif n <= 0xffff then - return string.char(f(n / 4096) + 224, f(n % 4096 / 64) + 128, n % 64 + 128) - elseif n <= 0x10ffff then - return string.char(f(n / 262144) + 240, f(n % 262144 / 4096) + 128, - f(n % 4096 / 64) + 128, n % 64 + 128) - end - error( string.format("invalid unicode codepoint '%x'", n) ) -end - - -local function parse_unicode_escape(s) - local n1 = tonumber( s:sub(1, 4), 16 ) - local n2 = tonumber( s:sub(7, 10), 16 ) - -- Surrogate pair? - if n2 then - return codepoint_to_utf8((n1 - 0xd800) * 0x400 + (n2 - 0xdc00) + 0x10000) - else - return codepoint_to_utf8(n1) - end -end - - -local function parse_string(str, i) - local res = "" - local j = i + 1 - local k = j - - while j <= #str do - local x = str:byte(j) - - if x < 32 then - decode_error(str, j, "control character in string") - - elseif x == 92 then -- `\`: Escape - res = res .. str:sub(k, j - 1) - j = j + 1 - local c = str:sub(j, j) - if c == "u" then - local hex = str:match("^[dD][89aAbB]%x%x\\u%x%x%x%x", j + 1) - or str:match("^%x%x%x%x", j + 1) - or decode_error(str, j - 1, "invalid unicode escape in string") - res = res .. parse_unicode_escape(hex) - j = j + #hex - else - if not escape_chars[c] then - decode_error(str, j - 1, "invalid escape char '" .. c .. "' in string") - end - res = res .. escape_char_map_inv[c] - end - k = j + 1 - - elseif x == 34 then -- `"`: End of string - res = res .. str:sub(k, j - 1) - return res, j + 1 - end - - j = j + 1 - end - - decode_error(str, i, "expected closing quote for string") -end - - -local function parse_number(str, i) - local x = next_char(str, i, delim_chars) - local s = str:sub(i, x - 1) - local n = tonumber(s) - if not n then - decode_error(str, i, "invalid number '" .. s .. "'") - end - return n, x -end - - -local function parse_literal(str, i) - local x = next_char(str, i, delim_chars) - local word = str:sub(i, x - 1) - if not literals[word] then - decode_error(str, i, "invalid literal '" .. word .. "'") - end - return literal_map[word], x -end - - -local function parse_array(str, i) - local res = {} - local n = 1 - i = i + 1 - while 1 do - local x - i = next_char(str, i, space_chars, true) - -- Empty / end of array? - if str:sub(i, i) == "]" then - i = i + 1 - break - end - -- Read token - x, i = parse(str, i) - res[n] = x - n = n + 1 - -- Next token - i = next_char(str, i, space_chars, true) - local chr = str:sub(i, i) - i = i + 1 - if chr == "]" then break end - if chr ~= "," then decode_error(str, i, "expected ']' or ','") end - end - return res, i -end - - -local function parse_object(str, i) - local res = {} - i = i + 1 - while 1 do - local key, val - i = next_char(str, i, space_chars, true) - -- Empty / end of object? - if str:sub(i, i) == "}" then - i = i + 1 - break - end - -- Read key - if str:sub(i, i) ~= '"' then - decode_error(str, i, "expected string for key") - end - key, i = parse(str, i) - -- Read ':' delimiter - i = next_char(str, i, space_chars, true) - if str:sub(i, i) ~= ":" then - decode_error(str, i, "expected ':' after key") - end - i = next_char(str, i + 1, space_chars, true) - -- Read value - val, i = parse(str, i) - -- Set - res[key] = val - -- Next token - i = next_char(str, i, space_chars, true) - local chr = str:sub(i, i) - i = i + 1 - if chr == "}" then break end - if chr ~= "," then decode_error(str, i, "expected '}' or ','") end - end - return res, i -end - - -local char_func_map = { - [ '"' ] = parse_string, - [ "0" ] = parse_number, - [ "1" ] = parse_number, - [ "2" ] = parse_number, - [ "3" ] = parse_number, - [ "4" ] = parse_number, - [ "5" ] = parse_number, - [ "6" ] = parse_number, - [ "7" ] = parse_number, - [ "8" ] = parse_number, - [ "9" ] = parse_number, - [ "-" ] = parse_number, - [ "t" ] = parse_literal, - [ "f" ] = parse_literal, - [ "n" ] = parse_literal, - [ "[" ] = parse_array, - [ "{" ] = parse_object, -} - - -parse = function(str, idx) - local chr = str:sub(idx, idx) - local f = char_func_map[chr] - if f then - return f(str, idx) - end - decode_error(str, idx, "unexpected character '" .. chr .. "'") -end - - -function jsonDecode(str) - if type(str) ~= "string" then - error("expected argument of type string, got " .. type(str)) - end - local res, idx = parse(str, next_char(str, 1, space_chars, true)) - idx = next_char(str, idx, space_chars, true) - if idx <= #str then - decode_error(str, idx, "trailing garbage") - end - return res -end - - diff --git a/reference/reference.yml b/reference/reference.yml index 7af0a3c9..76a95284 100644 --- a/reference/reference.yml +++ b/reference/reference.yml @@ -1,97 +1,92 @@ -- title: "Viash CLI Commands" - links: - - text: Viash Build - href: /reference/cli/build.html - - text: Viash Config View - href: /reference/cli/config_view.html - - text: Viash Config Inject - href: /reference/cli/config_inject.html - - text: Viash Ns Build - href: /reference/cli/ns_build.html - - text: Viash Ns Test - href: /reference/cli/ns_test.html - - text: Viash Ns List - href: /reference/cli/ns_list.html - - text: Viash Ns Exec - href: /reference/cli/ns_exec.html - - text: Viash Run - href: /reference/cli/run.html - - text: Viash Test - href: /reference/cli/test.html - -- title: "Viash Config" - links: - - text: Viash Config Overview - href: /reference/config/index.html - - text: Functionality - href: /reference/config/functionality/index.html - - text: Viash Project Config - href: /reference/project/index.html - -- title: "Platforms" - links: - - text: Native Platform - href: /reference/config/platforms/native/index.html - - text: Docker Platform - href: /reference/config/platforms/docker/index.html - - text: Nextflow Platform - href: /reference/config/platforms/nextflow/index.html - -- title: "Argument Types" - links: - - text: Boolean_False - href: /reference/config/functionality/arguments/boolean_false.html - - text: Boolean_True - href: /reference/config/functionality/arguments/boolean_true.html - - text: Boolean - href: /reference/config/functionality/arguments/boolean.html - - text: Double - href: /reference/config/functionality/arguments/double.html - - text: File - href: /reference/config/functionality/arguments/file.html - - text: Integer - href: /reference/config/functionality/arguments/integer.html - - text: Long - href: /reference/config/functionality/arguments/long.html - - text: String - href: /reference/config/functionality/arguments/string.html - -- title: "Resource Types" - links: - - text: Bash Script - href: /reference/config/functionality/resources/bashScript.html - - text: C# Script - href: /reference/config/functionality/resources/cSharpScript.html - - text: Executable - href: /reference/config/functionality/resources/executable.html - - text: JavaScript Script - href: /reference/config/functionality/resources/javaScriptScript.html - - text: Nextflow Script - href: /reference/config/functionality/resources/nextflowScript.html - - text: Plain File - href: /reference/config/functionality/resources/plainFile.html - - text: Python Script - href: /reference/config/functionality/resources/pythonScript.html - - text: R Script - href: /reference/config/functionality/resources/rScript.html - - text: Scala Script - href: /reference/config/functionality/resources/scalaScript.html - -- title: "Docker Setup Requirements" - links: - - text: Apk - href: /reference/config/platforms/docker/setup/apkRequirements.html - - text: Apt - href: /reference/config/platforms/docker/setup/aptRequirements.html - - text: Docker - href: /reference/config/platforms/docker/setup/dockerRequirements.html - - text: JavaScript - href: /reference/config/platforms/docker/setup/javascriptRequirements.html - - text: Python - href: /reference/config/platforms/docker/setup/pythonRequirements.html - - text: R - href: /reference/config/platforms/docker/setup/rRequirements.html - - text: Ruby - href: /reference/config/platforms/docker/setup/rubyRequirements.html - - text: Yum - href: /reference/config/platforms/docker/setup/yumRequirements.html +- links: + - href: ./reference/cli/build.html + text: Viash Build + - href: /reference/cli/config_inject.html + text: Viash Config Inject + - href: /reference/cli/config_view.html + text: Viash Config View + - href: /reference/cli/ns_build.html + text: Viash Ns Build + - href: /reference/cli/ns_exec.html + text: Viash Ns Exec + - href: /reference/cli/ns_list.html + text: Viash Ns List + - href: /reference/cli/ns_test.html + text: Viash Ns Test + - href: ./reference/cli/run.html + text: Viash Run + - href: ./reference/cli/test.html + text: Viash Test + title: Viash CLI Commands +- links: + - href: /reference/config/functionality/index.html + text: Functionality + - href: /reference/config/index.html + text: Viash Config Overview + - href: /reference/project/index.html + text: Viash Project Config + title: Viash Config +- links: + - href: /reference/config/platforms/docker/index.html + text: Docker Platform + - href: /reference/config/platforms/native/index.html + text: Native Platform + - href: /reference/config/platforms/nextflow/index.html + text: Nextflow Platform + title: Platforms +- links: + - href: /reference/config/platforms/docker/setup/apkRequirements.html + text: Apk Requirements + - href: /reference/config/platforms/docker/setup/aptRequirements.html + text: Apt Requirements + - href: /reference/config/platforms/docker/setup/dockerRequirements.html + text: Docker Requirements + - href: /reference/config/platforms/docker/setup/javascriptRequirements.html + text: JavaScript Requirements + - href: /reference/config/platforms/docker/setup/pythonRequirements.html + text: Python Requirements + - href: /reference/config/platforms/docker/setup/rRequirements.html + text: R Requirements + - href: /reference/config/platforms/docker/setup/rubyRequirements.html + text: Ruby Requirements + - href: /reference/config/platforms/docker/setup/yumRequirements.html + text: Yum Requirements + title: Docker Setup Requirements +- links: + - href: /reference/config/functionality/arguments/boolean.html + text: Boolean + - href: /reference/config/functionality/arguments/boolean_false.html + text: Boolean False + - href: /reference/config/functionality/arguments/boolean_true.html + text: Boolean True + - href: /reference/config/functionality/arguments/double.html + text: Double + - href: /reference/config/functionality/arguments/file.html + text: File + - href: /reference/config/functionality/arguments/integer.html + text: Integer + - href: /reference/config/functionality/arguments/long.html + text: Long + - href: /reference/config/functionality/arguments/string.html + text: String + title: Argument Types +- links: + - href: /reference/config/functionality/resources/bashScript.html + text: Bash Script + - href: /reference/config/functionality/resources/cSharpScript.html + text: C# Script + - href: /reference/config/functionality/resources/executable.html + text: Executable + - href: /reference/config/functionality/resources/javaScriptScript.html + text: JavaScript Script + - href: /reference/config/functionality/resources/nextflowScript.html + text: Nextflow Script + - href: /reference/config/functionality/resources/plainFile.html + text: Plain File + - href: /reference/config/functionality/resources/pythonScript.html + text: Python Script + - href: /reference/config/functionality/resources/rScript.html + text: R Script + - href: /reference/config/functionality/resources/scalaScript.html + text: Scala Script + title: Resource Types From 39139273be048f3a60d950cc2085fe416961ea6a Mon Sep 17 00:00:00 2001 From: Hendrik Cannoodt Date: Thu, 17 Aug 2023 13:26:32 +0200 Subject: [PATCH 2/3] Add the new script to the _src/render_pages.sh script --- _src/render_pages.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/_src/render_pages.sh b/_src/render_pages.sh index 43ff0759..b3d792fc 100755 --- a/_src/render_pages.sh +++ b/_src/render_pages.sh @@ -23,3 +23,8 @@ echo "Creating config information" viash export config_schema --output ./reference/config_schema_export.json --format json viash run _src/automation/generate_reference_config_pages/config.vsh.yaml -- \ --input ./reference/config_schema_export.json + +echo "Creating reference main page" +viash run ./_src/automation/generate_reference_main_index_page/config.vsh.yaml -- \ + --cli ./reference/cli_schema_export.json \ + --config ./reference/config_schema_export.json \ No newline at end of file From 239c30b142f3fab7bb9b2c41ce7b6a7875c5bcba Mon Sep 17 00:00:00 2001 From: Hendrik Cannoodt Date: Thu, 17 Aug 2023 14:29:43 +0200 Subject: [PATCH 3/3] Update `Viash Config` section and add the `Miscellaneous` --- .../script.py | 11 ++++++--- reference/reference.yml | 24 +++++++++++++------ 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/_src/automation/generate_reference_main_index_page/script.py b/_src/automation/generate_reference_main_index_page/script.py index 076cc9a7..74a22dfc 100644 --- a/_src/automation/generate_reference_main_index_page/script.py +++ b/_src/automation/generate_reference_main_index_page/script.py @@ -39,7 +39,7 @@ def generate_reference_page(): if "bannerCommand" in entry: name = f'Viash {entry["name"]}'.title() filename = entry["name"] - add_entry("Viash CLI Commands", name, f'./reference/cli/{filename}') + add_entry("Viash CLI Commands", name, f'/reference/cli/{filename}') else: for subcommand in entry['subcommands']: name = f'Viash {entry["name"]} {subcommand["name"]}'.title() @@ -47,9 +47,14 @@ def generate_reference_page(): add_entry("Viash CLI Commands", name, f'/reference/cli/{filename}') # Add some static pages :( - add_entry("Viash Config", "Viash Config Overview", "/reference/config/index") + add_entry("Viash Config", "Config Overview", "/reference/config/index") add_entry("Viash Config", "Functionality", "/reference/config/functionality/index") - add_entry("Viash Config", "Viash Project Config", "/reference/project/index") + add_entry("Viash Config", "Platforms", "/reference/config/platforms/index") + add_entry("Miscellaneous", "Project Config", "/reference/project/index") + add_entry("Miscellaneous", "Environment Variables", "/reference/config/environmentVariables") + add_entry("Miscellaneous", "Config Mods", "/reference/config_mods/index") + add_entry("Miscellaneous", "Viash Code Block", "/reference/viash_code_block/index") + # Add config pages highlighting field groups with open(par['config'], 'r') as infile: diff --git a/reference/reference.yml b/reference/reference.yml index 76a95284..fc7ce951 100644 --- a/reference/reference.yml +++ b/reference/reference.yml @@ -1,5 +1,5 @@ - links: - - href: ./reference/cli/build.html + - href: /reference/cli/build.html text: Viash Build - href: /reference/cli/config_inject.html text: Viash Config Inject @@ -13,19 +13,29 @@ text: Viash Ns List - href: /reference/cli/ns_test.html text: Viash Ns Test - - href: ./reference/cli/run.html + - href: /reference/cli/run.html text: Viash Run - - href: ./reference/cli/test.html + - href: /reference/cli/test.html text: Viash Test title: Viash CLI Commands - links: + - href: /reference/config/index.html + text: Config Overview - href: /reference/config/functionality/index.html text: Functionality - - href: /reference/config/index.html - text: Viash Config Overview - - href: /reference/project/index.html - text: Viash Project Config + - href: /reference/config/platforms/index.html + text: Platforms title: Viash Config +- links: + - href: /reference/config_mods/index.html + text: Config Mods + - href: /reference/config/environmentVariables.html + text: Environment Variables + - href: /reference/project/index.html + text: Project Config + - href: /reference/viash_code_block/index.html + text: Viash Code Block + title: Miscellaneous - links: - href: /reference/config/platforms/docker/index.html text: Docker Platform