Jonathan Hartley wrote:
Hi,

I didn't see anyone follow up on Daniel Harding's assertion that his adapted pylint.bat fix could be improved to "detect and remove the --exitcode parameter from any position in the argument list." Has anyone done any work on this?

I could implement this if anyone wants it - the main reason I required
it to be the first option is that it is not context-sensitive with
regards to the other arguments - it wouldn't work in the extraordinary
edge case that "--exitcode" was a modifier for another argument in the
argument list.  However, either way of implementing the batch file
argument parsing is much more complicated than the approach you have
proposed below, which has the added bonus that it Just Works without
having to mess with any additional command line arguments.

I'm no batch file expert, but I just discovered an alternative solution which may be a better because it doesn't require introducing a new command-line switch.


SUMMARY

Replace the current pylint.bat with:

    @echo off
    python "%~dp0%~n0-script.py" %*

This just executes the file pylint-script.py, in the same directory. This is a new file:

    import sys
    from pylint import lint
    lint.Run(sys.argv[1:])

The result will execute pylint without ever exiting the current shell, and will always propagate the exit value from lint.Run() back to the invoker as a process exit value. As a bonus, despite introducing an extra .py file, this seems a much tidier and more understandable mechanism than the existing pylint.bat.

Am I overlooking something? Thoughts and criticism much appreciated.

Great thinking.  Sometimes it is easy to get sidetracked trying to make
something complicated work, when a much more straightforward solution
would do just as well if not better.

I would make one improvement on what you have, and simply pass the code
to python using the -c command line option.  This removes the need for
an additional file.  pylint.bat then becomes:


    @echo off
    python -c "import sys; from pylint import lint; lint.Run(sys.argv[1:])" %*

Any reason this wouldn't work?

Cheers,

Daniel Harding

_______________________________________________
Python-Projects mailing list
Python-Projects@lists.logilab.org
http://lists.logilab.org/mailman/listinfo/python-projects

Reply via email to