openhab-docs/.github/workflows/fetch_external_docs_reusabl...

125 lines
4.9 KiB
YAML

name: Fetch Docs Reusable
# Generic action for fetching doc resources
# This action is meant to be called by a detailled action for a specific repository, defining the needed parameters
on:
workflow_call:
inputs:
base_target_branch:
description: The branch to check out in the target repository. Defaults to `final-stable`.
default: final-stable
required: false
type: string
base_source_organization:
description: The organization or user that holds the base repository. Defaults to `openhab`.
default: openhab
required: false
type: string
base_source_repository:
description: The repository that holds the source resources to copy.
required: true
type: string
base_source_ref:
description: The branch or tag ref that holds the source resources to copy.
required: false
type: string
base_folder:
description: The folder that holds the resources in the target repository.
required: true
type: string
base_file:
description: The default file name to rename as if `doc_base_file` defined. Defaults to `readme.md`.
default: readme.md
required: false
type: string
doc_base_name:
description: The doc file name prefix for lookup options.
required: false
type: string
doc_base_dir:
description: The doc directory path that holds the source resources to copy. Defaults to `/docs`.
default: /docs
required: false
type: string
doc_base_file:
description: The doc default file to rename as `base_file`.
required: false
type: string
image_base_dir:
description: The image directory path that holds the image resources. Defaults to `/images`.
default: /images
required: false
type: string
has_images:
description: If doc has images. Defaults to `false`.
default: false
required: false
type: boolean
is_self_contained:
description: If doc is self-contained. Defaults to `true`.
default: true
required: false
type: boolean
jobs:
fetchDocs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2.4.0
with:
ref: ${{ inputs.base_target_branch }}
- name: Checkout external repository
uses: actions/checkout@v2.4.0
with:
repository: ${{ inputs.base_source_organization }}/${{ inputs.base_source_repository }}
path: ./external_repositories/${{ inputs.base_source_repository }}
ref: ${{ inputs.base_source_ref }}
- name: Initialize doc folder structure
run: mkdir -vp "${{ inputs.base_folder }}${{ inputs.has_images && inputs.image_base_dir || '' }}"
# Remove existing doc resources if self-contained or doc file name prefix defined
- name: Remove existing doc resources
if: ${{ inputs.is_self_contained || inputs.doc_base_name }}
run: find $TARGET_DIR -iname "${{ inputs.doc_base_name }}*" -type f -exec rm -v {} \;
env:
TARGET_DIR: ${{ inputs.base_folder }}
- name: Copy latest doc resources
run: find $SOURCE_DIR -maxdepth 1 -iname "${{ inputs.doc_base_name }}*.md" -type f -exec cp -v {} $TARGET_DIR \;
env:
SOURCE_DIR: ./external_repositories/${{ inputs.base_source_repository }}${{ inputs.doc_base_dir }}
TARGET_DIR: ${{ inputs.base_folder }}
# Rename doc default file if parameter defined
- name: Rename doc default file
if: ${{ inputs.doc_base_file }}
run: mv -v ${{ inputs.doc_base_file }} ${{ inputs.base_file }}
working-directory: ${{ inputs.base_folder }}
# Copy image resources if has images
- name: Copy latest image resources
if: ${{ inputs.has_images }}
run: find $SOURCE_DIR -maxdepth 1 -iname "${{ inputs.doc_base_name }}*.png" -type f -exec cp -v {} $TARGET_DIR \;
env:
SOURCE_DIR: ./external_repositories/${{ inputs.base_source_repository }}${{ inputs.doc_base_dir }}${{ inputs.image_base_dir }}
TARGET_DIR: ${{ inputs.base_folder }}${{ inputs.image_base_dir }}
- name: Remove external repository files
run: rm -rf ./external_repositories
# Create an automated pull request, if the resulting branch is ahead of the `base-target-branch`
- name: Create pull request
uses: peter-evans/create-pull-request@v3
with:
commit-message: Automated ${{ inputs.base_source_repository }} Docs fetch
committer: openHAB Bot <info@openhab.org>
author: openHAB Bot <info@openhab.org>
branch: automated/fetch_${{ inputs.base_source_repository }}_docs
delete-branch: true
title: "[Automated] Fetch ${{ inputs.base_source_repository }} docs"
labels: automated_pr