diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index be38de5d49d4c05657b23c488387186f3a8a1c95..bbdfad29ce21fa1216bd208f85faee51083cfb9d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -165,28 +165,28 @@ variables: # ============================================================================= # Jobs in test stage # ----------------------------------------------------------------------------- -test_tox_format_python: - <<: *tag_docker - <<: *image_docker - <<: *stage_test - <<: *before_script_python_dependencies - script: - # Install python tox - - pip3 install tox - # Run tox - - tox -e format_python - -test_tox_format_shell: - <<: *tag_docker - <<: *image_docker - <<: *stage_test - <<: *before_script_python_dependencies - script: - # Install python tox - - pip3 install tox - # Run tox - - tox -e format_shell - +#test_tox_format_python: +# <<: *tag_docker +# <<: *image_docker +# <<: *stage_test +# <<: *before_script_python_dependencies +# script: +# # Install python tox +# - pip3 install tox +# # Run tox +# - tox -e format_python +# +#test_tox_format_shell: +# <<: *tag_docker +# <<: *image_docker +# <<: *stage_test +# <<: *before_script_python_dependencies +# script: +# # Install python tox +# - pip3 install tox +# # Run tox +# - tox -e format_shell +# # ***************************************************************************** # VIM MODELINE # vim: fdm=indent diff --git a/docs/.gitlab-ci.yml b/docs/.gitlab-ci.yml index 06c6320e2f53536f1c970a15092b8be732677a8d..48da45a29f987d716aff9d1b5f210dd8f6a617a6 100644 --- a/docs/.gitlab-ci.yml +++ b/docs/.gitlab-ci.yml @@ -1,7 +1,4 @@ --- -### BEGIN MKDOCS TEMPLATE ### -### WARNING, DO NOT UPDATE CONTENT BETWEEN MKDOCS TEMPLATE TAG !### -### Modified content will be overwritten when updating.### # GLOBAL CONFIGURATION # ============================================================================= # YAML Anchors @@ -64,24 +61,6 @@ variables: bash git gcc - musl-dev - jpeg-dev - zlib-dev - libffi-dev - cairo-dev - pango-dev - gdk-pixbuf - jpeg-dev - zlib-dev - freetype-dev - lcms2-dev - openjpeg-dev - tiff-dev - tk-dev - tcl-dev - harfbuzz-dev - fribidi-dev - chromium # Create virtual environment - virtualenv .venv # Activate virtual environment @@ -104,7 +83,7 @@ variables: # Start the SSH agent - eval $(ssh-agent -s) # Add the private SSH key to be able to connect to the perso LIRIS website - - echo "${SSH_PRIVATE_KEY}" | tr -d ' ' | ssh-add - + - echo "${SSH_PRIVATE_KEY}" | tr -d '\r' | ssh-add - .before_script_export_variable: &before_script_export_variable # Update values of some variables depending on the CI_DEPLOY_TYPE @@ -166,7 +145,7 @@ variables: fi ;; *) - echo -e "[31mERROR - Variable \`CI_DEPLOY_TYPE\` is not defined !" + echo -e "\e[31mERROR - Variable \`CI_DEPLOY_TYPE\` is not defined !" return 1 ;; esac @@ -196,11 +175,11 @@ variables: .only_dev: &only_dev only: refs: - - *ref_release - - *ref_feature - - *ref_hotfix - - *ref_bugfix - - *ref_merge_requests + - *ref_release + - *ref_feature + - *ref_hotfix + - *ref_bugfix + - *ref_merge_requests # Jobs under only_pre_prod anchor will be run on `develop` (i.e. pre-release) # and `master` (release) branch. @@ -307,31 +286,31 @@ variables: - | if [[ -z "${SSH_KNOWN_HOSTS}" ]] then - echo -e "[31mERROR - Variable \`SSH_KNOWN_HOSTS_${CI_DEPLOY_TYPE})\` is not defined !" + echo -e "\e[31mERROR - Variable \`SSH_KNOWN_HOSTS_${CI_DEPLOY_TYPE})\` is not defined !" export ERROR="true" fi - | if [[ -z "${SSH_PRIVATE_KEY}" ]] then - echo -e "[31mERROR - Variable \`SSH_PRIVATE_KEY_${CI_DEPLOY_TYPE}\` is not defined !" + echo -e "\e[31mERROR - Variable \`SSH_PRIVATE_KEY_${CI_DEPLOY_TYPE}\` is not defined !" export ERROR="true" fi - | if [[ -z "${ONLINE_DEST}" ]] then - echo -e "[31mERROR - Variable \`ONLINE_DEST_${CI_DEPLOY_TYPE}\` is not defined !" + echo -e "\e[31mERROR - Variable \`ONLINE_DEST_${CI_DEPLOY_TYPE}\` is not defined !" export ERROR="true" fi - | if [[ -z "${RSYNC_DEST}" ]] then - echo -e "[31mERROR - Variable \`RSYNC_DEST_${CI_DEPLOY_TYPE}\` is not defined !" + echo -e "\e[31mERROR - Variable \`RSYNC_DEST_${CI_DEPLOY_TYPE}\` is not defined !" export ERROR="true" fi - | if [[ "${ERROR}" == "true" ]] then - echo -e "[31mERROR - At least one required variable is not defined !" + echo -e "\e[31mERROR - At least one required variable is not defined !" return 1 fi @@ -369,11 +348,14 @@ test_build_local: # Install python test requirements - pip3 install -r requirements.docs.txt # Build local documentation - - mkdocs build -f mkdocs.local.yml -d site_local + - mkdocs build -f mkdocs.local.yml -d site_local # If everything went right, remove build site - rm -rf site_local + rules: + - exists: + - mkdocs.local.yaml -test_build_monorepo: +test_build: <<: *tag_docker <<: *image_docker <<: *cache_python @@ -384,7 +366,7 @@ test_build_monorepo: # Install python test requirements - pip3 install -r requirements.docs.txt # Build local documentation - - mkdocs build -d site_monorepo + - mkdocs build -d site_monorepo # If everything went right, remove build site - rm -rf site_monorepo @@ -406,25 +388,6 @@ build_html: paths: - site/ -build_pdf: - before_script: - - *before_script_python_dependencies - <<: *tag_docker - <<: *image_docker - <<: *cache_python_pull - <<: *stage_build - script: - # Install python documentations requirements - - pip3 install -r requirements.docs.txt - # Export a variable to build the PDF of the documentation - - export ENABLE_PDF_EXPORT=1 - # Build the documentation - - mkdocs build - - cp docs/versions.json site/ - artifacts: - paths: - - docs/docs.pdf - # Jobs in deploy stage # ----------------------------------------------------------------------------- # Template jobs script deploy previously built html documentation. @@ -445,25 +408,29 @@ build_pdf: - export RSYNC_PATH="/${PROJECT_PATH}${LAST_TAG}" - export ONLINE_PATH="${ONLINE_DEST}${PROJECT_PATH}${LAST_TAG}" - mkdir -p "tmp/${RSYNC_PATH}" - - cp site/versions.json versions.json + - | + if [[ -f "site/versions.json" ]] + then + cp site/versions.json versions.json + fi - mv site/* "tmp/${RSYNC_PATH}/" - rsync -avz "tmp/" "${RSYNC_DEST}" - echo -e " - <!DOCTYPE html> - <html> - <head> - <meta charset='utf-8'> - <title>Redirecting</title> - <noscript> - <meta http-equiv='refresh' content='1; url=${ONLINE_PATH}' /> - </noscript> - <script> - window.location.replace('${ONLINE_PATH}'); - </script> - </head> - <body> - Redirecting to <a href='${ONLINE_PATH}'>${ONLINE_PATH}</a>... - </body> + <!DOCTYPE html>\n + <html>\n + <head>\n + <meta charset='utf-8'>\n + <title>Redirecting</title>\n + <noscript>\n + <meta http-equiv='refresh' content='1; url=${ONLINE_PATH}' />\n + </noscript>\n + <script>\n + window.location.replace('${ONLINE_PATH}');\n + </script>\n + </head>\n + <body>\n + Redirecting to <a href='${ONLINE_PATH}'>${ONLINE_PATH}</a>...\n + </body>\n </html>" > index.html - rsync -avz index.html "${RSYNC_DEST}${PROJECT_PATH}/" - rsync -avz versions.json "${RSYNC_DEST}${PROJECT_PATH}/" @@ -472,7 +439,7 @@ deploy_html_dev: <<: *script_deploy_html <<: *only_dev variables: - CI_DEPLOY_TYPE: "PRE_PROD" + CI_DEPLOY_TYPE: "DEV" PROJECT_PATH: ${CI_COMMIT_REF_NAME%-*}/$CI_PROJECT_PATH/ deploy_html_pre_prod: @@ -489,43 +456,6 @@ deploy_html_prod: CI_DEPLOY_TYPE: "PROD" PROJECT_PATH: ${CI_COMMIT_REF_NAME%-*}/$CI_PROJECT_PATH/ -.script_deploy_pdf: &script_deploy_pdf - <<: *tag_docker - <<: *image_docker - <<: *cache_python - <<: *stage_deploy - needs: - - build_pdf - before_script: - - *before_script_export_variable - - *before_script_prepare_deployment - script: - - mkdir -p "tmp/${CI_PROJECT_PATH}" - - mv "docs/docs.pdf" "tmp/${CI_PROJECT_PATH}/${CI_PROJECT_NAME}.pdf" - - rsync -avz "tmp/" "${RSYNC_DEST}" - -deploy_pdf_dev: - <<: *script_deploy_pdf - <<: *only_dev - variables: - CI_DEPLOY_TYPE: "DEV" - PROJECT_PATH: ${CI_COMMIT_REF_NAME%-*}/$CI_PROJECT_PATH/ - -deploy_pdf_pre_prod: - <<: *script_deploy_pdf - <<: *only_pre_prod - variables: - CI_DEPLOY_TYPE: "PRE_PROD" - PROJECT_PATH: ${CI_COMMIT_REF_NAME%-*}/$CI_PROJECT_PATH/ - -deploy_pdf_prod: - <<: *stage_deploy - <<: *script_deploy_pdf - <<: *only_prod - variables: - CI_DEPLOY_TYPE: "PROD" - PROJECT_PATH: ${CI_COMMIT_REF_NAME%-*}/$CI_PROJECT_PATH/ - # Jobs in post_deploy stage # ----------------------------------------------------------------------------- trigger_main_repo: @@ -555,7 +485,7 @@ inform_triggers_variables: - | if [[ -z "${MAIN_PROJECT}" ]] then - echo -e "[32m + echo -e "\e[32m INFO - To trigger a main repo documentation CI, you can set \n INFO - variable \`MAIN_PROJECT\`. Otherwise, you have nothing\n INFO - to do. If the CI you want to run is not at the root of\n @@ -565,8 +495,6 @@ inform_triggers_variables: INFO - the \`MAIN_PROJECT\`." fi -### END MKDOCS TEMPLATE ### - # ***************************************************************************** # VIM MODELINE # vim: fdm=indent diff --git a/docs/_data/plugins.py b/docs/_data/plugins.py index f2a9800b7e8a906ef88aed257382c2d56c87cc6d..bf81013bf6702e18bbdf6e092c80004434f85585 100644 --- a/docs/_data/plugins.py +++ b/docs/_data/plugins.py @@ -447,25 +447,48 @@ def load_yaml_file(path: str, filename: str) -> None: return schema.source, data_type -def update_subrepo_logo_src(env:dict,curr_repo:dict,repo_name:str,subrepo_dict:dict, path:str,external:bool) -> None: +def update_subrepo_logo_src( + env: dict, + curr_repo: dict, + repo_name: str, + subrepo_dict: dict, + path: str, + external: bool, + latest: str +) -> None: + """ + @rdeville: TODO + """ + logo_subpath = "" src_subpath = "" + if external: logo_subpath = os.path.join(subrepo_dict["online_url"]) - src_subpath = os.path.join(path.replace(f"{env.project_dir}/",""),repo_name) + if latest: + logo_subpath = os.path.join(logo_subpath,latest) + + src_subpath = os.path.join( + path.replace(f"{env.project_dir}/", ""), repo_name + ) if "logo" not in curr_repo: - curr_repo["logo"] = os.path.join(logo_subpath, "assets", "img", "meta",f"{repo_name}_logo.png") + curr_repo["logo"] = os.path.join( + logo_subpath, "assets", "img", "meta", f"{repo_name}_logo.png" + ) if "src_path" in curr_repo: for i_src in curr_repo["src_path"]: i_src = os.path.join(src_subpath, i_src) env.conf["plugins"]["mkdocstrings"].config.data["handlers"][ "python" ]["setup_commands"].append(f"sys.path.append('{i_src}')") + print(yaml.dump(curr_repo)) -def update_subrepo_info(env: dict, subrepo_list: dict, path: str, external:bool = False) -> dict: +def update_subrepo_info( + env: dict, subrepo_list: dict, path: str, external: bool = False +) -> dict: """ @rdeville TODO """ @@ -483,7 +506,24 @@ def update_subrepo_info(env: dict, subrepo_list: dict, path: str, external:bool print( f"{INFO_CLR}INFO [macros] - Cloning repo {i_repo['name']}{RESET_CLR}" ) - git.Repo.clone_from(i_repo["git_url"], subrepo_root) + git_subrepo = git.Repo.clone_from(i_repo["git_url"], subrepo_root) + + latest = "" + if git_subrepo.tags: + last_major = 0 + last_minor = 0 + for i_tag in git_subrepo.tags: + i_tag = yaml.dump(i_tag.path) + i_tag = re.sub(".*v", "", i_tag).split(".") + major = int(i_tag[0]) + minor = int(i_tag[1]) + if major > last_major: + last_major = major + last_minor = 0 + if minor > last_minor: + last_minor = minor + last_patch = 0 + latest = f"{last_major}.{last_minor}" if "subpath" in i_repo: data_dir = os.path.join( @@ -496,12 +536,16 @@ def update_subrepo_info(env: dict, subrepo_list: dict, path: str, external:bool data, _ = load_yaml_file(data_dir, data_file) for i_repo_info in data: curr_repo = data[i_repo_info] - update_subrepo_logo_src(env,curr_repo,i_repo_info,i_repo,path,external) + update_subrepo_logo_src( + env, curr_repo, i_repo_info, i_repo, path, external, latest + ) return_dict.update(data) return return_dict -def update_subrepo(env: dict, subrepo_dict: dict, path: str, external:bool) -> dict: +def update_subrepo( + env: dict, subrepo_dict: dict, path: str, external: bool +) -> dict: """ @rdeville TODO """ @@ -513,24 +557,31 @@ def update_subrepo(env: dict, subrepo_dict: dict, path: str, external:bool) -> d elif i_key == "internal": env.variables["internal_subdoc"] = True return_dict.update( - update_subrepo_info(env, subrepo_dict[i_key], path,external) + update_subrepo_info(env, subrepo_dict[i_key], path, external) ) elif i_key not in ["nav_entry"]: return_dict.update( update_subrepo( - env, subrepo_dict[i_key], os.path.join(path, i_key),external + env, + subrepo_dict[i_key], + os.path.join(path, i_key), + external, ) ) return return_dict -def update_logo_src_repo(env:dict,curr_repo:dict,repo_name:str,path:str=None) -> None: +def update_logo_src_repo( + env: dict, curr_repo: dict, repo_name: str, path: str = None +) -> None: subpath = "" if path: - subpath = os.path.join(path.replace(env.project_dir,""),repo_name) + subpath = os.path.join(path.replace(env.project_dir, ""), repo_name) if "logo" not in curr_repo: - curr_repo["logo"] = os.path.join(subpath, "assets", "img", "meta",f"{repo_name}_logo.png") + curr_repo["logo"] = os.path.join( + subpath, "assets", "img", "meta", f"{repo_name}_logo.png" + ) if "src_path" in curr_repo: for i_src in curr_repo["src_path"]: i_src = os.path.join(subpath, i_src) @@ -539,7 +590,6 @@ def update_logo_src_repo(env:dict,curr_repo:dict,repo_name:str,path:str=None) -> ]["setup_commands"].append(f"sys.path.append('{i_src}')") - def load_var_file(env: dict) -> None: """Load variables files in docs/_data/ and variable of subrepo @@ -556,7 +606,7 @@ def load_var_file(env: dict) -> None: data, data_type = load_yaml_file(var_dir, i_file) for i_key in data: if data_type == "repo": - update_logo_src_repo(env,data[i_key],i_key) + update_logo_src_repo(env, data[i_key], i_key) env.variables[i_key] = data[i_key] @@ -644,7 +694,9 @@ def define_env(env: dict) -> None: if "subrepo" in env.variables: env.variables["internal_subdoc"] = False env.variables.update( - update_subrepo(env, env.variables["subrepo"], env.project_dir, False) + update_subrepo( + env, env.variables["subrepo"], env.project_dir, False + ) ) set_config(env) diff --git a/mkdocs.yml b/mkdocs.yml index faa568fe634bed452c5c94125edbc3b26a586c30..207c47b19ee77ef9fd9853357e47fcf7ce557510 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -28,7 +28,7 @@ theme: # https://squidfunk.github.io/mkdocs-material/ name: material # Overriding parent theme configuration - custom_dir: docs/theme + #custom_dir: docs/theme # Determines whether the search plugin expects the theme to provide a # dedicated search page via a template located at search/search.html. include_search_page: false @@ -190,6 +190,9 @@ plugins: # DO NOT FORGET TO ADD/UPDATE THE \`nav\` AND \`extra\` KEYS BELOW. ### END MKDOCS TEMPLATE ### +extra: + version: + provider: mike # Navigation Pane # --------------------------------------------------------------------------- nav: