diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-pylint-exit.spec | 594 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 596 insertions, 0 deletions
@@ -0,0 +1 @@ +/pylint-exit-1.2.0.zip diff --git a/python-pylint-exit.spec b/python-pylint-exit.spec new file mode 100644 index 0000000..b1e3342 --- /dev/null +++ b/python-pylint-exit.spec @@ -0,0 +1,594 @@ +%global _empty_manifest_terminate_build 0 +Name: python-pylint-exit +Version: 1.2.0 +Release: 1 +Summary: Exit code handler for pylint command line utility. +License: MIT License +URL: https://github.com/jongracecox/pylint-exit +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/26/fb/4365157ab89cd442cca4714595466394d5ee328709ca1804a5c85be7ae32/pylint-exit-1.2.0.zip +BuildArch: noarch + + +%description +# pylint-exit + +[](https://pypi.org/project/pylint-exit) +[](https://travis-ci.org/jongracecox/pylint-exit) +[](https://pypistats.org/packages/pylint-exit) +[](https://github.com/jongracecox/pylint-exit/commits/master) +[](https://github.com/jongracecox/pylint-exit/blob/master/LICENSE) +[](https://github.com/jongracecox/pylint-exit/stargazers) + +Utility to handle pylint exit codes on Linux in a scripting-friendly way. + +Pylint uses bit-encoded exit codes to convey the results of the pylint review, +which means it will return with a non-zero return code even when the +pylint scoring was successful. + +This can make it difficult to script the execution of pylint while at the same time +detecting genuine errors. + +`pylint-exit` is a small command-line utility that can be used to re-process +the pylint return code and translate it into a scripting-friendly return code. + +`pylint-exit` will decode the bit-encoded return code, identify whether there were +any fatal messages issued (which might constitute a failure in the execution of +pylint), or a usage error, and return a `0` or `1` return code that is more easily +used in shell scripts. + +# Installation + +The simplest way to install is via `pip`. + +```bash +pip install pylint-exit +``` + +This will install the package, and will provide the `pylint-exit` command line utility. + +You can also manually install by downloading `pylint_exit.py`, and make it executable. + +```bash +curl -o pylint-exit https://raw.githubusercontent.com/jongracecox/pylint-exit/master/pylint_exit.py && chmod +x pylint_exit.py +``` + +You should also consider creating a symbolic link so that the calls in the remainder of this +README work as described. Update `<path-to>` with where you downloaded the script. + +```bash +ln -s <path-to>/pylint_exit.py /usr/local/bin/pylint-exit +``` + +*Note: If you perform a `--user` install with `pip` then you will need to ensure `~/.local/bin` appears in your `PATH` +environment variable, otherwise the command line `pylint-exit` will not work.* + +# Usage +Add `|| pylint-exit $?` to the end of your existing Pylint command. You can then +use the updated `$?` return code in your shell script. + +```bash +pylint mymodule.py || pylint-exit $? +if [ $? -ne 0 ]; then + echo "An error occurred while running pylint." >&2 + exit 1 +fi +``` + +Note: Many CI tools will check the return code of each command, so it may be enough to +simply add `|| pylint-exit $?`, and leave the return code check to the CI executor. + +You can also use the python code directly if needed: + +```bash +pylint mymodule.py || python pylint_exit.py $? +``` + +# Return codes +Pylint can return combinations of the following codes. `pylint-exit` will identify each +issued message, and return the maximum final return code. + +| Pylint code | Message | Final return code | +| ----------- | ------- | ----------------- | +| 1 | Fatal message issued | 1 | +| 2 | Error message issued | 0 | +| 4 | Warning message issued | 0 | +| 8 | Refactor message issued | 0 | +| 16 | Convention message issued | 0 | +| 32 | Usage error | 1 | + +This list is stored in `exit_codes_list`, which can be customised if needed. + +You can control what is considered a failure using the following command line arguments. +By default these types of messages don't cause a non-zero return code. Adding +any of these arguments will trigger a non-zero return code when those types of +message are raised. + +| Name | Meaning | +| ---- | ------- | +| `-efail`, `--error-fail` | Fail on issued error messages. | +| `-wfail`, `--warn-fail` | Fail on issued warning messages. | +| `-rfail`, `--refactor-fail` | Fail on issued refactor messages. | +| `-cfail`, `--convention-fail` | Fail on issued convension messages. | + +# Examples + +## Exiting gracefully on non-severe messages +In this example pylint issues refactor and convention messages, and exits with a +return code of 24. `pylint-exit` decodes this, displays the messages, and exits +with a return code of 0. + +```bash +> pylint --rcfile=.pylintrc --output-format=text mymodule.py || pylint-exit $? +The following messages were raised: + + - refactor message issued + - convention message issued + +No fatal messages detected. Exiting gracefully... +> echo $? +0 +``` + +## Exiting with an error on severe messages +In this example pylint returns with a usage error due to the bad output format, and +exits with a return code of 32. `pylint-exit` detects this, displays the message, and +returns with an exit code of 1. + +```bash +> pylint --rcfile=.pylintrc --output-format=badformat mymodule.py || pylint-exit $? +The following messages were raised: + + - usage error + +Fatal messages detected. Failing... +> echo $? +1 +``` + +## Treating errors and warnings as severe +In this example we will use the `--error-fail` and `--warn-fail` command line arguments +to cause pylint-exit to treat errors and warnings as serious enough to return a non-zero +return code. + +In the example scenario pylint issues error and warning messages, and exits with a +return code of 6. `pylint-exit` decodes this, displays the messages, and exits +with a return code of 1 because the error and warning messages are now considered as +fatal. + + +```bash +> pylint --rcfile=.pylintrc --output-format=badformat mymodule.py || pylint-exit --error-fail --warn-fail $? +The following messages were raised: + + - error message issued + - warning message issued + +Fatal messages detected. Failing... +> echo $? +1 + +``` + +# Testing + +You can test how pylint-exit will react to various return codes using the following command: + +```bash +(exit 6) || pylint-exit $? +``` + +or if you are using the python code directly: + +```bash +(exit 6) || python pylint_exit.py $? +``` + + + + +%package -n python3-pylint-exit +Summary: Exit code handler for pylint command line utility. +Provides: python-pylint-exit +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-pylint-exit +# pylint-exit + +[](https://pypi.org/project/pylint-exit) +[](https://travis-ci.org/jongracecox/pylint-exit) +[](https://pypistats.org/packages/pylint-exit) +[](https://github.com/jongracecox/pylint-exit/commits/master) +[](https://github.com/jongracecox/pylint-exit/blob/master/LICENSE) +[](https://github.com/jongracecox/pylint-exit/stargazers) + +Utility to handle pylint exit codes on Linux in a scripting-friendly way. + +Pylint uses bit-encoded exit codes to convey the results of the pylint review, +which means it will return with a non-zero return code even when the +pylint scoring was successful. + +This can make it difficult to script the execution of pylint while at the same time +detecting genuine errors. + +`pylint-exit` is a small command-line utility that can be used to re-process +the pylint return code and translate it into a scripting-friendly return code. + +`pylint-exit` will decode the bit-encoded return code, identify whether there were +any fatal messages issued (which might constitute a failure in the execution of +pylint), or a usage error, and return a `0` or `1` return code that is more easily +used in shell scripts. + +# Installation + +The simplest way to install is via `pip`. + +```bash +pip install pylint-exit +``` + +This will install the package, and will provide the `pylint-exit` command line utility. + +You can also manually install by downloading `pylint_exit.py`, and make it executable. + +```bash +curl -o pylint-exit https://raw.githubusercontent.com/jongracecox/pylint-exit/master/pylint_exit.py && chmod +x pylint_exit.py +``` + +You should also consider creating a symbolic link so that the calls in the remainder of this +README work as described. Update `<path-to>` with where you downloaded the script. + +```bash +ln -s <path-to>/pylint_exit.py /usr/local/bin/pylint-exit +``` + +*Note: If you perform a `--user` install with `pip` then you will need to ensure `~/.local/bin` appears in your `PATH` +environment variable, otherwise the command line `pylint-exit` will not work.* + +# Usage +Add `|| pylint-exit $?` to the end of your existing Pylint command. You can then +use the updated `$?` return code in your shell script. + +```bash +pylint mymodule.py || pylint-exit $? +if [ $? -ne 0 ]; then + echo "An error occurred while running pylint." >&2 + exit 1 +fi +``` + +Note: Many CI tools will check the return code of each command, so it may be enough to +simply add `|| pylint-exit $?`, and leave the return code check to the CI executor. + +You can also use the python code directly if needed: + +```bash +pylint mymodule.py || python pylint_exit.py $? +``` + +# Return codes +Pylint can return combinations of the following codes. `pylint-exit` will identify each +issued message, and return the maximum final return code. + +| Pylint code | Message | Final return code | +| ----------- | ------- | ----------------- | +| 1 | Fatal message issued | 1 | +| 2 | Error message issued | 0 | +| 4 | Warning message issued | 0 | +| 8 | Refactor message issued | 0 | +| 16 | Convention message issued | 0 | +| 32 | Usage error | 1 | + +This list is stored in `exit_codes_list`, which can be customised if needed. + +You can control what is considered a failure using the following command line arguments. +By default these types of messages don't cause a non-zero return code. Adding +any of these arguments will trigger a non-zero return code when those types of +message are raised. + +| Name | Meaning | +| ---- | ------- | +| `-efail`, `--error-fail` | Fail on issued error messages. | +| `-wfail`, `--warn-fail` | Fail on issued warning messages. | +| `-rfail`, `--refactor-fail` | Fail on issued refactor messages. | +| `-cfail`, `--convention-fail` | Fail on issued convension messages. | + +# Examples + +## Exiting gracefully on non-severe messages +In this example pylint issues refactor and convention messages, and exits with a +return code of 24. `pylint-exit` decodes this, displays the messages, and exits +with a return code of 0. + +```bash +> pylint --rcfile=.pylintrc --output-format=text mymodule.py || pylint-exit $? +The following messages were raised: + + - refactor message issued + - convention message issued + +No fatal messages detected. Exiting gracefully... +> echo $? +0 +``` + +## Exiting with an error on severe messages +In this example pylint returns with a usage error due to the bad output format, and +exits with a return code of 32. `pylint-exit` detects this, displays the message, and +returns with an exit code of 1. + +```bash +> pylint --rcfile=.pylintrc --output-format=badformat mymodule.py || pylint-exit $? +The following messages were raised: + + - usage error + +Fatal messages detected. Failing... +> echo $? +1 +``` + +## Treating errors and warnings as severe +In this example we will use the `--error-fail` and `--warn-fail` command line arguments +to cause pylint-exit to treat errors and warnings as serious enough to return a non-zero +return code. + +In the example scenario pylint issues error and warning messages, and exits with a +return code of 6. `pylint-exit` decodes this, displays the messages, and exits +with a return code of 1 because the error and warning messages are now considered as +fatal. + + +```bash +> pylint --rcfile=.pylintrc --output-format=badformat mymodule.py || pylint-exit --error-fail --warn-fail $? +The following messages were raised: + + - error message issued + - warning message issued + +Fatal messages detected. Failing... +> echo $? +1 + +``` + +# Testing + +You can test how pylint-exit will react to various return codes using the following command: + +```bash +(exit 6) || pylint-exit $? +``` + +or if you are using the python code directly: + +```bash +(exit 6) || python pylint_exit.py $? +``` + + + + +%package help +Summary: Development documents and examples for pylint-exit +Provides: python3-pylint-exit-doc +%description help +# pylint-exit + +[](https://pypi.org/project/pylint-exit) +[](https://travis-ci.org/jongracecox/pylint-exit) +[](https://pypistats.org/packages/pylint-exit) +[](https://github.com/jongracecox/pylint-exit/commits/master) +[](https://github.com/jongracecox/pylint-exit/blob/master/LICENSE) +[](https://github.com/jongracecox/pylint-exit/stargazers) + +Utility to handle pylint exit codes on Linux in a scripting-friendly way. + +Pylint uses bit-encoded exit codes to convey the results of the pylint review, +which means it will return with a non-zero return code even when the +pylint scoring was successful. + +This can make it difficult to script the execution of pylint while at the same time +detecting genuine errors. + +`pylint-exit` is a small command-line utility that can be used to re-process +the pylint return code and translate it into a scripting-friendly return code. + +`pylint-exit` will decode the bit-encoded return code, identify whether there were +any fatal messages issued (which might constitute a failure in the execution of +pylint), or a usage error, and return a `0` or `1` return code that is more easily +used in shell scripts. + +# Installation + +The simplest way to install is via `pip`. + +```bash +pip install pylint-exit +``` + +This will install the package, and will provide the `pylint-exit` command line utility. + +You can also manually install by downloading `pylint_exit.py`, and make it executable. + +```bash +curl -o pylint-exit https://raw.githubusercontent.com/jongracecox/pylint-exit/master/pylint_exit.py && chmod +x pylint_exit.py +``` + +You should also consider creating a symbolic link so that the calls in the remainder of this +README work as described. Update `<path-to>` with where you downloaded the script. + +```bash +ln -s <path-to>/pylint_exit.py /usr/local/bin/pylint-exit +``` + +*Note: If you perform a `--user` install with `pip` then you will need to ensure `~/.local/bin` appears in your `PATH` +environment variable, otherwise the command line `pylint-exit` will not work.* + +# Usage +Add `|| pylint-exit $?` to the end of your existing Pylint command. You can then +use the updated `$?` return code in your shell script. + +```bash +pylint mymodule.py || pylint-exit $? +if [ $? -ne 0 ]; then + echo "An error occurred while running pylint." >&2 + exit 1 +fi +``` + +Note: Many CI tools will check the return code of each command, so it may be enough to +simply add `|| pylint-exit $?`, and leave the return code check to the CI executor. + +You can also use the python code directly if needed: + +```bash +pylint mymodule.py || python pylint_exit.py $? +``` + +# Return codes +Pylint can return combinations of the following codes. `pylint-exit` will identify each +issued message, and return the maximum final return code. + +| Pylint code | Message | Final return code | +| ----------- | ------- | ----------------- | +| 1 | Fatal message issued | 1 | +| 2 | Error message issued | 0 | +| 4 | Warning message issued | 0 | +| 8 | Refactor message issued | 0 | +| 16 | Convention message issued | 0 | +| 32 | Usage error | 1 | + +This list is stored in `exit_codes_list`, which can be customised if needed. + +You can control what is considered a failure using the following command line arguments. +By default these types of messages don't cause a non-zero return code. Adding +any of these arguments will trigger a non-zero return code when those types of +message are raised. + +| Name | Meaning | +| ---- | ------- | +| `-efail`, `--error-fail` | Fail on issued error messages. | +| `-wfail`, `--warn-fail` | Fail on issued warning messages. | +| `-rfail`, `--refactor-fail` | Fail on issued refactor messages. | +| `-cfail`, `--convention-fail` | Fail on issued convension messages. | + +# Examples + +## Exiting gracefully on non-severe messages +In this example pylint issues refactor and convention messages, and exits with a +return code of 24. `pylint-exit` decodes this, displays the messages, and exits +with a return code of 0. + +```bash +> pylint --rcfile=.pylintrc --output-format=text mymodule.py || pylint-exit $? +The following messages were raised: + + - refactor message issued + - convention message issued + +No fatal messages detected. Exiting gracefully... +> echo $? +0 +``` + +## Exiting with an error on severe messages +In this example pylint returns with a usage error due to the bad output format, and +exits with a return code of 32. `pylint-exit` detects this, displays the message, and +returns with an exit code of 1. + +```bash +> pylint --rcfile=.pylintrc --output-format=badformat mymodule.py || pylint-exit $? +The following messages were raised: + + - usage error + +Fatal messages detected. Failing... +> echo $? +1 +``` + +## Treating errors and warnings as severe +In this example we will use the `--error-fail` and `--warn-fail` command line arguments +to cause pylint-exit to treat errors and warnings as serious enough to return a non-zero +return code. + +In the example scenario pylint issues error and warning messages, and exits with a +return code of 6. `pylint-exit` decodes this, displays the messages, and exits +with a return code of 1 because the error and warning messages are now considered as +fatal. + + +```bash +> pylint --rcfile=.pylintrc --output-format=badformat mymodule.py || pylint-exit --error-fail --warn-fail $? +The following messages were raised: + + - error message issued + - warning message issued + +Fatal messages detected. Failing... +> echo $? +1 + +``` + +# Testing + +You can test how pylint-exit will react to various return codes using the following command: + +```bash +(exit 6) || pylint-exit $? +``` + +or if you are using the python code directly: + +```bash +(exit 6) || python pylint_exit.py $? +``` + + + + +%prep +%autosetup -n pylint-exit-1.2.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-pylint-exit -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon Apr 10 2023 Python_Bot <Python_Bot@openeuler.org> - 1.2.0-1 +- Package Spec generated @@ -0,0 +1 @@ +3f60dde538f28282024ba1a52a668cb2 pylint-exit-1.2.0.zip |
