1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-06-17 00:07:37 +02:00

Merge pull request #107 from rasheed-rd/add-dir-parser

Add windows dir command parser
This commit is contained in:
Kelly Brazil
2021-04-02 11:14:26 -07:00
committed by GitHub
20 changed files with 917 additions and 0 deletions

View File

@ -17,6 +17,7 @@ pydocmd simple jc.parsers.csv+ > ../docs/parsers/csv.md
pydocmd simple jc.parsers.date+ > ../docs/parsers/date.md
pydocmd simple jc.parsers.df+ > ../docs/parsers/df.md
pydocmd simple jc.parsers.dig+ > ../docs/parsers/dig.md
pydocmd simple jc.parsers.dir+ > ../docs/parsers/dir.md
pydocmd simple jc.parsers.dmidecode+ > ../docs/parsers/dmidecode.md
pydocmd simple jc.parsers.dpkg_l+ > ../docs/parsers/dpkg_l.md
pydocmd simple jc.parsers.du+ > ../docs/parsers/du.md

290
docs/parsers/dir.md Normal file
View File

@ -0,0 +1,290 @@
# jc.parsers.dir
jc - JSON CLI output utility `dir` command output parser
Options supported:
- `/T timefield`
- `/O sortorder`
- `/C, /-C`
Usage (cli):
$ dir | jc --dir -p -m
or
$ jc -p -m dir
Usage (module):
import jc.parsers.dir
result = jc.parsers.dir.parse(dir_command_output)
Compatibility:
'win32'
Examples:
$ dir | jc --dir -p -m
{
"C:\Program Files\Internet Explorer": [
{
"date": "03/24/2021",
"time": "03:15 PM",
"dir": true,
"size": null,
"filename": "."
},
{
"date": "03/24/2021",
"time": "03:15 PM",
"dir": true,
"size": null,
"filename": ".."
},
{
"date": "12/07/2019",
"time": "02:49 AM",
"dir": true,
"size": null,
"filename": "en-US"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": 54784,
"filename": "ExtExport.exe"
},
{
"date": "03/24/2021",
"time": "03:15 PM",
"dir": false,
"size": 0,
"filename": "file name.txt"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": 54784,
"filename": "hmmapi.dll"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": 515072,
"filename": "iediagcmd.exe"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": 504832,
"filename": "ieinstal.exe"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": 224768,
"filename": "ielowutil.exe"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": 421888,
"filename": "IEShims.dll"
},
{
"date": "12/06/2019",
"time": "02:47 PM",
"dir": false,
"size": 819136,
"filename": "iexplore.exe"
},
{
"date": "12/07/2019",
"time": "02:14 AM",
"dir": true,
"size": null,
"filename": "images"
},
{
"date": "12/07/2019",
"time": "02:14 AM",
"dir": true,
"size": null,
"filename": "SIGNUP"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": 48536,
"filename": "sqmapi.dll"
}
]
}
$ dir | jc --dir -p -m -r
{
"C:\Program Files\Internet Explorer": [
{
"date": "03/24/2021",
"time": "03:15 PM",
"dir": true,
"size": null,
"filename": "."
},
{
"date": "03/24/2021",
"time": "03:15 PM",
"dir": true,
"size": null,
"filename": ".."
},
{
"date": "12/07/2019",
"time": "02:49 AM",
"dir": true,
"size": null,
"filename": "en-US"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": "54,784",
"filename": "ExtExport.exe"
},
{
"date": "03/24/2021",
"time": "03:15 PM",
"dir": false,
"size": "0",
"filename": "file name.txt"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": "54,784",
"filename": "hmmapi.dll"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": "515,072",
"filename": "iediagcmd.exe"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": "504,832",
"filename": "ieinstal.exe"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": "224,768",
"filename": "ielowutil.exe"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": "421,888",
"filename": "IEShims.dll"
},
{
"date": "12/06/2019",
"time": "02:47 PM",
"dir": false,
"size": "819,136",
"filename": "iexplore.exe"
},
{
"date": "12/07/2019",
"time": "02:14 AM",
"dir": true,
"size": null,
"filename": "images"
},
{
"date": "12/07/2019",
"time": "02:14 AM",
"dir": true,
"size": null,
"filename": "SIGNUP"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": "48,536",
"filename": "sqmapi.dll"
}
]
}
## info
```python
info()
```
## process
```python
process(proc_data)
```
Final processing to conform to the schema.
Parameters:
proc_data: (Dictionary of Lists) raw structured data to process
Returns:
List of Dictionaries. Structured data with the following schema:
{"parent_dir":
[
{
"date": string,
"time": string,
"dir": string,
"size": integer,
"filename: string
}
]
}
## parse
```python
parse(data, raw=False, quiet=False)
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.

View File

@ -50,6 +50,7 @@ parsers = [
'date',
'df',
'dig',
'dir',
'dmidecode',
'dpkg-l',
'du',

342
jc/parsers/dir.py Normal file
View File

@ -0,0 +1,342 @@
"""jc - JSON CLI output utility `dir` command output parser
Options supported:
- `/T timefield`
- `/O sortorder`
- `/C, /-C`
- `/S`
Usage (cli):
$ dir | jc --dir -p -m
or
$ jc -p -m dir
Usage (module):
import jc.parsers.dir
result = jc.parsers.dir.parse(dir_command_output)
Compatibility:
'win32'
Examples:
$ dir | jc --dir -p -m
{
"C:\\Program Files\\Internet Explorer": [
{
"date": "03/24/2021",
"time": "03:15 PM",
"dir": true,
"size": null,
"filename": "."
},
{
"date": "03/24/2021",
"time": "03:15 PM",
"dir": true,
"size": null,
"filename": ".."
},
{
"date": "12/07/2019",
"time": "02:49 AM",
"dir": true,
"size": null,
"filename": "en-US"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": 54784,
"filename": "ExtExport.exe"
},
{
"date": "03/24/2021",
"time": "03:15 PM",
"dir": false,
"size": 0,
"filename": "file name.txt"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": 54784,
"filename": "hmmapi.dll"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": 515072,
"filename": "iediagcmd.exe"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": 504832,
"filename": "ieinstal.exe"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": 224768,
"filename": "ielowutil.exe"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": 421888,
"filename": "IEShims.dll"
},
{
"date": "12/06/2019",
"time": "02:47 PM",
"dir": false,
"size": 819136,
"filename": "iexplore.exe"
},
{
"date": "12/07/2019",
"time": "02:14 AM",
"dir": true,
"size": null,
"filename": "images"
},
{
"date": "12/07/2019",
"time": "02:14 AM",
"dir": true,
"size": null,
"filename": "SIGNUP"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": 48536,
"filename": "sqmapi.dll"
}
]
}
$ dir | jc --dir -p -m -r
{
"C:\\Program Files\\Internet Explorer": [
{
"date": "03/24/2021",
"time": "03:15 PM",
"dir": true,
"size": null,
"filename": "."
},
{
"date": "03/24/2021",
"time": "03:15 PM",
"dir": true,
"size": null,
"filename": ".."
},
{
"date": "12/07/2019",
"time": "02:49 AM",
"dir": true,
"size": null,
"filename": "en-US"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": "54,784",
"filename": "ExtExport.exe"
},
{
"date": "03/24/2021",
"time": "03:15 PM",
"dir": false,
"size": "0",
"filename": "file name.txt"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": "54,784",
"filename": "hmmapi.dll"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": "515,072",
"filename": "iediagcmd.exe"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": "504,832",
"filename": "ieinstal.exe"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": "224,768",
"filename": "ielowutil.exe"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": "421,888",
"filename": "IEShims.dll"
},
{
"date": "12/06/2019",
"time": "02:47 PM",
"dir": false,
"size": "819,136",
"filename": "iexplore.exe"
},
{
"date": "12/07/2019",
"time": "02:14 AM",
"dir": true,
"size": null,
"filename": "images"
},
{
"date": "12/07/2019",
"time": "02:14 AM",
"dir": true,
"size": null,
"filename": "SIGNUP"
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": "48,536",
"filename": "sqmapi.dll"
}
]
}
"""
import re
import jc.utils
class info():
version = '1.0'
description = 'dir command parser'
author = 'Rasheed Elsaleh'
author_email = 'rasheed@rebelliondefense.com'
# compatible options: win32
compatible = ['win32']
magic_commands = ['dir']
__version__ = info.version
def process(proc_data):
"""
Final processing to conform to the schema.
Parameters:
proc_data: (Dictionary of Lists) raw structured data to process
Returns:
List of Dictionaries. Structured data with the following schema:
{"parent_dir":
[
{
"date": string,
"time": string,
"dir": string,
"size": integer,
"filename: string
}
]
}
"""
for _, dir_list in proc_data.items():
for entry in dir_list:
int_list = ["size"]
for key in int_list:
if entry.get(key):
try:
key_int = int(entry[key].replace(",", ""))
except ValueError:
entry[key] = None
else:
entry[key] = key_int
return proc_data
def parse(data, raw=False, quiet=False):
"""
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) output preprocessed JSON if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
"""
if not quiet:
jc.utils.compatibility(__name__, info.compatible)
raw_output = {}
if jc.utils.has_data(data):
for line in data.splitlines():
if line.startswith(" Directory of"):
parent_dir = line.lstrip(" Directory of ")
continue
# skip lines that don't start with a date
if not re.match(r'^\d{2}/\d{2}/\d{4}', line):
continue
raw_output.setdefault(parent_dir, [])
output_line = {}
parsed_line = line.split()
output_line["date"] = parsed_line[0]
output_line["time"] = " ".join(parsed_line[1:3])
output_line.setdefault("dir", False)
output_line.setdefault("size", None)
if parsed_line[3] == "<DIR>":
output_line["dir"] = True
else:
output_line["size"] = parsed_line[3]
output_line["filename"] = " ".join(parsed_line[4:])
raw_output[parent_dir].append(output_line)
if raw:
return raw_output
else:
return process(raw_output)

1
tests/fixtures/windows-10/dir-C.json vendored Normal file
View File

@ -0,0 +1 @@
{"C:\\Program Files\\Internet Explorer": [{"date": "03/24/2021", "time": "03:15 PM", "dir": true, "size": null, "filename": "."}, {"date": "03/24/2021", "time": "03:15 PM", "dir": true, "size": null, "filename": ".."}, {"date": "12/07/2019", "time": "02:49 AM", "dir": true, "size": null, "filename": "en-US"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 54784, "filename": "ExtExport.exe"}, {"date": "03/24/2021", "time": "03:15 PM", "dir": false, "size": 0, "filename": "file name.txt"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 54784, "filename": "hmmapi.dll"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 515072, "filename": "iediagcmd.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 504832, "filename": "ieinstal.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 224768, "filename": "ielowutil.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 421888, "filename": "IEShims.dll"}, {"date": "12/06/2019", "time": "02:47 PM", "dir": false, "size": 819136, "filename": "iexplore.exe"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "images"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "SIGNUP"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 48536, "filename": "sqmapi.dll"}]}

21
tests/fixtures/windows-10/dir-C.out vendored Normal file
View File

@ -0,0 +1,21 @@
Volume in drive C has no label.
Volume Serial Number is 246B-3B5A
Directory of C:\Program Files\Internet Explorer
03/24/2021 03:15 PM <DIR> .
03/24/2021 03:15 PM <DIR> ..
12/07/2019 02:49 AM <DIR> en-US
12/07/2019 02:09 AM 54784 ExtExport.exe
03/24/2021 03:15 PM 0 file name.txt
12/07/2019 02:09 AM 54784 hmmapi.dll
12/07/2019 02:09 AM 515072 iediagcmd.exe
12/07/2019 02:09 AM 504832 ieinstal.exe
12/07/2019 02:09 AM 224768 ielowutil.exe
12/07/2019 02:09 AM 421888 IEShims.dll
12/06/2019 02:47 PM 819136 iexplore.exe
12/07/2019 02:14 AM <DIR> images
12/07/2019 02:14 AM <DIR> SIGNUP
12/07/2019 02:09 AM 48536 sqmapi.dll
9 File(s) 2643800 bytes
5 Dir(s) 36206153728 bytes free

View File

@ -0,0 +1 @@
{"C:\\Program Files\\Internet Explorer": [{"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 54784, "filename": "hmmapi.dll"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 224768, "filename": "ielowutil.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 54784, "filename": "ExtExport.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 515072, "filename": "iediagcmd.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 421888, "filename": "IEShims.dll"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 504832, "filename": "ieinstal.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 48536, "filename": "sqmapi.dll"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "images"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": ".."}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "SIGNUP"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "."}, {"date": "12/07/2019", "time": "02:49 AM", "dir": true, "size": null, "filename": "en-US"}, {"date": "12/07/2019", "time": "02:49 AM", "dir": false, "size": 819136, "filename": "iexplore.exe"}, {"date": "03/24/2021", "time": "03:15 PM", "dir": false, "size": 0, "filename": "file name.txt"}]}

21
tests/fixtures/windows-10/dir-ODTC.out vendored Normal file
View File

@ -0,0 +1,21 @@
Volume in drive C has no label.
Volume Serial Number is 246B-3B5A
Directory of C:\Program Files\Internet Explorer
12/07/2019 02:09 AM 54,784 hmmapi.dll
12/07/2019 02:09 AM 224,768 ielowutil.exe
12/07/2019 02:09 AM 54,784 ExtExport.exe
12/07/2019 02:09 AM 515,072 iediagcmd.exe
12/07/2019 02:09 AM 421,888 IEShims.dll
12/07/2019 02:09 AM 504,832 ieinstal.exe
12/07/2019 02:09 AM 48,536 sqmapi.dll
12/07/2019 02:14 AM <DIR> images
12/07/2019 02:14 AM <DIR> ..
12/07/2019 02:14 AM <DIR> SIGNUP
12/07/2019 02:14 AM <DIR> .
12/07/2019 02:49 AM <DIR> en-US
12/07/2019 02:49 AM 819,136 iexplore.exe
03/24/2021 03:15 PM 0 file name.txt
9 File(s) 2,643,800 bytes
5 Dir(s) 35,231,817,728 bytes free

1
tests/fixtures/windows-10/dir-S.json vendored Normal file
View File

@ -0,0 +1 @@
{"C:\\Program Files\\Internet Explorer": [{"date": "03/24/2021", "time": "03:15 PM", "dir": true, "size": null, "filename": "."}, {"date": "03/24/2021", "time": "03:15 PM", "dir": true, "size": null, "filename": ".."}, {"date": "12/07/2019", "time": "02:49 AM", "dir": true, "size": null, "filename": "en-US"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 54784, "filename": "ExtExport.exe"}, {"date": "03/24/2021", "time": "03:15 PM", "dir": false, "size": 0, "filename": "file name.txt"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 54784, "filename": "hmmapi.dll"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 515072, "filename": "iediagcmd.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 504832, "filename": "ieinstal.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 224768, "filename": "ielowutil.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 421888, "filename": "IEShims.dll"}, {"date": "12/06/2019", "time": "02:47 PM", "dir": false, "size": 819136, "filename": "iexplore.exe"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "images"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "SIGNUP"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 48536, "filename": "sqmapi.dll"}], "C:\\Program Files\\Internet Explorer\\en-US": [{"date": "12/07/2019", "time": "02:49 AM", "dir": true, "size": null, "filename": "."}, {"date": "12/07/2019", "time": "02:49 AM", "dir": true, "size": null, "filename": ".."}, {"date": "12/07/2019", "time": "02:48 AM", "dir": false, "size": 2560, "filename": "hmmapi.dll.mui"}, {"date": "12/07/2019", "time": "02:48 AM", "dir": false, "size": 2560, "filename": "ieinstal.exe.mui"}, {"date": "12/07/2019", "time": "02:48 AM", "dir": false, "size": 5632, "filename": "iexplore.exe.mui"}], "C:\\Program Files\\Internet Explorer\\images": [{"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "."}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": ".."}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 5430, "filename": "bing.ico"}], "C:\\Program Files\\Internet Explorer\\SIGNUP": [{"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "."}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": ".."}, {"date": "12/07/2019", "time": "02:12 AM", "dir": false, "size": 452, "filename": "install.ins"}]}

47
tests/fixtures/windows-10/dir-S.out vendored Normal file
View File

@ -0,0 +1,47 @@
Volume in drive C has no label.
Volume Serial Number is 246B-3B5A
Directory of C:\Program Files\Internet Explorer
03/24/2021 03:15 PM <DIR> .
03/24/2021 03:15 PM <DIR> ..
12/07/2019 02:49 AM <DIR> en-US
12/07/2019 02:09 AM 54,784 ExtExport.exe
03/24/2021 03:15 PM 0 file name.txt
12/07/2019 02:09 AM 54,784 hmmapi.dll
12/07/2019 02:09 AM 515,072 iediagcmd.exe
12/07/2019 02:09 AM 504,832 ieinstal.exe
12/07/2019 02:09 AM 224,768 ielowutil.exe
12/07/2019 02:09 AM 421,888 IEShims.dll
12/06/2019 02:47 PM 819,136 iexplore.exe
12/07/2019 02:14 AM <DIR> images
12/07/2019 02:14 AM <DIR> SIGNUP
12/07/2019 02:09 AM 48,536 sqmapi.dll
9 File(s) 2,643,800 bytes
Directory of C:\Program Files\Internet Explorer\en-US
12/07/2019 02:49 AM <DIR> .
12/07/2019 02:49 AM <DIR> ..
12/07/2019 02:48 AM 2,560 hmmapi.dll.mui
12/07/2019 02:48 AM 2,560 ieinstal.exe.mui
12/07/2019 02:48 AM 5,632 iexplore.exe.mui
3 File(s) 10,752 bytes
Directory of C:\Program Files\Internet Explorer\images
12/07/2019 02:14 AM <DIR> .
12/07/2019 02:14 AM <DIR> ..
12/07/2019 02:09 AM 5,430 bing.ico
1 File(s) 5,430 bytes
Directory of C:\Program Files\Internet Explorer\SIGNUP
12/07/2019 02:14 AM <DIR> .
12/07/2019 02:14 AM <DIR> ..
12/07/2019 02:12 AM 452 install.ins
1 File(s) 452 bytes
Total Files Listed:
14 File(s) 2,660,434 bytes
11 Dir(s) 33,300,922,368 bytes free

View File

@ -0,0 +1 @@
{"C:\\Users\\Yoda\\Desktop\\jc\\docs": [{"date": "03/25/2021", "time": "02:36 PM", "dir": true, "size": null, "filename": "."}, {"date": "03/25/2021", "time": "02:36 PM", "dir": true, "size": null, "filename": ".."}, {"date": "03/25/2021", "time": "02:38 PM", "dir": true, "size": null, "filename": "parsers"}, {"date": "03/25/2021", "time": "02:36 PM", "dir": false, "size": 2713, "filename": "readme.md"}, {"date": "03/25/2021", "time": "02:36 PM", "dir": false, "size": 1338, "filename": "utils.md"}], "C:\\Users\\Yoda\\Desktop\\jc\\man": [{"date": "03/25/2021", "time": "02:36 PM", "dir": true, "size": null, "filename": "."}, {"date": "03/25/2021", "time": "02:36 PM", "dir": true, "size": null, "filename": ".."}, {"date": "03/25/2021", "time": "02:36 PM", "dir": false, "size": 4300, "filename": "jc.1"}]}

19
tests/fixtures/windows-10/dir-dirs.out vendored Normal file
View File

@ -0,0 +1,19 @@
Volume in drive C has no label.
Volume Serial Number is 246B-3B5A
Directory of C:\Users\Yoda\Desktop\jc\docs
03/25/2021 02:36 PM <DIR> .
03/25/2021 02:36 PM <DIR> ..
03/25/2021 02:38 PM <DIR> parsers
03/25/2021 02:36 PM 2,713 readme.md
03/25/2021 02:36 PM 1,338 utils.md
2 File(s) 4,051 bytes
Directory of C:\Users\Yoda\Desktop\jc\man
03/25/2021 02:36 PM <DIR> .
03/25/2021 02:36 PM <DIR> ..
03/25/2021 02:36 PM 4,300 jc.1
1 File(s) 4,300 bytes
2 Dir(s) 33,349,226,496 bytes free

View File

@ -0,0 +1 @@
{"C:\\Users\\Yoda\\Desktop\\jc": [{"date": "03/25/2021", "time": "02:38 PM", "dir": false, "size": 4253, "filename": "docgen.sh"}, {"date": "03/25/2021", "time": "02:36 PM", "dir": false, "size": 1088, "filename": "LICENSE.md"}, {"date": "03/25/2021", "time": "02:36 PM", "dir": false, "size": 27063, "filename": "README.md"}]}

16
tests/fixtures/windows-10/dir-files.out vendored Normal file
View File

@ -0,0 +1,16 @@
Volume in drive C has no label.
Volume Serial Number is 246B-3B5A
Directory of C:\Users\Yoda\Desktop\jc
03/25/2021 02:38 PM 4,253 docgen.sh
Directory of C:\Users\Yoda\Desktop\jc
03/25/2021 02:36 PM 1,088 LICENSE.md
Directory of C:\Users\Yoda\Desktop\jc
03/25/2021 02:36 PM 27,063 README.md
3 File(s) 32,404 bytes
0 Dir(s) 33,349,652,480 bytes free

View File

@ -0,0 +1 @@
{"C:\\Users\\Yoda\\Desktop\\jc": [{"date": "03/25/2021", "time": "02:38 PM", "dir": false, "size": 4253, "filename": "docgen.sh"}, {"date": "03/25/2021", "time": "02:38 PM", "dir": false, "size": 58995, "filename": "EXAMPLES.md"}], "C:\\Users\\Yoda\\Desktop\\jc\\docs": [{"date": "03/25/2021", "time": "02:36 PM", "dir": true, "size": null, "filename": "."}, {"date": "03/25/2021", "time": "02:36 PM", "dir": true, "size": null, "filename": ".."}, {"date": "03/25/2021", "time": "02:38 PM", "dir": true, "size": null, "filename": "parsers"}, {"date": "03/25/2021", "time": "02:36 PM", "dir": false, "size": 2713, "filename": "readme.md"}, {"date": "03/25/2021", "time": "02:36 PM", "dir": false, "size": 1338, "filename": "utils.md"}]}

22
tests/fixtures/windows-10/dir-mix.out vendored Normal file
View File

@ -0,0 +1,22 @@
Volume in drive C has no label.
Volume Serial Number is 246B-3B5A
Directory of C:\Users\Yoda\Desktop\jc
03/25/2021 02:38 PM 4,253 docgen.sh
1 File(s) 4,253 bytes
Directory of C:\Users\Yoda\Desktop\jc\docs
03/25/2021 02:36 PM <DIR> .
03/25/2021 02:36 PM <DIR> ..
03/25/2021 02:38 PM <DIR> parsers
03/25/2021 02:36 PM 2,713 readme.md
03/25/2021 02:36 PM 1,338 utils.md
2 File(s) 4,051 bytes
Directory of C:\Users\Yoda\Desktop\jc
03/25/2021 02:38 PM 58,995 EXAMPLES.md
1 File(s) 58,995 bytes
0 Dir(s) 34,115,264,512 bytes free

View File

@ -0,0 +1 @@
{"C:\\Program Files\\Internet Explorer": [{"date": "03/24/2021", "time": "03:15 PM", "dir": true, "size": null, "filename": "."}, {"date": "03/24/2021", "time": "03:15 PM", "dir": true, "size": null, "filename": ".."}, {"date": "12/07/2019", "time": "02:49 AM", "dir": true, "size": null, "filename": "en-US"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": "54,784", "filename": "ExtExport.exe"}, {"date": "03/24/2021", "time": "03:15 PM", "dir": false, "size": "0", "filename": "file name.txt"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": "54,784", "filename": "hmmapi.dll"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": "515,072", "filename": "iediagcmd.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": "504,832", "filename": "ieinstal.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": "224,768", "filename": "ielowutil.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": "421,888", "filename": "IEShims.dll"}, {"date": "12/06/2019", "time": "02:47 PM", "dir": false, "size": "819,136", "filename": "iexplore.exe"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "images"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "SIGNUP"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": "48,536", "filename": "sqmapi.dll"}]}

1
tests/fixtures/windows-10/dir.json vendored Normal file
View File

@ -0,0 +1 @@
{"C:\\Program Files\\Internet Explorer": [{"date": "03/24/2021", "time": "03:15 PM", "dir": true, "size": null, "filename": "."}, {"date": "03/24/2021", "time": "03:15 PM", "dir": true, "size": null, "filename": ".."}, {"date": "12/07/2019", "time": "02:49 AM", "dir": true, "size": null, "filename": "en-US"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 54784, "filename": "ExtExport.exe"}, {"date": "03/24/2021", "time": "03:15 PM", "dir": false, "size": 0, "filename": "file name.txt"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 54784, "filename": "hmmapi.dll"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 515072, "filename": "iediagcmd.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 504832, "filename": "ieinstal.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 224768, "filename": "ielowutil.exe"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 421888, "filename": "IEShims.dll"}, {"date": "12/06/2019", "time": "02:47 PM", "dir": false, "size": 819136, "filename": "iexplore.exe"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "images"}, {"date": "12/07/2019", "time": "02:14 AM", "dir": true, "size": null, "filename": "SIGNUP"}, {"date": "12/07/2019", "time": "02:09 AM", "dir": false, "size": 48536, "filename": "sqmapi.dll"}]}

21
tests/fixtures/windows-10/dir.out vendored Normal file
View File

@ -0,0 +1,21 @@
Volume in drive C has no label.
Volume Serial Number is 246B-3B5A
Directory of C:\Program Files\Internet Explorer
03/24/2021 03:15 PM <DIR> .
03/24/2021 03:15 PM <DIR> ..
12/07/2019 02:49 AM <DIR> en-US
12/07/2019 02:09 AM 54,784 ExtExport.exe
03/24/2021 03:15 PM 0 file name.txt
12/07/2019 02:09 AM 54,784 hmmapi.dll
12/07/2019 02:09 AM 515,072 iediagcmd.exe
12/07/2019 02:09 AM 504,832 ieinstal.exe
12/07/2019 02:09 AM 224,768 ielowutil.exe
12/07/2019 02:09 AM 421,888 IEShims.dll
12/06/2019 02:47 PM 819,136 iexplore.exe
12/07/2019 02:14 AM <DIR> images
12/07/2019 02:14 AM <DIR> SIGNUP
12/07/2019 02:09 AM 48,536 sqmapi.dll
9 File(s) 2,643,800 bytes
5 Dir(s) 36,207,603,712 bytes free

108
tests/test_dir.py Normal file
View File

@ -0,0 +1,108 @@
import os
import json
import unittest
import jc.parsers.dir
THIS_DIR = os.path.dirname(os.path.abspath(__file__))
class MyTests(unittest.TestCase):
def setUp(self):
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir.out'),
'r', encoding='utf-8') as f:
self.windows_10_dir = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir.json'),
'r', encoding='utf-8') as f:
self.windows_10_dir_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-raw.json'),
'r', encoding='utf-8') as f:
self.windows_10_dir_raw_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-ODTC.out'),
'r', encoding='utf-8') as f:
self.windows_10_dir_ODTC = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-ODTC.json'),
'r', encoding='utf-8') as f:
self.windows_10_dir_ODTC_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-C.out'),
'r', encoding='utf-8') as f:
self.windows_10_dir_C = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-mix.out'),
'r', encoding='utf-8') as f:
self.windows_10_dir_mix = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-mix.json'),
'r', encoding='utf-8') as f:
self.windows_10_dir_mix_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-files.out'),
'r', encoding='utf-8') as f:
self.windows_10_dir_files= f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-files.json'),
'r', encoding='utf-8') as f:
self.windows_10_dir_files_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-dirs.out'),
'r', encoding='utf-8') as f:
self.windows_10_dir_dirs= f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-dirs.json'),
'r', encoding='utf-8') as f:
self.windows_10_dir_dirs_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-S.out'),
'r', encoding='utf-8') as f:
self.windows_10_dir_S= f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-S.json'),
'r', encoding='utf-8') as f:
self.windows_10_dir_S_json = json.loads(f.read())
def test_dir_error(self):
self.assertEqual(jc.parsers.dir.parse("Access is denied.", quiet=True), {})
def test_dir_empty(self):
self.assertEqual(jc.parsers.dir.parse("", quiet=True), {})
def test_dir_windows_10(self):
self.assertEqual(jc.parsers.dir.parse(self.windows_10_dir, quiet=True),
self.windows_10_dir_json)
def test_dir_windows_10_raw(self):
self.assertEqual(jc.parsers.dir.parse(self.windows_10_dir, raw=True, quiet=True),
self.windows_10_dir_raw_json)
def test_dir_windows_10_ODTC(self):
self.assertEqual(jc.parsers.dir.parse(self.windows_10_dir_ODTC, quiet=True),
self.windows_10_dir_ODTC_json)
def test_dir_windows_10_C(self):
self.assertEqual(jc.parsers.dir.parse(self.windows_10_dir_C, quiet=True),
self.windows_10_dir_json)
def test_dir_windows_10_mix(self):
self.assertEqual(jc.parsers.dir.parse(self.windows_10_dir_mix, quiet=True),
self.windows_10_dir_mix_json)
def test_dir_windows_10_files(self):
self.assertEqual(jc.parsers.dir.parse(self.windows_10_dir_files, quiet=True),
self.windows_10_dir_files_json)
def test_dir_windows_10_dirs(self):
self.assertEqual(jc.parsers.dir.parse(self.windows_10_dir_dirs, quiet=True),
self.windows_10_dir_dirs_json)
def test_dir_windows_10_S(self):
self.assertEqual(jc.parsers.dir.parse(self.windows_10_dir_S, quiet=True),
self.windows_10_dir_S_json)
if __name__ == '__main__':
unittest.main()