diff --git a/.gitignore b/.gitignore
index 4a01c6b6..12aff8f1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,5 +9,6 @@
.idea
.vscode
+/docs/protos.md
/google
/bindings/node/src
diff --git a/Makefile b/Makefile
index e0364f9b..6338781f 100644
--- a/Makefile
+++ b/Makefile
@@ -30,6 +30,7 @@ BUF_VERSION := 1.1.1
BUF_INSTALL_FROM_SOURCE := false
PROTOC_VERSION := 3.19.4
+PROTOC_GEN_DOC_VERSION := 1.5.1
GRPC_TOOLS_VERSION := 1.11.2
TS_PROTOC_GEN_VERSION := 0.15.0
@@ -103,6 +104,20 @@ $(PROTOC):
@mkdir -p $(dir $(PROTOC))
@touch $(PROTOC)
+# PROTOC_GEN_DOC points to the marker file for the installed version.
+#
+# If PROTOC_GEN_DOC_VERSION is changed, the binary will be re-downloaded.
+PROTOC_GEN_DOC := $(CACHE_VERSIONS)/protoc-gen-doc/$(PROTOC_GEN_DOC_VERSION)
+$(PROTOC_GEN_DOC):
+ @rm -f $(CACHE_BIN)/protoc-gen-doc
+ @mkdir -p $(CACHE_BIN)
+ $(eval PROTOC_GEN_DOC_TMP := $(shell mktemp -d))
+ cd $(PROTOC_GEN_DOC_TMP); go get github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc@v$(PROTOC_GEN_DOC_VERSION)
+ @rm -rf $(PROTOC_GEN_DOC_TMP)
+ @rm -rf $(dir $(PROTOC_GEN_DOC))
+ @mkdir -p $(dir $(PROTOC_GEN_DOC))
+ @touch $(PROTOC_GEN_DOC)
+
# GRPC_TOOLS points to the marker file for the installed version.
#
# If GRPC_TOOLS_VERSION is changed, the binary will be re-downloaded.
@@ -172,7 +187,7 @@ $(GRPC_STATUS_PROTO):
-o "$(GRPC_STATUS_PROTO)"
.PHONY: genprotos
-genprotos: $(BUF) $(PROTOC) $(GRPC_TOOLS) $(TS_PROTOC_GEN) $(GRPC_STATUS_PROTO)
+genprotos: $(BUF) $(PROTOC) $(PROTOC_GEN_DOC) $(GRPC_TOOLS) $(TS_PROTOC_GEN) $(GRPC_STATUS_PROTO)
buf generate --template buf.gen.yaml
.PHONY: gennode
diff --git a/buf.gen.yaml b/buf.gen.yaml
index b32c25c2..9f1c5c1b 100644
--- a/buf.gen.yaml
+++ b/buf.gen.yaml
@@ -1,5 +1,11 @@
version: v1
plugins:
+ - name: doc
+ out: docs
+ opt:
+ - markdown
+ - protos.md
+ strategy: all
- name: js
out: bindings/node/src
opt:
diff --git a/docs/.gitignore b/docs/.gitignore
new file mode 100644
index 00000000..74a9223a
--- /dev/null
+++ b/docs/.gitignore
@@ -0,0 +1,7 @@
+_site/
+.sass-cache/
+.jekyll-cache/
+.jekyll-metadata
+# Ignore folders generated by Bundler
+.bundle/
+vendor/
diff --git a/docs/404.md b/docs/404.md
new file mode 100644
index 00000000..2eb2593a
--- /dev/null
+++ b/docs/404.md
@@ -0,0 +1,6 @@
+---
+title: "404 - Page Not Found"
+permalink: /404.html
+---
+
+## The page you wanted does not exist
diff --git a/docs/Gemfile b/docs/Gemfile
new file mode 100644
index 00000000..d3e4e787
--- /dev/null
+++ b/docs/Gemfile
@@ -0,0 +1,7 @@
+source 'https://rubygems.org'
+
+gem 'rake'
+gem 'github-pages'
+gem 'jekyll-optional-front-matter'
+gem 'jekyll-titles-from-headings'
+gem 'jekyll-relative-links'
diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock
new file mode 100644
index 00000000..fa30fb9c
--- /dev/null
+++ b/docs/Gemfile.lock
@@ -0,0 +1,286 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ activesupport (6.0.4.7)
+ concurrent-ruby (~> 1.0, >= 1.0.2)
+ i18n (>= 0.7, < 2)
+ minitest (~> 5.1)
+ tzinfo (~> 1.1)
+ zeitwerk (~> 2.2, >= 2.2.2)
+ addressable (2.8.0)
+ public_suffix (>= 2.0.2, < 5.0)
+ coffee-script (2.4.1)
+ coffee-script-source
+ execjs
+ coffee-script-source (1.11.1)
+ colorator (1.1.0)
+ commonmarker (0.23.4)
+ concurrent-ruby (1.1.10)
+ dnsruby (1.61.9)
+ simpleidn (~> 0.1)
+ em-websocket (0.5.3)
+ eventmachine (>= 0.12.9)
+ http_parser.rb (~> 0)
+ ethon (0.15.0)
+ ffi (>= 1.15.0)
+ eventmachine (1.2.7)
+ execjs (2.8.1)
+ faraday (1.10.0)
+ faraday-em_http (~> 1.0)
+ faraday-em_synchrony (~> 1.0)
+ faraday-excon (~> 1.1)
+ faraday-httpclient (~> 1.0)
+ faraday-multipart (~> 1.0)
+ faraday-net_http (~> 1.0)
+ faraday-net_http_persistent (~> 1.0)
+ faraday-patron (~> 1.0)
+ faraday-rack (~> 1.0)
+ faraday-retry (~> 1.0)
+ ruby2_keywords (>= 0.0.4)
+ faraday-em_http (1.0.0)
+ faraday-em_synchrony (1.0.0)
+ faraday-excon (1.1.0)
+ faraday-httpclient (1.0.1)
+ faraday-multipart (1.0.3)
+ multipart-post (>= 1.2, < 3)
+ faraday-net_http (1.0.1)
+ faraday-net_http_persistent (1.2.0)
+ faraday-patron (1.0.0)
+ faraday-rack (1.0.0)
+ faraday-retry (1.0.3)
+ ffi (1.15.5)
+ forwardable-extended (2.6.0)
+ gemoji (3.0.1)
+ github-pages (225)
+ github-pages-health-check (= 1.17.9)
+ jekyll (= 3.9.0)
+ jekyll-avatar (= 0.7.0)
+ jekyll-coffeescript (= 1.1.1)
+ jekyll-commonmark-ghpages (= 0.2.0)
+ jekyll-default-layout (= 0.1.4)
+ jekyll-feed (= 0.15.1)
+ jekyll-gist (= 1.5.0)
+ jekyll-github-metadata (= 2.13.0)
+ jekyll-include-cache (= 0.2.1)
+ jekyll-mentions (= 1.6.0)
+ jekyll-optional-front-matter (= 0.3.2)
+ jekyll-paginate (= 1.1.0)
+ jekyll-readme-index (= 0.3.0)
+ jekyll-redirect-from (= 0.16.0)
+ jekyll-relative-links (= 0.6.1)
+ jekyll-remote-theme (= 0.4.3)
+ jekyll-sass-converter (= 1.5.2)
+ jekyll-seo-tag (= 2.8.0)
+ jekyll-sitemap (= 1.4.0)
+ jekyll-swiss (= 1.0.0)
+ jekyll-theme-architect (= 0.2.0)
+ jekyll-theme-cayman (= 0.2.0)
+ jekyll-theme-dinky (= 0.2.0)
+ jekyll-theme-hacker (= 0.2.0)
+ jekyll-theme-leap-day (= 0.2.0)
+ jekyll-theme-merlot (= 0.2.0)
+ jekyll-theme-midnight (= 0.2.0)
+ jekyll-theme-minimal (= 0.2.0)
+ jekyll-theme-modernist (= 0.2.0)
+ jekyll-theme-primer (= 0.6.0)
+ jekyll-theme-slate (= 0.2.0)
+ jekyll-theme-tactile (= 0.2.0)
+ jekyll-theme-time-machine (= 0.2.0)
+ jekyll-titles-from-headings (= 0.5.3)
+ jemoji (= 0.12.0)
+ kramdown (= 2.3.1)
+ kramdown-parser-gfm (= 1.1.0)
+ liquid (= 4.0.3)
+ mercenary (~> 0.3)
+ minima (= 2.5.1)
+ nokogiri (>= 1.12.5, < 2.0)
+ rouge (= 3.26.0)
+ terminal-table (~> 1.4)
+ github-pages-health-check (1.17.9)
+ addressable (~> 2.3)
+ dnsruby (~> 1.60)
+ octokit (~> 4.0)
+ public_suffix (>= 3.0, < 5.0)
+ typhoeus (~> 1.3)
+ html-pipeline (2.14.1)
+ activesupport (>= 2)
+ nokogiri (>= 1.4)
+ http_parser.rb (0.8.0)
+ i18n (0.9.5)
+ concurrent-ruby (~> 1.0)
+ jekyll (3.9.0)
+ addressable (~> 2.4)
+ colorator (~> 1.0)
+ em-websocket (~> 0.5)
+ i18n (~> 0.7)
+ jekyll-sass-converter (~> 1.0)
+ jekyll-watch (~> 2.0)
+ kramdown (>= 1.17, < 3)
+ liquid (~> 4.0)
+ mercenary (~> 0.3.3)
+ pathutil (~> 0.9)
+ rouge (>= 1.7, < 4)
+ safe_yaml (~> 1.0)
+ jekyll-avatar (0.7.0)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-coffeescript (1.1.1)
+ coffee-script (~> 2.2)
+ coffee-script-source (~> 1.11.1)
+ jekyll-commonmark (1.4.0)
+ commonmarker (~> 0.22)
+ jekyll-commonmark-ghpages (0.2.0)
+ commonmarker (~> 0.23.4)
+ jekyll (~> 3.9.0)
+ jekyll-commonmark (~> 1.4.0)
+ rouge (>= 2.0, < 4.0)
+ jekyll-default-layout (0.1.4)
+ jekyll (~> 3.0)
+ jekyll-feed (0.15.1)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-gist (1.5.0)
+ octokit (~> 4.2)
+ jekyll-github-metadata (2.13.0)
+ jekyll (>= 3.4, < 5.0)
+ octokit (~> 4.0, != 4.4.0)
+ jekyll-include-cache (0.2.1)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-mentions (1.6.0)
+ html-pipeline (~> 2.3)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-optional-front-matter (0.3.2)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-paginate (1.1.0)
+ jekyll-readme-index (0.3.0)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-redirect-from (0.16.0)
+ jekyll (>= 3.3, < 5.0)
+ jekyll-relative-links (0.6.1)
+ jekyll (>= 3.3, < 5.0)
+ jekyll-remote-theme (0.4.3)
+ addressable (~> 2.0)
+ jekyll (>= 3.5, < 5.0)
+ jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0)
+ rubyzip (>= 1.3.0, < 3.0)
+ jekyll-sass-converter (1.5.2)
+ sass (~> 3.4)
+ jekyll-seo-tag (2.8.0)
+ jekyll (>= 3.8, < 5.0)
+ jekyll-sitemap (1.4.0)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-swiss (1.0.0)
+ jekyll-theme-architect (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-cayman (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-dinky (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-hacker (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-leap-day (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-merlot (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-midnight (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-minimal (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-modernist (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-primer (0.6.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-github-metadata (~> 2.9)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-slate (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-tactile (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-time-machine (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-titles-from-headings (0.5.3)
+ jekyll (>= 3.3, < 5.0)
+ jekyll-watch (2.2.1)
+ listen (~> 3.0)
+ jemoji (0.12.0)
+ gemoji (~> 3.0)
+ html-pipeline (~> 2.2)
+ jekyll (>= 3.0, < 5.0)
+ kramdown (2.3.1)
+ rexml
+ kramdown-parser-gfm (1.1.0)
+ kramdown (~> 2.0)
+ liquid (4.0.3)
+ listen (3.7.1)
+ rb-fsevent (~> 0.10, >= 0.10.3)
+ rb-inotify (~> 0.9, >= 0.9.10)
+ mercenary (0.3.6)
+ minima (2.5.1)
+ jekyll (>= 3.5, < 5.0)
+ jekyll-feed (~> 0.9)
+ jekyll-seo-tag (~> 2.1)
+ minitest (5.15.0)
+ multipart-post (2.1.1)
+ nokogiri (1.13.3-x86_64-darwin)
+ racc (~> 1.4)
+ octokit (4.22.0)
+ faraday (>= 0.9)
+ sawyer (~> 0.8.0, >= 0.5.3)
+ pathutil (0.16.2)
+ forwardable-extended (~> 2.6)
+ public_suffix (4.0.6)
+ racc (1.6.0)
+ rake (13.0.6)
+ rb-fsevent (0.11.1)
+ rb-inotify (0.10.1)
+ ffi (~> 1.0)
+ rexml (3.2.5)
+ rouge (3.26.0)
+ ruby2_keywords (0.0.5)
+ rubyzip (2.3.2)
+ safe_yaml (1.0.5)
+ sass (3.7.4)
+ sass-listen (~> 4.0.0)
+ sass-listen (4.0.0)
+ rb-fsevent (~> 0.9, >= 0.9.4)
+ rb-inotify (~> 0.9, >= 0.9.7)
+ sawyer (0.8.2)
+ addressable (>= 2.3.5)
+ faraday (> 0.8, < 2.0)
+ simpleidn (0.2.1)
+ unf (~> 0.1.4)
+ terminal-table (1.8.0)
+ unicode-display_width (~> 1.1, >= 1.1.1)
+ thread_safe (0.3.6)
+ typhoeus (1.4.0)
+ ethon (>= 0.9.0)
+ tzinfo (1.2.9)
+ thread_safe (~> 0.1)
+ unf (0.1.4)
+ unf_ext
+ unf_ext (0.0.8.1)
+ unicode-display_width (1.8.0)
+ zeitwerk (2.5.4)
+
+PLATFORMS
+ x86_64-darwin-20
+
+DEPENDENCIES
+ github-pages
+ jekyll-optional-front-matter
+ jekyll-relative-links
+ jekyll-titles-from-headings
+ rake
+
+BUNDLED WITH
+ 2.2.15
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 00000000..c68d8bc6
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1 @@
+This is a template for the Jeykll site published to the gh-pages branch.
diff --git a/docs/_config.yaml b/docs/_config.yaml
new file mode 100644
index 00000000..a8d92716
--- /dev/null
+++ b/docs/_config.yaml
@@ -0,0 +1,20 @@
+theme: minima
+title: "fabric-protos"
+header_pages:
+ - protos.md
+
+defaults:
+ -
+ scope:
+ path: ""
+ type: "pages"
+ values:
+ layout: "page"
+
+optional_front_matter:
+ remove_originals: true
+
+plugins:
+ - jekyll-optional-front-matter
+ - jekyll-titles-from-headings
+ - jekyll-relative-links
diff --git a/docs/_includes/footer.html b/docs/_includes/footer.html
new file mode 100644
index 00000000..e69de29b
diff --git a/docs/_includes/header.html b/docs/_includes/header.html
new file mode 100644
index 00000000..f8ebe23e
--- /dev/null
+++ b/docs/_includes/header.html
@@ -0,0 +1,22 @@
+
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 00000000..23d00f5d
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,38 @@
+---
+layout: home
+---
+
+Hyperledger Fabric Protocol buffers
+
+## Download
+
+Pregenerated libraries are available for Go, Java, and Node.js
+
+### Go
+
+```
+go get -u github.com/hyperledger/fabric-protos-go
+```
+
+### Java
+
+```
+
+ org.hyperledger.fabric
+ fabric-protos
+ ${fabricProtosVersion}
+
+```
+
+### Node.js
+
+```
+npm install @hyperledger/fabric-protos
+```
+
+## Documentation
+
+- [API](protos.md)
+- [Java library](https://search.maven.org/artifact/org.hyperledger.fabric/fabric-protos)
+- [Go module](https://pkg.go.dev/github.com/hyperledger/fabric-protos-go?tab=doc)
+- [Node module](https://www.npmjs.com/package/@hyperledger/fabric-protos)