ansible / vscode-ansible

vscode/vscodium extension for providing Ansible auto-completion and integrating quality assurance tools like ansible-lint, ansible syntax check, yamllint, molecule and ansible-test.
https://ansible.readthedocs.io/projects/vscode-ansible/
MIT License
361 stars 90 forks source link

RFE: Default ansible-lint params in settings to `--fix` #985

Open cidrblock opened 1 year ago

cidrblock commented 1 year ago

This will enable fixing automatically for users.

We'll need to watch closely for feedback :)

cidrblock commented 1 year ago

thinking about htis more, let's not do this.......

I think we need to support lint as a formatter e.g. python.formatting.provider

so the user can "File: Save without formatting"

netopsengineer commented 5 months ago

@cidrblock I was planning on creating an issue on a similar topic, but I think the overall challenge is better addressed as you mentioned, through a formatting provider. I encountered an issue trying to create this type of functionality, specifically when using the write_list: ["all"] configuration in ansible-lint, which is designed for auto-fixing. This configuration conflicts with VS Code's "files.autoSave": "afterDelay" setting it seems.

Here's the problem: if auto-save is triggered while you're still modifying a task (which is malformed in some way), the extension invokes ansible-lint and attempts to fix the file, sometimes it does this so quickly, that it is leading to a conflict in VS Code with the following error message:

Failed to save 'site.yml': The content of the file is newer. Please compare your version with the file contents or overwrite the content of the file with your changes.

I believe formatting providers can handle these scenarios more effectively, especially the formatting on save, in fact I saw you can even format only the parts of a file you modified now as well on save. Overall, I support this idea as it aligns with what I was trying to achieve. While you could use pre-commit hooks, you are likely to surprise new users, when the opinionated fixes take place, and force them to re-commit, for example. It would be much more transparent if they could see it while the file was open.