Add feature to pastebin version string
Added a --paste flag to the :version command and a JS button with corresponding qutescheme URL in the Version debug page to enable pastebinning version.
This commit is contained in:
parent
e874db9ce3
commit
1d568a5cf4
@ -476,3 +476,10 @@ def qute_configdiff(url):
|
|||||||
else:
|
else:
|
||||||
data = config.instance.dump_userconfig().encode('utf-8')
|
data = config.instance.dump_userconfig().encode('utf-8')
|
||||||
return 'text/plain', data
|
return 'text/plain', data
|
||||||
|
|
||||||
|
|
||||||
|
@add_handler('pastebin-version')
|
||||||
|
def qute_pastebin_version(url): # transfusion: pylint: disable=unused-argument
|
||||||
|
"""Handler that pastebins the version string."""
|
||||||
|
utils.pastebin_version()
|
||||||
|
return 'text/plain', b'Paste called.'
|
||||||
|
@ -1,4 +1,17 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block script %}
|
||||||
|
var paste_version = function(){
|
||||||
|
xhr = new XMLHttpRequest();
|
||||||
|
xhr.open("GET", "qute://pastebin-version");
|
||||||
|
xhr.send();
|
||||||
|
}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block style %}
|
||||||
|
#paste { margin: auto; display: block; }
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{{ super() }}
|
{{ super() }}
|
||||||
<h1>Version info</h1>
|
<h1>Version info</h1>
|
||||||
@ -23,4 +36,5 @@ You should have received a copy of the GNU General Public License
|
|||||||
along with this program. If not, see <a href="http://www.gnu.org/licenses/">
|
along with this program. If not, see <a href="http://www.gnu.org/licenses/">
|
||||||
http://www.gnu.org/licenses/</a> or open <a href="qute://gpl">qute://gpl</a>.
|
http://www.gnu.org/licenses/</a> or open <a href="qute://gpl">qute://gpl</a>.
|
||||||
</p>
|
</p>
|
||||||
|
<button id="paste" onclick="paste_version()">Pastebin Version Info</button>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -42,20 +42,23 @@ class PastebinClient(QObject):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
API_URL = 'https://crashes.qutebrowser.org/api/'
|
API_URL = 'https://crashes.qutebrowser.org/api/'
|
||||||
|
MISC_API_URL = 'http://paste.the-compiler.org/api/'
|
||||||
success = pyqtSignal(str)
|
success = pyqtSignal(str)
|
||||||
error = pyqtSignal(str)
|
error = pyqtSignal(str)
|
||||||
|
|
||||||
def __init__(self, client, parent=None):
|
def __init__(self, client, parent=None, api_url=API_URL):
|
||||||
"""Constructor.
|
"""Constructor.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
client: The HTTPClient to use. Will be reparented.
|
client: The HTTPClient to use. Will be reparented.
|
||||||
|
api_url: The Stikked pastebin endpoint to use.
|
||||||
"""
|
"""
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
client.setParent(self)
|
client.setParent(self)
|
||||||
client.error.connect(self.error)
|
client.error.connect(self.error)
|
||||||
client.success.connect(self.on_client_success)
|
client.success.connect(self.on_client_success)
|
||||||
self._client = client
|
self._client = client
|
||||||
|
self.api_url = api_url
|
||||||
|
|
||||||
def paste(self, name, title, text, parent=None):
|
def paste(self, name, title, text, parent=None):
|
||||||
"""Paste the text into a pastebin and return the URL.
|
"""Paste the text into a pastebin and return the URL.
|
||||||
@ -74,7 +77,7 @@ class PastebinClient(QObject):
|
|||||||
}
|
}
|
||||||
if parent is not None:
|
if parent is not None:
|
||||||
data['reply'] = parent
|
data['reply'] = parent
|
||||||
url = QUrl(urllib.parse.urljoin(self.API_URL, 'create'))
|
url = QUrl(urllib.parse.urljoin(self.api_url, 'create'))
|
||||||
self._client.post(url, data)
|
self._client.post(url, data)
|
||||||
|
|
||||||
@pyqtSlot(str)
|
@pyqtSlot(str)
|
||||||
|
@ -369,8 +369,11 @@ def nop():
|
|||||||
|
|
||||||
@cmdutils.register()
|
@cmdutils.register()
|
||||||
@cmdutils.argument('win_id', win_id=True)
|
@cmdutils.argument('win_id', win_id=True)
|
||||||
def version(win_id):
|
def version(win_id, paste=False):
|
||||||
"""Show version information."""
|
"""Show version information."""
|
||||||
tabbed_browser = objreg.get('tabbed-browser', scope='window',
|
tabbed_browser = objreg.get('tabbed-browser', scope='window',
|
||||||
window=win_id)
|
window=win_id)
|
||||||
tabbed_browser.openurl(QUrl('qute://version'), newtab=True)
|
tabbed_browser.openurl(QUrl('qute://version'), newtab=True)
|
||||||
|
|
||||||
|
if paste:
|
||||||
|
utils.pastebin_version()
|
||||||
|
@ -33,9 +33,10 @@ import functools
|
|||||||
import contextlib
|
import contextlib
|
||||||
import socket
|
import socket
|
||||||
import shlex
|
import shlex
|
||||||
|
import getpass
|
||||||
|
|
||||||
import attr
|
import attr
|
||||||
from PyQt5.QtCore import Qt, QUrl
|
from PyQt5.QtCore import Qt, QUrl, pyqtSlot
|
||||||
from PyQt5.QtGui import QKeySequence, QColor, QClipboard, QDesktopServices
|
from PyQt5.QtGui import QKeySequence, QColor, QClipboard, QDesktopServices
|
||||||
from PyQt5.QtWidgets import QApplication
|
from PyQt5.QtWidgets import QApplication
|
||||||
import pkg_resources
|
import pkg_resources
|
||||||
@ -49,6 +50,7 @@ except ImportError: # pragma: no cover
|
|||||||
|
|
||||||
import qutebrowser
|
import qutebrowser
|
||||||
from qutebrowser.utils import qtutils, log, debug
|
from qutebrowser.utils import qtutils, log, debug
|
||||||
|
from qutebrowser.misc import httpclient, pastebin
|
||||||
|
|
||||||
|
|
||||||
fake_clipboard = None
|
fake_clipboard = None
|
||||||
@ -915,3 +917,32 @@ def yaml_dump(data, f=None):
|
|||||||
return None
|
return None
|
||||||
else:
|
else:
|
||||||
return yaml_data.decode('utf-8')
|
return yaml_data.decode('utf-8')
|
||||||
|
|
||||||
|
|
||||||
|
def pastebin_version():
|
||||||
|
"""Pastebins version and logs to messages"""
|
||||||
|
|
||||||
|
app = qutebrowser.utils.objreg.get('app')
|
||||||
|
http_client = httpclient.HTTPClient()
|
||||||
|
|
||||||
|
def _get_paste_title():
|
||||||
|
return "qute version info {}".format(qutebrowser.__version__)
|
||||||
|
|
||||||
|
@pyqtSlot(str)
|
||||||
|
def _on_paste_version_success(url):
|
||||||
|
qutebrowser.utils.message.info("Version info pastebinned"
|
||||||
|
" to: {}".format(url))
|
||||||
|
|
||||||
|
@pyqtSlot(str)
|
||||||
|
def _on_paste_version_err(text):
|
||||||
|
qutebrowser.utils.message.info("Failed to pastebin version"
|
||||||
|
" info: {}".format(text))
|
||||||
|
|
||||||
|
pbclient = pastebin.PastebinClient(http_client, parent=app,
|
||||||
|
api_url=
|
||||||
|
pastebin.PastebinClient.MISC_API_URL)
|
||||||
|
pbclient.success.connect(_on_paste_version_success)
|
||||||
|
pbclient.error.connect(_on_paste_version_err)
|
||||||
|
|
||||||
|
pbclient.paste(getpass.getuser(), _get_paste_title(),
|
||||||
|
qutebrowser.utils.version.version())
|
||||||
|
Loading…
Reference in New Issue
Block a user