Commit db842e43a04fb3473775158377effc3cf650fff5

Authored by decalage2
1 parent b30cbbff

oletimes: added main entry point for setup.py - issue #69

Showing 2 changed files with 37 additions and 27 deletions
oletools/oletimes.py
@@ -47,6 +47,7 @@ http://www.decalage.info/python/oletools @@ -47,6 +47,7 @@ http://www.decalage.info/python/oletools
47 # - improved usage display 47 # - improved usage display
48 # 2014-11-30 v0.03 PL: - improved output with prettytable 48 # 2014-11-30 v0.03 PL: - improved output with prettytable
49 # 2016-07-20 v0.50 SL: - added Python 3 support 49 # 2016-07-20 v0.50 SL: - added Python 3 support
  50 +# 2016-09-05 PL: - added main entry point for setup.py
50 51
51 __version__ = '0.50' 52 __version__ = '0.50'
52 53
@@ -64,37 +65,44 @@ import thirdparty.olefile as olefile @@ -64,37 +65,44 @@ import thirdparty.olefile as olefile
64 from thirdparty.prettytable import prettytable 65 from thirdparty.prettytable import prettytable
65 66
66 67
67 -#=== MAIN ================================================================= 68 +# === MAIN ===================================================================
68 69
69 -try:  
70 - ole = olefile.OleFileIO(sys.argv[1])  
71 -except IndexError:  
72 - sys.exit(__doc__) 70 +def main():
  71 + # print banner with version
  72 + print('oletimes %s - http://decalage.info/python/oletools' % __version__)
73 73
74 -def dt2str (dt):  
75 - """  
76 - Convert a datetime object to a string for display, without microseconds 74 + try:
  75 + ole = olefile.OleFileIO(sys.argv[1])
  76 + except IndexError:
  77 + sys.exit(__doc__)
77 78
78 - :param dt: datetime.datetime object, or None  
79 - :return: str, or None  
80 - """  
81 - if dt is None:  
82 - return None  
83 - dt = dt.replace(microsecond = 0)  
84 - return str(dt) 79 + def dt2str (dt):
  80 + """
  81 + Convert a datetime object to a string for display, without microseconds
85 82
86 -t = prettytable.PrettyTable(['Stream/Storage name', 'Modification Time', 'Creation Time'])  
87 -t.align = 'l'  
88 -t.max_width = 26  
89 -#t.border = False 83 + :param dt: datetime.datetime object, or None
  84 + :return: str, or None
  85 + """
  86 + if dt is None:
  87 + return None
  88 + dt = dt.replace(microsecond = 0)
  89 + return str(dt)
90 90
91 -#print'- Root mtime=%s ctime=%s' % (ole.root.getmtime(), ole.root.getctime())  
92 -t.add_row(('Root', dt2str(ole.root.getmtime()), dt2str(ole.root.getctime()))) 91 + t = prettytable.PrettyTable(['Stream/Storage name', 'Modification Time', 'Creation Time'])
  92 + t.align = 'l'
  93 + t.max_width = 26
  94 + #t.border = False
93 95
94 -for obj in ole.listdir(streams=True, storages=True):  
95 - #print '- %s: mtime=%s ctime=%s' % (repr('/'.join(obj)), ole.getmtime(obj), ole.getctime(obj))  
96 - t.add_row((repr('/'.join(obj)), dt2str(ole.getmtime(obj)), dt2str(ole.getctime(obj)))) 96 + #print'- Root mtime=%s ctime=%s' % (ole.root.getmtime(), ole.root.getctime())
  97 + t.add_row(('Root', dt2str(ole.root.getmtime()), dt2str(ole.root.getctime())))
97 98
98 -print(t) 99 + for obj in ole.listdir(streams=True, storages=True):
  100 + #print '- %s: mtime=%s ctime=%s' % (repr('/'.join(obj)), ole.getmtime(obj), ole.getctime(obj))
  101 + t.add_row((repr('/'.join(obj)), dt2str(ole.getmtime(obj)), dt2str(ole.getctime(obj))))
99 102
100 -ole.close() 103 + print(t)
  104 +
  105 + ole.close()
  106 +
  107 +if __name__ == '__main__':
  108 + main()
setup.py
@@ -271,7 +271,9 @@ entry_points = { @@ -271,7 +271,9 @@ entry_points = {
271 'oleid=oletools.oleid:main', 271 'oleid=oletools.oleid:main',
272 'oledir=oletools.oledir:main', 272 'oledir=oletools.oledir:main',
273 'olemap=oletools.olemap:main', 273 'olemap=oletools.olemap:main',
274 - 'pyxswf=oletools.pyxswf:main' 274 + 'oletimes=oletools.oletimes:main',
  275 + 'pyxswf=oletools.pyxswf:main',
  276 + 'rtfobj=oletools.rtfobj:main'
275 ], 277 ],
276 } 278 }
277 279