copier
copier copied to clipboard
Unify logging
There are many logging system around the codebase. Makes it confusing:
- Old one https://github.com/copier-org/copier/blob/76d6c2f502db149e500bd91dc93f1871d6a9fc38/copier/tools.py#L60-L88
- plumbum one https://github.com/copier-org/copier/blob/b3190c2abffb04d5f4b21fa71a51bf4036baad5a/copier/main.py#L605-L609
- Native warnings https://github.com/copier-org/copier/blob/d86c88d051a8e9127499a7d8eae1bb84572f4780/copier/template.py#L114-L117
- Plumbum's ask, as opposed to Questionary's https://github.com/copier-org/copier/blob/d86c88d051a8e9127499a7d8eae1bb84572f4780/copier/main.py#L251
Gotta pick one and use only it. Possibly Questionary for interactive output, and https://docs.python.org/3/library/logging.html with captureWarnings for informational output.
@Yajo
It should be written which file is processed before processing it, not after.
If I have error then I have to guess which file is next. (because this next file is causing error)
example error which I am now debugging:
create .
create .dependabot
create .dependabot/config.yml
create .en v copy
create .env
create .gitignore
create LICENSE
create README.md
create Banana
create Banana/.prettierignore
create Banana/backend
create Banana/backend/alembic.ini
create Banana/backend/app
create Banana/backend/app/alembic
create Banana/backend/app/alembic/env.py
create Banana/backend/app/alembic/README
create Banana/backend/app/alembic/script.py.mako
create Banana/backend/app/alembic/versions
create Banana/backend/app/alembic/versions/91979b40eb38_create_users_table.py
create Banana/backend/app/alembic/__init__.py
create Banana/backend/app/alembic.ini
create Banana/backend/app/api
create Banana/backend/app/api/api_v1
create Banana/backend/app/api/api_v1/routers
create Banana/backend/app/api/api_v1/routers/auth.py
create Banana/backend/app/api/api_v1/routers/tests
create Banana/backend/app/api/api_v1/routers/tests/test_auth.py
create Banana/backend/app/api/api_v1/routers/tests/test_users.py
create Banana/backend/app/api/api_v1/routers/tests/__init__.py
create Banana/backend/app/api/api_v1/routers/users.py
create Banana/backend/app/api/api_v1/routers/__init__.py
create Banana/backend/app/api/api_v1/__init__.py
create Banana/backend/app/api/dependencies
create Banana/backend/app/api/dependencies/__init__.py
create Banana/backend/app/api/__init__.py
create Banana/backend/app/core
create Banana/backend/app/core/auth.py
create Banana/backend/app/core/celery_app.py
create Banana/backend/app/core/config.py
create Banana/backend/app/core/security.py
create Banana/backend/app/core/__init__.py
create Banana/backend/app/db
create Banana/backend/app/db/crud.py
create Banana/backend/app/db/models.py
create Banana/backend/app/db/schemas.py
create Banana/backend/app/db/session.py
create Banana/backend/app/db/__init__.py
create Banana/backend/app/initial_data.py
create Banana/backend/app/main.py
create Banana/backend/app/tasks.py
create Banana/backend/app/tests
create Banana/backend/app/tests/test_main.py
create Banana/backend/app/tests/test_tasks.py
create Banana/backend/app/tests/__init__.py
create Banana/backend/app/__init__.py
create Banana/backend/conftest.py
create Banana/backend/Dockerfile
create Banana/backend/pyproject.toml
create Banana/backend/requirements.txt
create Banana/docker-compose.yml
create Banana/frontend
create Banana/frontend/.dockerignore
create Banana/frontend/.eslintrc.js
create Banana/frontend/.prettierrc.js
create Banana/frontend/Dockerfile
create Banana/frontend/package.json
create Banana/frontend/public
Traceback (most recent call last):
File "/home/orange/.local/bin/copier", line 8, in <module>
sys.exit(CopierApp.run())
File "/home/orange/.local/pipx/venvs/copier/lib/python3.8/site-packages/plumbum/cli/application.py", line 614, in run
inst, retcode = subapp.run(argv, exit=False)
File "/home/orange/.local/pipx/venvs/copier/lib/python3.8/site-packages/plumbum/cli/application.py", line 609, in run
retcode = inst.main(*tailargs)
File "/home/orange/.local/pipx/venvs/copier/lib/python3.8/site-packages/copier/cli.py", line 70, in _wrapper
return method(*args, **kwargs)
File "/home/orange/.local/pipx/venvs/copier/lib/python3.8/site-packages/copier/cli.py", line 293, in main
self.parent._worker(
File "/home/orange/.local/pipx/venvs/copier/lib/python3.8/site-packages/copier/main.py", line 575, in run_copy
self._render_folder(src_abspath)
File "/home/orange/.local/pipx/venvs/copier/lib/python3.8/site-packages/copier/main.py", line 467, in _render_folder
self._render_folder(file)
File "/home/orange/.local/pipx/venvs/copier/lib/python3.8/site-packages/copier/main.py", line 467, in _render_folder
self._render_folder(file)
File "/home/orange/.local/pipx/venvs/copier/lib/python3.8/site-packages/copier/main.py", line 467, in _render_folder
self._render_folder(file)
File "/home/orange/.local/pipx/venvs/copier/lib/python3.8/site-packages/copier/main.py", line 469, in _render_folder
self._render_file(file)
File "/home/orange/.local/pipx/venvs/copier/lib/python3.8/site-packages/copier/main.py", line 429, in _render_file
tpl = self.jinja_env.get_template(str(src_relpath))
File "/home/orange/.local/pipx/venvs/copier/lib/python3.8/site-packages/jinja2/environment.py", line 883, in get_template
return self._load_template(name, self.make_globals(globals))
File "/home/orange/.local/pipx/venvs/copier/lib/python3.8/site-packages/jinja2/environment.py", line 857, in _load_template
template = self.loader.load(self, name, globals)
File "/home/orange/.local/pipx/venvs/copier/lib/python3.8/site-packages/jinja2/loaders.py", line 115, in load
source, filename, uptodate = self.get_source(environment, name)
File "/home/orange/.local/pipx/venvs/copier/lib/python3.8/site-packages/jinja2/loaders.py", line 184, in get_source
contents = f.read().decode(self.encoding)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x93 in position 14: invalid start byte
Well, although that's true, it's not the most important aspect of this issue. That issue you say is #433 and the fix is... to fix it 😄