From 160d547fa12f02344098986732f3c6e123975e97 Mon Sep 17 00:00:00 2001 From: Kenneth Bingham Date: Fri, 15 Dec 2023 13:14:47 -0500 Subject: [PATCH 1/2] initial code style guides --- .markdownlint.yaml | 256 +++++++++++++++++++++++++++++++++++++++++++++ CONTRIBUTING.md | 29 +++++ 2 files changed, 285 insertions(+) create mode 100644 .markdownlint.yaml diff --git a/.markdownlint.yaml b/.markdownlint.yaml new file mode 100644 index 00000000..6b8a9acb --- /dev/null +++ b/.markdownlint.yaml @@ -0,0 +1,256 @@ +# Example markdownlint YAML configuration with all properties set to their default value + +# Default state for all rules +default: true + +# Path to configuration file to extend +extends: null + +# MD001/heading-increment/header-increment - Heading levels should only increment by one level at a time +MD001: true + +# deprecated in favor of MD041 +# MD002/first-heading-h1/first-header-h1 - First heading should be a top-level heading + +# MD003/heading-style/header-style - Heading style +MD003: + # Heading style + style: "consistent" + +# MD004/ul-style - Unordered list style +MD004: + # List style + style: "consistent" + +# MD005/list-indent - Inconsistent indentation for list items at the same level +MD005: true + +# MD006/ul-start-left - Consider starting bulleted lists at the beginning of the line +MD006: true + +# MD007/ul-indent - Unordered list indentation +MD007: + # Spaces for indent + indent: 2 + # Whether to indent the first level of the list + start_indented: false + # Spaces for first level indent (when start_indented is set) + start_indent: 2 + +# MD009/no-trailing-spaces - Trailing spaces +MD009: false + # # Spaces for line break + # br_spaces: 2 + # # Allow spaces for empty lines in list items + # list_item_empty_lines: false + # # Include unnecessary breaks + # strict: false + +# MD010/no-hard-tabs - Hard tabs +MD010: + # Include code blocks + code_blocks: true + # Fenced code languages to ignore + ignore_code_languages: [] + # Number of spaces for each hard tab + spaces_per_tab: 1 + +# MD011/no-reversed-links - Reversed link syntax +MD011: true + +# MD012/no-multiple-blanks - Multiple consecutive blank lines +MD012: + # Consecutive blank lines + maximum: 1 + +# MD013/line-length - Line length +line_length: false +# MD013: +# # Number of characters +# line_length: 80 +# # Number of characters for headings +# heading_line_length: 80 +# # Number of characters for code blocks +# code_block_line_length: 80 +# # Include code blocks +# code_blocks: true +# # Include tables +# tables: true +# # Include headings +# headings: true +# # Include headings +# headers: true +# # Strict length checking +# strict: false +# # Stern length checking +# stern: false + +# MD014/commands-show-output - Dollar signs used before commands without showing output +MD014: true + +# MD018/no-missing-space-atx - No space after hash on atx style heading +MD018: true + +# MD019/no-multiple-space-atx - Multiple spaces after hash on atx style heading +MD019: true + +# MD020/no-missing-space-closed-atx - No space inside hashes on closed atx style heading +MD020: true + +# MD021/no-multiple-space-closed-atx - Multiple spaces inside hashes on closed atx style heading +MD021: true + +# MD022/blanks-around-headings/blanks-around-headers - Headings should be surrounded by blank lines +MD022: + # Blank lines above heading + lines_above: 1 + # Blank lines below heading + lines_below: 1 + +# MD023/heading-start-left/header-start-left - Headings must start at the beginning of the line +MD023: true + +# MD024/no-duplicate-heading/no-duplicate-header - Multiple headings with the same content +MD024: + # Only check sibling headings + allow_different_nesting: false + # Only check sibling headings + siblings_only: false + +# MD025/single-title/single-h1 - Multiple top-level headings in the same document +MD025: + # Heading level + level: 1 + # RegExp for matching title in front matter + front_matter_title: "^\\s*title\\s*[:=]" + +# MD026/no-trailing-punctuation - Trailing punctuation in heading +MD026: + # Punctuation characters + punctuation: ".,;:!。,;:!" + +# MD027/no-multiple-space-blockquote - Multiple spaces after blockquote symbol +MD027: true + +# MD028/no-blanks-blockquote - Blank line inside blockquote +MD028: true + +# MD029/ol-prefix - Ordered list item prefix +MD029: + # List style + style: "one_or_ordered" + +# MD030/list-marker-space - Spaces after list markers +MD030: + # Spaces for single-line unordered list items + ul_single: 1 + # Spaces for single-line ordered list items + ol_single: 1 + # Spaces for multi-line unordered list items + ul_multi: 1 + # Spaces for multi-line ordered list items + ol_multi: 1 + +# MD031/blanks-around-fences - Fenced code blocks should be surrounded by blank lines +MD031: + # Include list items + list_items: true + +# MD032/blanks-around-lists - Lists should be surrounded by blank lines +MD032: true + +# MD033/no-inline-html - Inline HTML +MD033: + # Allowed elements + allowed_elements: [] + +# MD034/no-bare-urls - Bare URL used +MD034: true + +# MD035/hr-style - Horizontal rule style +MD035: + # Horizontal rule style + style: "consistent" + +# MD036/no-emphasis-as-heading/no-emphasis-as-header - Emphasis used instead of a heading +MD036: + # Punctuation characters + punctuation: ".,;:!?。,;:!?" + +# MD037/no-space-in-emphasis - Spaces inside emphasis markers +MD037: true + +# MD038/no-space-in-code - Spaces inside code span elements +MD038: true + +# MD039/no-space-in-links - Spaces inside link text +MD039: true + +# MD040/fenced-code-language - Fenced code blocks should have a language specified +MD040: true + +# MD041/first-line-heading/first-line-h1 - First line in a file should be a top-level heading +MD041: + # Heading level + level: 1 + # RegExp for matching title in front matter + front_matter_title: "^\\s*title\\s*[:=]" + +# MD042/no-empty-links - No empty links +MD042: true + +# disabled because many Markdown files are partials without headings and intended for transclusion +# MD043/required-headings/required-headers - Required heading structure +# MD043: +# # List of headings +# headings: [] +# # List of headings +# headers: [] + +# MD044/proper-names - Proper names should have the correct capitalization +MD044: + # List of proper names + names: [] + # Include code blocks + code_blocks: true + # Include HTML elements + html_elements: true + +# MD045/no-alt-text - Images should have alternate text (alt text) +MD045: true + +# MD046/code-block-style - Code block style +MD046: + # Block style + style: "consistent" + +# MD047/single-trailing-newline - Files should end with a single newline character +MD047: true + +# MD048/code-fence-style - Code fence style +MD048: + # Code fence style + style: "consistent" + +# MD049/emphasis-style - Emphasis style should be consistent +MD049: + # Emphasis style should be consistent + style: "consistent" + +# MD050/strong-style - Strong style should be consistent +MD050: + # Strong style should be consistent + style: "consistent" + +# MD051/link-fragments - Link fragments should be valid +MD051: true + +# MD052/reference-links-images - Reference links and images should use a label that is defined +MD052: true + +# MD053/link-image-reference-definitions - Link and image reference definitions should be needed +MD053: + # Ignored definitions + ignored_definitions: [ + "//" + ] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 336dd084..3457f9a0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,3 +4,32 @@ NetFoundry welcomes all and any contributions. All open source projects managed [guide for contributions](https://netfoundry.github.io/policies/CONTRIBUTING.html). If you are eager to contribute to a NetFoundry-managed open source project please read and act accordingly. + +## Project Styles + +This project uses several programming languages. Each language has its own style guide specifying any language-specific +conventions and idioms. + +### Markdown + ++ This project uses [GitHub Flavored Markdown](https://github.github.com/gfm/). ++ Wrap lines at 120 characters if the audience is expected to read the source. ++ Do not wrap lines if the audience is expected to read the rendered output as HTML. ++ Use [Markdownlint](https://github.com/DavidAnson/markdownlint) with [the configuration file](.markdownlint.yaml) committed to this repository to find formatting problems. + +### Go + ++ This project uses [Go](https://golang.org/) language conventions. ++ Organize imports as a single block in alphabetical order without empty lines. ++ Begin log messages with a lowercase letter and do not end with punctuation. ++ Format log messages with format strings and arguments like 'tried a thing and failed: %s'. + +### Python + ++ This project uses [Python](https://www.python.org/) language conventions PEP-8. ++ Use [flake8](https://flake8.pycqa.org/en/latest/) with [the configuration file](.flake8) committed to this repository to find formatting problems. + +### Docusaurus + ++ This project uses [Docusaurus](https://docusaurus.io/) with NodeJS 18 to build static content for docs.zrok.io. ++ Use `npm` to manage Node modules, not `yarn` (Ken plans to switch from `npm` to `yarn` if no one else does). From d66b7c71c0f564af97125254a1d89887926e549d Mon Sep 17 00:00:00 2001 From: Kenneth Bingham Date: Mon, 8 Jan 2024 11:09:39 -0500 Subject: [PATCH 2/2] refine style guide --- CONTRIBUTING.md | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3457f9a0..515bb29f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,7 +8,7 @@ If you are eager to contribute to a NetFoundry-managed open source project pleas ## Project Styles This project uses several programming languages. Each language has its own style guide specifying any language-specific -conventions and idioms. +conventions and idioms. The log formatting examples for Go are applicable to all languages. ### Markdown @@ -21,13 +21,33 @@ conventions and idioms. + This project uses [Go](https://golang.org/) language conventions. + Organize imports as a single block in alphabetical order without empty lines. -+ Begin log messages with a lowercase letter and do not end with punctuation. ++ Begin log messages with a lowercase letter and do not end with punctuation. This log formatting guidance applies to all languages, not only Go. + + Format log messages that report errors. + + ```go + logrus.Errorf("tried a thing and failed: %v", err) + ``` + + Format in-line information in informational log messages. + + ```go + logrus.Infof("the expected value '%v' arrived as '%v'", expected, actual) + ``` + + Format in-line information in error log messages. + + ```go + logrus.Errorf("the expected value '%v did not compute: %v", value, err) + ``` + + Format log messages with format strings and arguments like 'tried a thing and failed: %s'. ### Python + This project uses [Python](https://www.python.org/) language conventions PEP-8. + Use [flake8](https://flake8.pycqa.org/en/latest/) with [the configuration file](.flake8) committed to this repository to find formatting problems. ++ Use Go log formatting guidance for Python too. ### Docusaurus