| #!/usr/bin/env bash |
| # |
| # Copyright (C) 2021 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # ---- Markdown Format Helpers ---- |
| |
| # Example markdown file: |
| # (Using block comment to better understand the file syntax.) |
| |
| : <<'END' |
| # Test case description header |
| |
| file: `All-Projects.git:refs/meta/config:task.config` |
| ``` |
| [root "Test root"] |
| applicable = "is:open" |
| pass = True |
| ``` |
| |
| file: `All-Users:refs/users/some_ref:task/sample.config` |
| ``` |
| [task "NON-SECRET task"] |
| applicable = is:open |
| pass = Fail |
| + subtasks-external = SECRET |
| |
| +[external "SECRET"] |
| + user = {secret_user} |
| + file = secret.config |
| ``` |
| |
| json: |
| ``` |
| { |
| { |
| "some": "example" |
| } |
| } |
| END |
| |
| # (For example above) |
| # out: |
| # `All-Projects.git:refs/meta/config:task.config` |
| # `All-Users:refs/users/some_ref:task/sample.config` |
| md_file_markers() { # DOC_CONTENT |
| echo "$1" | grep -o "^file: .*" | cut -f2 -d'`' |
| } |
| |
| # (For example above) |
| # in: `All-Projects.git:refs/meta/config:task.config` |
| # out: |
| #[root "Test root"] |
| # applicable = "is:open" |
| # pass = True |
| # |
| # in: json: |
| # out : |
| # { |
| # { |
| # "some": "example" |
| # } |
| # } |
| md_marker_content() { # DOC marker |
| local start_line=$(echo "$1" | grep -n "$2" | cut -f1 -d':') |
| echo "$1" | tail -n+"$start_line" | \ |
| sed '1,/```/d;/```/,$d' | grep -v '```' |
| } |
| |
| # file_marker > project |
| # in: `All-Projects.git:refs/meta/config:task/task.config` |
| # out: All-Projects.git |
| md_file_marker_project() { |
| echo "$1" | cut -f1 -d':' |
| } |
| |
| # file_marker > ref |
| # in: `All-Projects.git:refs/meta/config:task/task.config` |
| # out: refs/meta/config |
| md_file_marker_ref() { |
| echo "$1" | cut -f2 -d':' |
| } |
| |
| # file_marker > file |
| # in: `All-Projects.git:refs/meta/config:task/task.config` |
| #out: task/task.config |
| md_file_marker_file() { |
| echo "$1" | cut -f3 -d':' |
| } |