1
0
mirror of https://github.com/openSUSE/osc.git synced 2024-11-14 16:26:13 +01:00
Commit Graph

89 Commits

Author SHA1 Message Date
3f2f5f5ab1 Fix running osc in an AppImage by switching to the correct working directory 2023-05-23 15:30:32 +02:00
Andreas Schwab
623148a04a Handle ProtocolError exception 2023-05-19 21:43:21 +02:00
b789cdfed6 Backup edited messages and notify user about them when osc errors out
The messages are kept in ~/.cache/osc/edited-messages for 1 day.
2023-05-04 11:00:07 +02:00
aa5e0952e2 Fix fallback KeyringLocked to inherit from Exception 2023-05-02 09:55:30 +02:00
1a6fa63ac9 Fix a traceback when failed to unlock a keyring 2023-04-28 16:12:19 +02:00
b6a6ee5c00 Decode entities in HTTPError message body 2023-04-04 14:36:32 +02:00
26a8fb1acf commandline: New class-based commands
This is based on a prototype we've worked on together
with Laurin Fäller <laurin.faeller@suse.com>.
2023-03-31 09:39:04 +02:00
f7c84d42a3 Simplify how babysitter works with options and config 2023-03-31 09:39:04 +02:00
483685aaa8
Prefer f-strings ove c-style string expansion
This exists since Python >= 3.6 and is shorter and easier to read.
2023-03-30 10:25:49 +02:00
e4723f7f74 Replace arbitrary XML escaping code with xml_escape() 2023-03-06 10:12:59 +01:00
987db92f3b Mute pylint false-positive errors related to rpm 2023-01-20 16:16:23 +01:00
fe59986e1c Run autopep8 to fix whitespace issues 2022-09-12 13:45:19 +02:00
feb53212dd Modernize code with pyupgrade
pyupgrade --keep-percent-format --py36-plus `find -name '*.py'`
2022-07-28 19:14:12 +02:00
e7af9cebb3
Merge pull request #1088 from dmach/python3-import-cleanup
Clean imports up, drop python 2 fallbacks
2022-07-28 17:41:10 +02:00
229913a77f Clean imports up, drop python 2 fallbacks 2022-07-28 13:17:43 +02:00
ad8d2bd67e
Remove duplicate taking care of sys.stderr in babysitter:main. 2022-07-28 11:21:35 +02:00
6397a6070d Replace osc-wrapper.py with entry_points. 2022-07-28 09:46:34 +02:00
93bc0e4731 Switch http_request() to urllib3
Use connection pools for better performance.
Replace M2Crypto with cryptography and urllib3's ssl context.
2022-07-27 11:15:21 +02:00
90a1cb838b Report a config error when trying to load credentials_mgr_class that does't exist 2022-03-28 09:49:55 +02:00
8d082fae6b No need to ignore SIGWINCH anymore
In normal mode, SIGWINCH is handled by ProgressBar.
In quiet mode, there's no SIGWINCH handler at all.
2022-01-07 13:51:48 +01:00
Marcus Huewe
cf8aadc886 Do not fail with a traceback in case of a config error
Do not fail with a traceback if the config file parsing fails.
Hence, catch the configparser.Error exception and print its
"message" attribute to the user.

Fixes: #985 ("Type error on any osc call")
2021-12-19 17:38:22 +01:00
Marcus Huewe
81d1985bc5 Improve error message in case of an URLError
The old code does not print any information about the host, for
which the access failed, in case of an URLError. In order to fix
this, add information about the host (and port) to the URLError
instance in core.http_request and use this information in the
babysitter to print out a more detailed error message (which includes
the host (and port)).
For now, we simply add a "private" "_osc_host_port" attribute to
the URLError instance (this way we avoid potential name clashes (due
to the "_osc" prefix) and could come up with a different/more clever
way in the future (due to its privateness)).

