scripts=['tools/repo-diff',],
packages=['snapdiff',],
include_package_data=True,
- install_requires=['Jinja2>=2.6', 'requests>=2.0.1'],
+ install_requires=['Jinja2>=2.6', 'requests>=2.0.1',
+ 'beautifulsoup4>=4.3.2'],
zip_safe=False,
)
--- /dev/null
+from bs4 import BeautifulSoup
+import difflib
+import glob
+import os
+import requests
+from StringIO import StringIO
+
+
+def _get_ks(url):
+ if url.startswith('http') or url.startswith('https'):
+ response = requests.get(url)
+ bs = BeautifulSoup(response.content)
+ tags = bs.findAll('a')
+ for tag in tags:
+ if '.ks' in tag.get('href'):
+ ks = tag.get('href') # get ks
+ ks_response = requests.get(os.path.join(url, ks))
+ if ks_response.status_code == 200:
+ # use StringIO to keep wrapped lines
+ return ks, StringIO(ks_response.content).readlines()
+ break
+ else:
+ kss = glob.glob(os.path.join(url, '*.ks'))
+ if kss:
+ ks = kss[0]
+ try:
+ with open(ks, 'rb') as _ks:
+ return ks, _ks.readlines()
+ except IOError, err:
+ print err
+
+ return '', ''
+
+def ks_diff(old, new):
+ ks_old, ks_new = _get_ks(old), _get_ks(new)
+
+ for line in difflib.unified_diff(ks_old[1], ks_new[1], fromfile=ks_old[0],
+ tofile=ks_new[0]):
+ yield line
+