From 2d8f3fba464411329eadcf41d02d542f2f4e339c Mon Sep 17 00:00:00 2001 From: Xavi Artigas Date: Tue, 6 Nov 2018 15:21:03 +0100 Subject: [PATCH] doc: Add support for DocFX (C# doc generator) Summary: Usage instructions in the README file. Test Plan: Follow the README to produce the documentation pages. Point your browser to docfx/_site/index.html to see the results. Reviewers: lauromoura, bu5hm4n, cedric, myoungwoon, zmike Reviewed By: lauromoura, bu5hm4n Subscribers: #reviewers, #committers Tags: #efl Maniphest Tasks: T7424 Differential Revision: https://phab.enlightenment.org/D7502 --- doc/docfx/.gitignore | 11 ++++ doc/docfx/README | 28 +++++++++++ doc/docfx/api/.gitignore | 5 ++ doc/docfx/api/index.md | 5 ++ doc/docfx/docfx.json | 73 +++++++++++++++++++++++++++ doc/docfx/e-logo-title.png | Bin 0 -> 4441 bytes doc/docfx/filterConfig.yml | 7 +++ doc/docfx/gendoc.sh | 26 ++++++++++ doc/docfx/index.md | 2 + doc/docfx/setup.sh | 100 +++++++++++++++++++++++++++++++++++++ doc/docfx/toc.yml | 5 ++ 11 files changed, 262 insertions(+) create mode 100644 doc/docfx/.gitignore create mode 100644 doc/docfx/README create mode 100644 doc/docfx/api/.gitignore create mode 100644 doc/docfx/api/index.md create mode 100644 doc/docfx/docfx.json create mode 100644 doc/docfx/e-logo-title.png create mode 100644 doc/docfx/filterConfig.yml create mode 100755 doc/docfx/gendoc.sh create mode 100644 doc/docfx/index.md create mode 100755 doc/docfx/setup.sh create mode 100644 doc/docfx/toc.yml diff --git a/doc/docfx/.gitignore b/doc/docfx/.gitignore new file mode 100644 index 0000000000..24c4621b34 --- /dev/null +++ b/doc/docfx/.gitignore @@ -0,0 +1,11 @@ +############### +# folder # +############### +/**/DROP/ +/**/TEMP/ +/**/packages/ +/**/bin/ +/**/obj/ +_site +images +articles diff --git a/doc/docfx/README b/doc/docfx/README new file mode 100644 index 0000000000..a35110cccf --- /dev/null +++ b/doc/docfx/README @@ -0,0 +1,28 @@ +EFL DocFX SUPPORT +----------------- + +DocFX (https://dotnet.github.io/docfx/) generates documentation HTML pages +directly from source code and Markdown files for C# projects. + +Although significantly slow, it is a simple alternative while our own +documentation generator for C# is being written. + +The scripts in this folder create a documentation site which contains the API +reference guide and articles with tutorials and guides. +The API guide is generated from the EFL mono sources, which are generated as +part of the normal build process. +The articles are fetched from the EFL www-content repository and adapted to +DocFX syntax. + +USAGE +----- + +First off, build EFL with C# support enabled so the C# sources are generated +(you will need to have mono 5 installed for this). +Then, from this folder, run the `setup.sh` script to download and extract the +DocFX binaries to the `bin` folder, fetch the articles from the `www-content` +repository and adapt them to the DocFX syntax. +Finally, run the `gendoc.sh` script (also from this folder) to produce the HTML +files. First run can take a long time (from 10' to 1h), subsequent runs use +cached results and take about 5 minutes. + diff --git a/doc/docfx/api/.gitignore b/doc/docfx/api/.gitignore new file mode 100644 index 0000000000..f798527e61 --- /dev/null +++ b/doc/docfx/api/.gitignore @@ -0,0 +1,5 @@ +############### +# temp file # +############### +*.yml +.manifest diff --git a/doc/docfx/api/index.md b/doc/docfx/api/index.md new file mode 100644 index 0000000000..2965aa1aaa --- /dev/null +++ b/doc/docfx/api/index.md @@ -0,0 +1,5 @@ +--- +uid: api-reference-root +--- +# EFL C# API reference documentation +Use the menu on the left to select a namespace or class. diff --git a/doc/docfx/docfx.json b/doc/docfx/docfx.json new file mode 100644 index 0000000000..1c5009de69 --- /dev/null +++ b/doc/docfx/docfx.json @@ -0,0 +1,73 @@ +{ + "metadata": [ + { + "src": [ + { + "src": "../..", + "files": [ + "**/*.cs" + ] + } + ], + "dest": "api", + "filter": "filterConfig.yml", + "disableGitFeatures": false, + "disableDefaultFilter": false + } + ], + "build": { + "content": [ + { + "files": [ + "api/**.yml", + "api/index.md" + ] + }, + { + "files": [ + "articles/**.md", + "articles/**/toc.yml", + "toc.yml", + "*.md" + ] + } + ], + "resource": [ + { + "files": ["e-logo-title.png"] + }, + { + "files": [ + "images/**" + ] + } + ], + "overwrite": [ + { + "files": [ + "apidoc/**.md" + ], + "exclude": [ + "obj/**", + "_site/**" + ] + } + ], + "globalMetadata": { + "_appLogoPath": "e-logo-title.png", + "_appFaviconPath": "e-logo-title.png" + }, + "dest": "_site", + "globalMetadataFiles": [], + "fileMetadataFiles": [], + "template": [ + "default" + ], + "postProcessors": [], + "markdownEngineName": "markdig", + "noLangKeyword": false, + "keepFileLink": false, + "cleanupCacheHistory": false, + "disableGitFeatures": false + } +} diff --git a/doc/docfx/e-logo-title.png b/doc/docfx/e-logo-title.png new file mode 100644 index 0000000000000000000000000000000000000000..508915f6354c69336ed80af1db3084204960cc12 GIT binary patch literal 4441 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 literal 0 HcmV?d00001 diff --git a/doc/docfx/filterConfig.yml b/doc/docfx/filterConfig.yml new file mode 100644 index 0000000000..3fe441259a --- /dev/null +++ b/doc/docfx/filterConfig.yml @@ -0,0 +1,7 @@ +apiRules: +- include: + uidRegex: ^Efl +- include: + uidRegex: ^Eina +- exclude: + uidRegex: ^.* diff --git a/doc/docfx/gendoc.sh b/doc/docfx/gendoc.sh new file mode 100755 index 0000000000..99da2d9f18 --- /dev/null +++ b/doc/docfx/gendoc.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# This script invokes the locally-installed DocFX to produce the reference +# documentation. Run it every time EO documentation changes. + +# DocFX Step 1: Generate metadata (*.yml) files +mono bin/docfx.exe metadata docfx.json + +# Process the generated metadata files: +# DocFX uses short names for all links which is inconvenient for us +# because we have multiple types with the same name in different namespaces +# ("Object" can be "Efl.Object" or "Efl.Canvas.Object"). +# MarkDown files can add "?displayProperty=fullName" to crefs to show them +# fully-qualified, but this is stripped out from triple-slash comments in C# +# source files. +# +# This script adds the displayProperty suffix to all cref links from the +# metadata yml files (by that time links have been turned into +# tags). +for f in `ls api/*.yml`; do + sed -e 's/\( /tmp/efl_docfx_setup.tmp + mv /tmp/efl_docfx_setup.tmp $f +done + +# +# Populate articles TOC file from the articles' titles +# +cd articles +rm -f toc.yml +echo "- name: Setup Guide" >> toc.yml +echo " href: www-content/pages/develop/setup/csharp/start.md" >> toc.yml +echo "- name: Tutorials" >> toc.yml +echo " items:" >> toc.yml +find www-content/pages/develop/tutorials -name "*.md" -exec sh -c "cat {} | grep '^# ' && echo ' href: {}'" \; >> toc.yml +echo "- name: Guides" >> toc.yml +echo " items:" >> toc.yml +find www-content/pages/develop/guides -name "*.md" -exec sh -c "cat {} | grep '^# ' && echo ' href: {}'" \; >> toc.yml +sed -i -e "s/^# \(.*\) #/ - name: '\1'/g" toc.yml +sed -i -e "s/ in C#//g" toc.yml +cd .. diff --git a/doc/docfx/toc.yml b/doc/docfx/toc.yml new file mode 100644 index 0000000000..6aa545deb2 --- /dev/null +++ b/doc/docfx/toc.yml @@ -0,0 +1,5 @@ +- name: REFERENCE + href: api/ + homepage: api/index.md +- name: GUIDES + href: articles/