Fixes: #954 ("Better diagnostic for domain name issues")
2021-09-30 14:09:08 +02:00
bf7899da83
Ignore signal.SIGWINCH.
Fixes #584
2020-08-27 16:56:36 +02:00
Nicholas Brown
75ba922eb2 custom exception if importing m2crypto fails
fixes #743
2020-02-18 17:35:29 +00:00
lethliel
1ee7b638cc improve SSLError message
Improve the SSLError message if a version mismatch (TLSv1) is
detected and give the user a hint what is wrong.
(Basically the API does not supprt TLS <= 1.2 and the python
version does not support TLS >= 1.2)
2020-02-06 10:50:22 +01:00
Matthias Gerstner
0a99f35126
babysitter: fix RPMError fallback when running in Python3
After (successfully) running an 'osc vc' the following exception trace
comes up, when no rpm python module is available:

```
no changes made
Traceback (most recent call last):
  File "/home/mgerstner/.local/lib64/python3.6/site-packages/osc/babysitter.py", line 62, in run
    return prg.main(argv)
  File "/home/mgerstner/.local/lib64/python3.6/site-packages/osc/cmdln.py", line 344, in main
    return self.cmd(args)
  File "/home/mgerstner/.local/lib64/python3.6/site-packages/osc/cmdln.py", line 367, in cmd
    retval = self.onecmd(argv)
  File "/home/mgerstner/.local/lib64/python3.6/site-packages/osc/cmdln.py", line 501, in onecmd
    return self._dispatch_cmd(handler, argv)
  File "/home/mgerstner/.local/lib64/python3.6/site-packages/osc/cmdln.py", line 1232, in _dispatch_cmd
    return handler(argv[0], opts, *args)
  File "/home/mgerstner/.local/lib64/python3.6/site-packages/osc/commandline.py", line 8924, in do_vc
    sys.exit(vc.returncode)
SystemExit: 0

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/mgerstner/bin/osc", line 41, in <module>
    r = babysitter.run(osccli)
  File "/home/mgerstner/.local/lib64/python3.6/site-packages/osc/babysitter.py", line 172, in run
    except RPMError as e:
TypeError: catching classes that do not inherit from BaseException is not allowed
```

To fix this change the fallback RPMError from None to an actual
Exception-derived type.
2019-07-25 10:58:56 +02:00
lethliel
4269426b28 [python3] msg and body are byte strings 2018-12-13 14:32:38 +01:00
lethliel
65b053abb3 replace urlgrabber to enable python3 compatibility
- new module grabber.py
  * OscMirrorGroup to keep urlgrabber.mirrorgroup behavior
  * OscFileGrabber moved here

- meter.py
  * reworked to use progressbar module instead of progressbar
    of urlgrabber and simplified the module.

- babysitter.py
  * removed URLGrabErrorr

- build.py
  * removed adding of url_local to urllist. (not needed anymore)
  * removed URLGrabError

- commandline.py
  * switched from urlgrabber.urlgrab to OscFileGrabber().urlgrab

- core.py
  * reworked progressbar behavior

- fetch.py
  * removed join_url (not needed anymore)
  * moved OscFileGrabber to grabber.py
  * removed failureReport (not needed anymore)
2018-10-19 09:31:37 +02:00
Marcus Huewe
d66ccb2a7d Cleanup babysitter a bit
In case of an exception, return status code 1 by default.
2017-10-06 13:25:25 +02:00
Marcus Huewe
6acc90d438 Exit with status 1 in case of a ServiceRuntimeError
Fixes: #344 ("'osc ci' exit code doesn't take source service results
       into account")
2017-10-06 13:19:15 +02:00
Oleg Girko
361fec753a Fix URLGrabError exception handling.
URLGrabError class has no exception attribute,
use strerror to print error instead.

Signed-off-by: Oleg Girko <oleg.girko@jolla.com>
2017-01-17 23:27:08 +00:00
Andreas Schwab
9be4295c73 - babysitter.run: decode entities in error summary 2016-08-04 12:45:30 +02:00
Tomáš Čech
66596c5d0a Return different return code on KeyboardInterrupt
As I haven't found any good source for choice of exit code, I took value
130 found here:

