From c63b9a5e209c3cf1df83137898c8f9d3c29824d3 Mon Sep 17 00:00:00 2001
From: Jon Azpiazu <jon.azpiazu@tecnalia.com>
Date: Tue, 3 Dec 2019 14:18:01 +0100
Subject: [PATCH] Add script and job for asciidoctor syntax check

---
 ...ab-industrial-ci-kinetic-no-rosinstall.yml | 17 +++++++++++++++
 ...-industrial-ci-kinetic-with-rosinstall.yml | 17 +++++++++++++++
 scripts/asciidoctor_syntax_check.bash         | 21 +++++++++++++++++++
 3 files changed, 55 insertions(+)
 create mode 100644 scripts/asciidoctor_syntax_check.bash

diff --git a/.gitlab-industrial-ci-kinetic-no-rosinstall.yml b/.gitlab-industrial-ci-kinetic-no-rosinstall.yml
index 866a9c7..0c30ca6 100644
--- a/.gitlab-industrial-ci-kinetic-no-rosinstall.yml
+++ b/.gitlab-industrial-ci-kinetic-no-rosinstall.yml
@@ -131,3 +131,20 @@ file_syntax:
   when: always
   tags:
     - docker
+
+##########################################################
+## Check for errors in Asciidoctor files
+## Could not find a proper linter for Asciidoctor format,
+## so this is a custom-made "dirty" script
+##########################################################
+adoc_syntax:
+  stage: postcheck
+  image: alpine
+  before_script:
+    - apk add --update curl asciidoctor bash
+  script:
+    - curl -Ls https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/raw/master/scripts/asciidoctor_syntax_check.bash | bash -s -- .
+  tags:
+    - docker
+  when: always
+  allow_failure: yes
diff --git a/.gitlab-industrial-ci-kinetic-with-rosinstall.yml b/.gitlab-industrial-ci-kinetic-with-rosinstall.yml
index 288675f..cd92ad5 100644
--- a/.gitlab-industrial-ci-kinetic-with-rosinstall.yml
+++ b/.gitlab-industrial-ci-kinetic-with-rosinstall.yml
@@ -133,3 +133,20 @@ file_syntax:
   when: always
   tags:
     - docker
+
+##########################################################
+## Check for errors in Asciidoctor files
+## Could not find a proper linter for Asciidoctor format,
+## so this is a custom-made "dirty" script
+##########################################################
+adoc_syntax:
+  stage: postcheck
+  image: alpine
+  before_script:
+    - apk add --update curl asciidoctor bash
+  script:
+    - curl -Ls https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/raw/master/scripts/asciidoctor_syntax_check.bash | bash -s -- .
+  tags:
+    - docker
+  when: always
+  allow_failure: yes
diff --git a/scripts/asciidoctor_syntax_check.bash b/scripts/asciidoctor_syntax_check.bash
new file mode 100644
index 0000000..fb66a87
--- /dev/null
+++ b/scripts/asciidoctor_syntax_check.bash
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+if ! [ -x "$(command -v asciidoctor)" ]; then
+    echo "Error: asciidoctor is not installed"
+    exit 1
+fi
+
+if [ -z "$1" ] ; then
+    echo "Error: No argument supplied - path needed"
+    exit 1
+fi
+
+touch output.log # avoid failing if no adoc files exist
+while IFS= read -r -d '' filename; do
+  asciidoctor "$filename" 2>&1 | tee -a output.log
+done < <(find "$1" -name '*.adoc' -type f -print0)
+adoc_errors=0 ; adoc_warnings=0
+adoc_errors=$(grep -c "ERROR" output.log)
+adoc_warnings=$(grep -c "WARNING" output.log)
+echo "AsciiDoc format Found ${adoc_errors} errors and ${adoc_warnings} warnings"
+if [ "${adoc_errors}" -eq 0 ]; then exit 0; else exit 1; fi
-- 
GitLab