Added git diff functionality (Issue #16)
This commit is contained in:
parent
b04eb10682
commit
a8fbb22fea
3 changed files with 92 additions and 0 deletions
|
@ -6,6 +6,7 @@ Version 0.3.0 (2018-)
|
|||
- CREDENTIALS setting replaced by USERNAME and PASSWORD @danielperna84
|
||||
- PASSWORD can optionally be provided as SHA256 hash (Issue #100) @danielperna84
|
||||
- Added SESAME_TOTP_SECRET for TOTP based IP whitelisting (Issue #100) @danielperna84
|
||||
- Added git diff functionality (Issue #16) @danielperna84
|
||||
|
||||
Version 0.2.9 (2018-06-22)
|
||||
- Material Icons and HASS-help now open in new tab instead of modal (Issues #85 and #34) @danielperna84
|
||||
|
|
|
@ -2562,6 +2562,14 @@ INDEX = Template(r"""<!DOCTYPE html>
|
|||
dd_gitadd_a.innerHTML = "git add";
|
||||
dd_gitadd.appendChild(dd_gitadd_a);
|
||||
dropdown.appendChild(dd_gitadd);
|
||||
// git diff button
|
||||
var dd_gitdiff = document.createElement('li');
|
||||
var dd_gitdiff_a = document.createElement('a');
|
||||
dd_gitdiff_a.classList.add('waves-effect', 'fb_dd', 'modal-trigger');
|
||||
dd_gitdiff_a.setAttribute('onclick', "gitdiff()");
|
||||
dd_gitdiff_a.innerHTML = "git diff";
|
||||
dd_gitdiff.appendChild(dd_gitdiff_a);
|
||||
dropdown.appendChild(dd_gitdiff);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3051,6 +3059,26 @@ INDEX = Template(r"""<!DOCTYPE html>
|
|||
}
|
||||
}
|
||||
|
||||
function gitdiff() {
|
||||
var path = document.getElementById('fb_currentfile').value;
|
||||
closefile();
|
||||
if (path.length > 0) {
|
||||
data = new Object();
|
||||
data.path = path;
|
||||
$.post("api/gitdiff", data).done(function(resp) {
|
||||
if (resp.error) {
|
||||
var $toastContent = $("<div><pre>" + resp.message + "\n" + resp.path + "</pre></div>");
|
||||
Materialize.toast($toastContent, 5000);
|
||||
}
|
||||
else {
|
||||
editor.setOption('mode', modemapping['diff']);
|
||||
editor.getSession().setValue(resp.message, -1);
|
||||
editor.session.getUndoManager().markClean();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function gitinit() {
|
||||
var path = document.getElementById("fbheader").innerHTML;
|
||||
if (path.length > 0) {
|
||||
|
@ -4144,6 +4172,41 @@ class RequestHandler(BaseHTTPRequestHandler):
|
|||
LOG.warning(err)
|
||||
else:
|
||||
response['message'] = "Missing filename"
|
||||
elif req.path.endswith('/api/gitdiff'):
|
||||
try:
|
||||
postvars = parse_qs(self.rfile.read(length).decode('utf-8'),
|
||||
keep_blank_values=1)
|
||||
except Exception as err:
|
||||
LOG.warning(err)
|
||||
response['message'] = "%s" % (str(err))
|
||||
postvars = {}
|
||||
if 'path' in postvars.keys():
|
||||
if postvars['path']:
|
||||
try:
|
||||
diffpath = unquote(postvars['path'][0])
|
||||
repo = REPO(diffpath,
|
||||
search_parent_directories=True)
|
||||
filepath = "/".join(diffpath.split(os.sep)[len(repo.working_dir.split(os.sep)):])
|
||||
response['path'] = filepath
|
||||
try:
|
||||
diff = repo.index.diff(None, create_patch=True, paths=filepath)[0].diff.decode("utf-8")
|
||||
response['error'] = False
|
||||
response['message'] = diff
|
||||
self.send_response(200)
|
||||
self.send_header('Content-type', 'text/json')
|
||||
self.end_headers()
|
||||
self.wfile.write(bytes(json.dumps(response), "utf8"))
|
||||
return
|
||||
except Exception as err:
|
||||
LOG.warning(err)
|
||||
response['error'] = True
|
||||
response['message'] = str(err)
|
||||
|
||||
except Exception as err:
|
||||
response['message'] = "%s" % (str(err))
|
||||
LOG.warning(err)
|
||||
else:
|
||||
response['message'] = "Missing filename"
|
||||
elif req.path.endswith('/api/commit'):
|
||||
try:
|
||||
postvars = parse_qs(self.rfile.read(length).decode('utf-8'),
|
||||
|
|
28
dev.html
28
dev.html
|
@ -2456,6 +2456,14 @@
|
|||
dd_gitadd_a.innerHTML = "git add";
|
||||
dd_gitadd.appendChild(dd_gitadd_a);
|
||||
dropdown.appendChild(dd_gitadd);
|
||||
// git diff button
|
||||
var dd_gitdiff = document.createElement('li');
|
||||
var dd_gitdiff_a = document.createElement('a');
|
||||
dd_gitdiff_a.classList.add('waves-effect', 'fb_dd', 'modal-trigger');
|
||||
dd_gitdiff_a.setAttribute('onclick', "gitdiff()");
|
||||
dd_gitdiff_a.innerHTML = "git diff";
|
||||
dd_gitdiff.appendChild(dd_gitdiff_a);
|
||||
dropdown.appendChild(dd_gitdiff);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2945,6 +2953,26 @@
|
|||
}
|
||||
}
|
||||
|
||||
function gitdiff() {
|
||||
var path = document.getElementById('fb_currentfile').value;
|
||||
closefile();
|
||||
if (path.length > 0) {
|
||||
data = new Object();
|
||||
data.path = path;
|
||||
$.post("api/gitdiff", data).done(function(resp) {
|
||||
if (resp.error) {
|
||||
var $toastContent = $("<div><pre>" + resp.message + "\n" + resp.path + "</pre></div>");
|
||||
Materialize.toast($toastContent, 5000);
|
||||
}
|
||||
else {
|
||||
editor.setOption('mode', modemapping['diff']);
|
||||
editor.getSession().setValue(resp.message, -1);
|
||||
editor.session.getUndoManager().markClean();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function gitinit() {
|
||||
var path = document.getElementById("fbheader").innerHTML;
|
||||
if (path.length > 0) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue