From 3276896e966ff20a00c93a70bcb28a056e904a26 Mon Sep 17 00:00:00 2001
From: Pierre Smeyers <pierre.smeyers@gmail.com>
Date: Mon, 6 Dec 2021 13:23:46 +0000
Subject: [PATCH] Resolve "Why is poetry.lock mandatory?"

---
 README.md                      | 10 ++++++----
 templates/gitlab-ci-python.yml | 20 +++++++-------------
 2 files changed, 13 insertions(+), 17 deletions(-)

diff --git a/README.md b/README.md
index d2bb479..b75d6e2 100644
--- a/README.md
+++ b/README.md
@@ -35,12 +35,14 @@ Default configuration follows [this Python project structure](https://docs.pytho
 
 The Python template supports [Poetry](https://python-poetry.org/) as packaging and dependency management tool.
 
-If a `pyproject.toml` and `poetry.lock` file is detected at the root of your project structure, requirements will automatically be generated from Poetry.
-Poetry support is disabled  if `PYTHON_POETRY_DISABLED` is set to `true`.
+If a `pyproject.toml` file is detected at the root of your Python project, requirements will automatically be generated from Poetry.
+Poetry support can be explicitly disabled  by setting `PYTHON_POETRY_DISABLED` to `true`.
 
-:warning: as stated in [Poetry documentation](https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control), _You should commit the `poetry.lock` file to your project repo so that all people working on the project are locked to the same versions of dependencies_.
+:warning: If no `poetry.lock` file is found, the template will emit a (non-blocking) warning message, to enforce [Poetry recommendation](https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control):
 
-It uses the following variables:
+> You should commit the `poetry.lock` file to your project repo so that all people working on the project are locked to the same versions of dependencies.
+
+Poetry support uses the following variables:
 
 | Name                     | description                                                | default value     |
 | ------------------------ | ---------------------------------------------------------- | ----------------- |
diff --git a/templates/gitlab-ci-python.yml b/templates/gitlab-ci-python.yml
index eaa477c..fe5af4a 100644
--- a/templates/gitlab-ci-python.yml
+++ b/templates/gitlab-ci-python.yml
@@ -69,10 +69,6 @@ variables:
     fi
   }
 
-
-
-
-
   function install_ca_certs() {
     certs=$1
     if [[ -z "$certs" ]]
@@ -213,9 +209,8 @@ variables:
   function install_requirements() {
     target=$1
     if  [[ -f "pyproject.toml" ]] && [[ "${PYTHON_POETRY_DISABLED}" != "true" ]]; then
-      if  [[ ! -f "poetry.lock" ]]; then 
-        log_error "Poetry detected but \\e[33;1mpoetry.lock\\e[0m file not found: you shall commit it with your project files"
-        exit 1
+      if  [[ ! -f "poetry.lock" ]]; then
+        log_warn "Poetry detected but \\e[33;1mpoetry.lock\\e[0m file not found: you shall commit it with your project files"
       fi
       pip install -U poetry
       if [[ "$target" == "build" ]]; then
@@ -244,7 +239,7 @@ variables:
   }
 
   function _run() {
-    if [[ -f "poetry.lock" ]] && [[ "${PYTHON_POETRY_DISABLED}" != "true" ]]; then
+    if [[ -f "pyproject.toml" ]] && [[ "${PYTHON_POETRY_DISABLED}" != "true" ]]; then
       if ! command -v poetry > /dev/null
       then
         pip install -U poetry
@@ -264,15 +259,16 @@ variables:
   }
 
   function _package(){
-     if [[ -f "poetry.lock" ]] && [[ "${PYTHON_POETRY_DISABLED}" != "true" ]]; then
+     if [[ -f "pyproject.toml" ]] && [[ "${PYTHON_POETRY_DISABLED}" != "true" ]]; then
       pip install -U poetry
       poetry build
     else
       python setup.py sdist bdist_wheel
     fi
   }
+
   function _publish() {
-    if [[ -f "poetry.lock" ]] && [[ "${PYTHON_POETRY_DISABLED}" != "true" ]]; then
+    if [[ -f "pyproject.toml" ]] && [[ "${PYTHON_POETRY_DISABLED}" != "true" ]]; then
       pip install -U poetry
       poetry config repositories.user_defined  "$TWINE_REPOSITORY_URL"
       poetry publish --username "$TWINE_USERNAME" --password "$TWINE_PASSWORD" --repository user_defined
@@ -286,7 +282,7 @@ variables:
   }
 
   function _release() {
-    if [[ -f "poetry.lock" ]] && [[ "${PYTHON_POETRY_DISABLED}" != "true" ]]; then
+    if [[ -f "pyproject.toml" ]] && [[ "${PYTHON_POETRY_DISABLED}" != "true" ]]; then
       pip install -U poetry
       poetry version "${RELEASE_VERSION_PART}"
     else
@@ -381,12 +377,10 @@ py-lint:
       if ! _run pylint --ignore=.cache --output-format=text  ${PYLINT_ARGS}  ${PYLINT_FILES:-$(find -type f -name "*.py")}
       then
         # failed: also generate codeclimate report
-
         _run pylint --ignore=.cache --output-format=pylint_gitlab.GitlabCodeClimateReporter  ${PYLINT_ARGS} ${PYLINT_FILES:-$(find -type f -name "*.py")} > reports/pylint-codeclimate.json
         exit 1
       else
         # success: generate empty codeclimate report (required by GitLab :( )
-
         echo "[]" > reports/pylint-codeclimate.json
       fi
   artifacts:
-- 
GitLab