-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathgit-diff.py
More file actions
executable file
·79 lines (66 loc) · 2.02 KB
/
git-diff.py
File metadata and controls
executable file
·79 lines (66 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/env python
import git
import os
import re
import smtplib
from email.mime.text import MIMEText
emailfrom = "netconfigs@test.com"
emailto = "stuart.howlette@test.com"
join = os.path.join
repo = git.Repo('.')
diffin = repo.head.commit.tree
diffout = repo.git.diff(diffin).split('\n')
diffdict = {}
loopback = "nothing"
for those in diffout:
if "+++" in those:
if "configs" in those:
loopback = those.split('/')[2]
diffdict[loopback] = {}
diffdict[loopback]['added'] = []
diffdict[loopback]['removed'] = []
else:
loopback = "nothing"
diffdict[loopback] = {}
diffdict[loopback]['added'] = []
diffdict[loopback]['removed'] = []
elif re.search("^\+{1}", those):
diffdict[loopback]['added'].append(those)
elif re.search("---", those):
continue
elif re.search("^\-{1}", those):
diffdict[loopback]['removed'].append(those)
else:
continue
if 'nothing' in diffdict:
del diffdict['nothing']
if os.path.exists('report.txt'):
os.remove('report.txt')
report = open('report.txt', 'a')
for elements in diffdict:
report.write("----------------------------------------------\n")
report.write("These are the changes for device %s\n" % elements)
report.write("----------------------------------------------\n\n")
report.write("Added:\n")
for added_el in diffdict[elements]['added']:
report.write(re.sub('^\+', '', added_el))
report.write("\n")
report.write("\n")
report.write("Removed:\n")
for removed_el in diffdict[elements]['removed']:
report.write(re.sub('^\-', '', removed_el))
report.write("\n")
report.write("----------------------------------------------\n\n")
report.close()
reportread = open('report.txt', 'rb')
errorread = open('errors.txt', 'rb')
msg = MIMEText("Errors Seen: \n\n %s \n\n %s" % (errorread.read(), reportread.read()))
reportread.close()
msg['Subject'] = "Network config backup test"
msg['From'] = emailfrom
msg['To'] = emailto
s = smtplib.SMTP('localhost')
s.sendmail(emailfrom, [emailto], msg.as_string())
s.quit()
if os.path.exists('report.txt'):
os.remove('report.txt')