http://tldp.org/LDP/abs/html/exitcodes.html
2016-07-02 19:19:32 +02:00
Marcus Huewe
fdfbcdc6eb - babysitter: catch URLGrabError exception 2014-06-08 22:32:35 +02:00
Marcus Huewe
1614123f82 - babysitter: catch ServiceRuntimeError
Note: it is probably better to raise a ServiceRuntimeError in
Serviceinfo.execute instead of Package.commit because "execute"
has all the information about the failing service...
2013-08-29 15:22:25 +02:00
Marcus Huewe
bcacedcd96 - babysitter.run: added new argv parameter
This way other python scripts can execute osc commands via the
babysitter. Example:

>>> from osc import babysitter, commandline
>>> cli = commandline.Osc()
>>> babysitter.run(cli, ['osc', 'ls', '<project>'])
2013-08-07 23:25:31 +02:00
Marcus Huewe
41661d741a - babysitter: print out headers in case of status 5XX 2013-05-02 22:33:04 +02:00
Michal Vyskocil
419367fca3 python3 compatibility: urllib
fixes all renames in urllib, urllib2, urlparse modules in python3
2013-04-16 10:51:42 +02:00
Michal Vyskocil
7f2031558c python3 compatibility: print function
The most visible change in python3 - removal of print statement and all
the crufty
   print >> sys.stderr, foo,

The from __future__ import print_function makes it available in python
2.6
2013-04-16 10:51:41 +02:00
Michal Vyskocil
87d354e1a0 python3 compatibility: import proper modules
Some modules (httplib, StringIO, ...) were renamed in python3. This
patch try to import the proper symbols from python3 and then fallback to
python2 in a case ImportError will appear.

There is one exception, python 2.7 got the io module with StringIO, but
it allow unicode arguments only. Therefor the old module is poked before
new one.
2013-04-16 10:51:18 +02:00
Michal Vyskocil
c612e8d47e python3 compatibility: use relative imports
Use relative imports when using module's own modules - this makes a
clear distinction between already developed copy and installed package.
2013-04-16 10:51:18 +02:00
Michal Vyskocil
3a93ac6d10 python3 compatibility: except
changes 'except FooError, fe' to 'except FooError as fe'

available in python 2.6
2013-04-16 10:51:17 +02:00
Marcus Huewe
93df866787 - added new function core.run_external which can be used to execute an external program
Basically it's just a wrapper around subprocess.call which raises an ExtRuntimeError
exception if subprocess.call raised an OSError with errno set to ENOENT (unfortunately
the OSError's filename attribute is set to None therefore we cannot print a meaningful
error message (that's why an ExtRuntimeError is raised)).
Replaced all occurrences of subprocess.call with a corresponding run_external call.
2013-03-08 00:56:57 +01:00
Sascha Peilicke
e3f0821bd4 Fix commit 438569f821 2011-07-29 11:05:06 +02:00
Sascha Peilicke
438569f821 PEP8-ified parts of the code.
Exchange individual return statements with a finally statement in the
big try/except statement in babysitter.py. If you return a different
value in the 'except' clause, it takes precedency over the 'finally'
clause (finally is executed before returning, naturally).
2011-07-08 16:09:44 +02:00
Michal Čihař
e0b7f69fe6 Handle also errors which can sneak out of httplib 2011-05-26 11:54:14 +02:00
Ludwig Nussel
f7a781e730 fix PackageNotInstalled printing 2011-04-21 14:31:30 +02:00
Ludwig Nussel
b33577b6a7 use more generic oscerr.PackageNotInstalled 2011-04-18 11:03:28 +02:00
Marcus Huewe
be4f1f350e - renamed "PackageNotInstalled" exception to "ServiceNotInstalled"
- also catch this exception in babysitter.py
2011-03-30 01:10:48 +02:00
Marcus Huewe
bb02a34622 - globally catch OSError ENOENT 2011-02-01 18:25:23 +01:00