Giter VIP home page Giter VIP logo

docs-seed's Introduction

docs-seed repo

Contains the documentation site implementation.

Local Setup

This section describes the best practices about what and how needs to be done to run the documentation locally.

Prerequisites

  • Install Docker (Community Edititon(CE) is enough):
    • Use the official Docker installation guide. Accept the default installation instructions (use Linux containers, and so on).
    • From the Docker Settings window, share the drive where the documentation repos reside with Docker.
  • Install Node.js and restart the machine.
  • Choose a repo you want to contribute to (for example, https://github.com/telerik/xaml-docs.git. We will refer to that repo later on as 'MY-REPO'.
  • Pull the documentation repo onto your hard drive (for example, "D:\Work\xaml-docs"). We will refer to the local path, where the documentation repo is cloned, as 'DOCS-PATH'.
  • For products such as Kendo UI for jQuery, UI for ASP.NET MVC, and UI for ASP.NET Core, the documentation is part of source code repo. For these products, 'DOCS-PATH' is actually a nested folder in the cloned repo, for example, "D:\Work\kendo-ui-core\docs".
  • If you are not able to install and use Docker, go to Instructions (without Docker). Otherwise, continue to the next section.

Instructions (with Docker)

  1. Clone the current (seed) repo.
git clone [email protected]:telerik/docs-seed.git
  1. Go to the directory in which you've pulled it (for example, D:\Work\docs-seed).
  2. Open a terminal of your choice (for example, gitBash).
  3. Run the following command by passing the DOCS-PATH path (the quotes are mandatory):
sh copy_local.sh "D:\Work\xaml-docs"

If you are running the documentation on a MacOS or another OS where the robocopy command is unavailable, pass a second parameter to the copy_local.sh script: sh copy_local.sh "D:\Work\xaml-docs" true.

  1. Go to the DOCS-PATH directory.
  2. Open a terminal of your choice (for example, gitBash).
  3. Execute the following bash command in the root folder (where the Dockerfile is located).
sh start-docs.sh
  1. Open the documentation site on the server address which is written in the terminal: http://0.0.0.0:4000/. If you can't open the URL, replace the 0.0.0.0 with localhost: http://localhost:4000. For example, for the WPF documentation, this will be http://0.0.0.0:4000/devtools/wpf/.

  2. To stop the web site and the container in which it has been served, navigate to the terminal in which you've executed the previous command, and press CTRL+C. On passing an additional config file for the WPF and Silverlight documentation, refer to this section.

Instructions (without Docker)

  1. Install ruby 2.3.3 (64bit or 32bit).
  2. Install Ruby DevKit 4.7.2 (64bit or 32bit). For more informatin, see the Development Kit - Installation instructions.
  3. Ensure that everything is correctly installed especially if you have previous versions installed on the machine (for example, check whether the config.yml file in the DevKit root folder contains the correct path to the ruby folder and check whether the system environmnet variables are correctly set). For more information, refer to this article.
  4. Install bundler (if you have already installed, continue to the next step) by executing gem install bundler.

If you encounter SSL errors with Bundler, similar to the one described in RubyGems SSL Certificate Update, then follow the solution steps shared in Bundler.io - Installing new RubyGems certificates.

  1. Clone the current (seed) repo.
git clone [email protected]:telerik/docs-seed.git
  1. Go to the directory in which you've pulled the current (seed) repo (for example, D:\Work\docs-seed).
  2. Open a terminal of your choice (for example, gitBash).
  3. Run the following command by passing the DOCS-PATH path (the quotes are mandatory):
sh copy_local.sh "D:\Work\xaml-docs"

If you are running the documentation on a MacOS or another OS where the robocopy command is unavailable, pass a second parameter to the copy_local.sh script: sh copy_local.sh "D:\Work\xaml-docs" true.

  1. Go to the DOCS-PATH directory.
  2. Open a terminal of your choice (for example, gitBash).
  3. Install gems by executing bundle install.
  4. Execute the following bash command in the root folder:
bundle exec jekyll serve
  1. Open the documentation site on the server address which is written in the terminal: http://127.0.0.1:4000/. If you can't open the URL, replace the 127.0.0.1 with localhost: http://localhost:4000. For example, for the WPF documentation, this will be http://127.0.0.1:4000/devtools/wpf/.

  2. To change the host or port, pass the --host or --port arguments to the command above as an addition (for example, bundle exec jekyll serve --host=0.0.0.0 --port=1234).

Troubleshooting

Get More Detailed Error Message

To get more information and a full stacktrace of the error, add --trace after your jekyll command. For example, bundle exec jekyll build --trace.

Does Not Serve

You executed sh start-docs.sh but you did not see any Jekyll output. Instead, the command ended with the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'.

This happens whtn using Git Bash with the MinTTY console. This console does not allow combinations such as Ctrl+C to pass to the Docker container and that's why you get such an error.

To solve this issue, prefix the command with winpty:

winpty sh start-docs.sh

Aa an alternative, re-install Git Bash and choose the default Windows terminal this time. For more detailes, refer to the Docker for Windows: Interactive Sessions in MinTTY Git Bash post.

Ctrl+C Does Not Work

When you want to stop serving the docs, you may have to repeat the Ctrl+C command or press Enter after it.

.gitignore Is always Modified

The scripts that copy the seed repo to the content repo (MY-REPO) also update the .gitignore file to avoid creating unstanged changestogether with the work files that must not be commited. If you keep getting the .gitignore checked out, identify the changes as compared to the original and commit the version that matches what the tool generates to your repo.

Performance

Docker is a resource-intensive tool. If you are not using it on a daily basis, consider preventing it from running on startup. Right-click its Tray icon and navigate to Settings > General. Uncheck Start Docker when you log in. This can save you time when booting up/logging in, but you will need to explicitly start Docker before working on any docs-seed documentation.

Also, it tends to require a lot of HDD space, which may be an issue if you are running it on an SSD drive with a limited capacity. You can reduce its quota by navigating to the Settings dialog > Advanced and either change the image location, and/or reduce its max size. This also lets you limit its RAM consumption.

Encoding Problems while Building

When you try to build the documentation site, you may see an error including the following incomplete "\n" on UTF-16LE message. It might be caused because of different things. Use the following steps to try to fix or workaround it:

  1. Ensure Node.js is installed by typing node -v in a command prompt. The machine must be restarted after a Node.js installation.
  2. Allow files with long paths using the following command:
git config --system core.longpaths true
  1. Add the following System Environment Variables
  • JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
  • LANG: en_GB.UTF-8
  1. Modify the runtimes.rb file in the execJs gem by changing the UTF-16LE with the UTF-8 value. For details, see the instructions here or here. The runtimes.rb file is located in [Ruby Installation folder]\lib\ruby\gems\2.3.0\gems\execjs-2.7.0\lib\execjs.

Known Error Messages

  • jekyll 3.3.1 | Error: [prev_next plugin] Comparing the pages notes.md and sitemap.xml failed

    • Usually happens when a new article does not have position property in the front-matter. To solve this issue, add a number to the position property. If you want some articles to sort alphabetically, they need to have the same position value.
    • It might also happen if a folder or a file is magically added to the docs repo folder. To solve this issue, clean the folder and make a fresh clone of the docs repo.
  • jekyll 3.3.1 | Error: 404 Not Found—This is often observed when you create a new documentations and when no entry for the product in the Top Navigation list exists. To solve this issue, add an entry for your documentation as in the feat: add MAUI to top navigation commit for the /_plugins/top_navigation.rb file. If the Telerik Web Team do not have the Top Navigation ready yet, you can temporarily reuse the top navigation value property from another product to make the build successful.

Extra Features

You can benefit from the following features:

Additional Config File

To add an additional config.yml file, pass it to the above command as follows:

sh start-docs.sh _silverlight.yml

LiveSync

To be able to monitor the changes you are making on the built documentation, execute the following command in a new terminal in the root directory of the site:

sh watch.sh

You need to have Node.js installed.

Only Build

To only run jekyll build and not jekyll serve, execute the following bash command:

sh build-docs.sh

This can be useful if you want to (or already have) set up a local IIS to point to the _site folder in your documentation repo. This allows you to also test redirects that jekyll serve does not support.

Build Site Partially

To speed up the building time of the web site, you can pass only specific parts of it—the folders you want to include in the site.

To acieve this, execute the sh modify-config.sh script with passing the corresponding arguments which are:

  • -i,--include—The folders you want to include in the final build. Multiple folders are separated with a comma. No spaces are allowed.
  • -c,--config—The path to an additional config file which will be used for the build (more about additional config file).
  • -s,--serve—Accepts true/false. Indicates whether the Jekyll will only build or build and serve.
  • -d,--docker—Accepts true/false. Indicates whether the site will be run in Docker (set --docker=true if you're using Docker).

For example, let's say that you want to build only the documentation for two controls, the Barcode and the Chart, you are using Docker, and you have an extra config YAML file. Then you have to open a terminal and execute the following command:

sh modify-config.sh --include=controls/barcode,controls/Chart --docker=true --config=_extra.yml

Exclude Articles from Navigation Tree

If you have some obsolete articles or whole folders that you need to hide from the navigation tree, use the exclude_navigation array in the settings of the config.yml file in your repository. The example below shows how to exclude listing all articles in knowledge-base folder as well as sharepoint folder.

For example, from https://github.com/telerik/ajax-docs/blob/master/_config.yml#L6, exclude_navigation: ["sharepoint/2007/*" ,"knowledge-base/*"]

Webinar Banner

Moved in wiki under the Announcements banner article.

Build API Reference

There is an infrastructure that uses DocFx to generate an API reference portion of the site for you. To use it, you need the following:

  • The docs-seed repo on your build machine. This should already be set up.

  • An API ref link in your table of contents on the left. To enable it, add the following line in your _config.yml file:

    _config.yml

      `api_reference_url: "api/"`
    
  • A folder on a shared network location that the build can access, and that contains the .dll and .xml files you want generated.

  • The assets for building the API reference in your repo. You can start by copying existing assets, for example, from Winforms. Note that the templates are plain HTML for the time being, so you must keep them in sync with your actual repo code manually: update the footer template with the generated HTML of your own docs, make sure the search template can reach the scripts it needs (can be an issue mostly if you have cache busting enabled in your own repo). Also, update the index.md file to have the contents suitable for your case. Keep them updated if you change your own repo as well.

  • An MSBuild step in your content repo builds that will take the binaries, xml files and content repo, build the HTML files for the API ref, and copy them to the _site/api folder in your content repo.

    This build is executed through the _buildApi/BuildApiReference.proj file. For example, in the VS command prompt: msbuild.exe BuildApiReference.proj /p:LatestBinariesPath=\\\\someNetworkServer\MySourceFiles;DocsRepoName=blazor-docs;DocumentationBaseUrl=https://docs.telerik.com/blazor-ui;DocsRepoApiAssetsFolder=_assetsApi;HasApiFilter=true.

    Here is a list of the build parameters and their purpose:

    • LatestBinariesPath—The path to where you have the .dll+.xml pairs of code you want documented. The format is usually something like \\\\someNetworkServer\MySourceFiles or C:\work\myFolder. The escaping of the backslashes is an example for using this as a build parameter.

    • DocsRepoName—The name of the repo with your actual contents. The build assumes the docs-seed repo and the content repo are in adjacent folders. So, it is, for example just blazor-docs or winforms-docs, or teststudio/docs (when the docs are nested further down in a folder inside your repo).

    • DocumentationBaseUrl—The base URL of your docs when on the live server. Used for the sitemap.xml file. For example, https://docs.telerik.com/blazor-ui/.

    • DocsRepoApiAssetsFolder—This is where the build assets specific to your repo reside (at the time of writing, search, footer templates, feedback form, plus a little of bit of styles). If you copy from an existing repo, this would always be _assetsApi.

    • HasApiFilter—An optional parameter in case you want to avoid generating API reference docs for certain classes or their members. See the DocFx docs on the matter for syntax and examples. To use this filter, you must add a file in your repo with the desired filter contents, and put it in <DocsRepoApiAssetsFolder>\filterConfig.yml. The file is always at the root of the API assets folder, and is always called filterConfig.yml. Here's what docfx generate at the time of writing (10 Jul 2019, docfx version 2.40.5):

      C#

      //GENERATED
      public string publicTest;
      protected string protectedTest;
      protected internal string protectedInternalTest;
      
      //NOT GENERATED
      private string privateTest;
      internal string internalTest;
      private protected string privateProtectedTest;
      

New Documentation

If you need to create new documentation (for example, for a new product), use docs-content-seed repository as an auxiliary part to this one.

For best practices and industry standards on creating and maintaining documentation, go to the public Progress DevTools Style Guide.

docs-seed's People

Contributors

imtodor avatar pepinho24 avatar iankodj avatar marin-bratanov avatar dimodi avatar nikolay-nenkov avatar tanyadimitrova avatar dilyantraykov avatar stoskov avatar jivanova avatar viktoriaggr avatar ipeshev avatar alex-bubblemaster avatar attilaantal avatar ivandanchev avatar mparvanov avatar svdimitr avatar victachev avatar martinivanoff avatar vladimir-stoyanov avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.