mirror of
https://github.com/kellyjonbrazil/jc.git
synced 2025-07-15 01:24:29 +02:00
add integer conversions
This commit is contained in:
@ -1,6 +1,6 @@
|
|||||||
"""jc - JSON Convert Version string output parser
|
"""jc - JSON Convert Version string output parser
|
||||||
|
|
||||||
Best effort attempt to parse various styles of version numbers. This parser
|
Best-effort attempt to parse various styles of version numbers. This parser
|
||||||
is based off of the version parser included in the CPython distutils
|
is based off of the version parser included in the CPython distutils
|
||||||
libary.
|
libary.
|
||||||
|
|
||||||
@ -25,17 +25,31 @@ Usage (module):
|
|||||||
|
|
||||||
Schema:
|
Schema:
|
||||||
|
|
||||||
[
|
|
||||||
{
|
{
|
||||||
"version": string,
|
"major": integer,
|
||||||
"bar": boolean,
|
"minor": integer,
|
||||||
"baz": integer
|
"patch": integer,
|
||||||
}
|
"prerelease": string,
|
||||||
|
"prerelease_num": integer,
|
||||||
|
"components": [
|
||||||
|
integer/string,
|
||||||
]
|
]
|
||||||
|
"strict": boolean
|
||||||
|
}
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
$ echo 1.2a1 | jc --ver -p
|
$ echo 1.2a1 | jc --ver -p
|
||||||
|
{
|
||||||
|
"major": 1,
|
||||||
|
"minor": 2,
|
||||||
|
"patch": 0,
|
||||||
|
"prerelease": "a",
|
||||||
|
"prerelease_num": 1,
|
||||||
|
"strict": true
|
||||||
|
}
|
||||||
|
|
||||||
|
$ echo 1.2a1 | jc --ver -p -r
|
||||||
{
|
{
|
||||||
"major": "1",
|
"major": "1",
|
||||||
"minor": "2",
|
"minor": "2",
|
||||||
@ -46,6 +60,17 @@ Examples:
|
|||||||
}
|
}
|
||||||
|
|
||||||
$ echo 1.2beta3 | jc --ver -p
|
$ echo 1.2beta3 | jc --ver -p
|
||||||
|
{
|
||||||
|
"components": [
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
"beta",
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"strict": false
|
||||||
|
}
|
||||||
|
|
||||||
|
$ echo 1.2beta3 | jc --ver -p -r
|
||||||
{
|
{
|
||||||
"components": [
|
"components": [
|
||||||
"1",
|
"1",
|
||||||
@ -57,7 +82,7 @@ Examples:
|
|||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
import re
|
import re
|
||||||
from typing import List, Dict
|
from typing import Dict
|
||||||
from jc.jc_types import JSONDictType
|
from jc.jc_types import JSONDictType
|
||||||
import jc.utils
|
import jc.utils
|
||||||
|
|
||||||
@ -68,7 +93,7 @@ class info():
|
|||||||
description = 'Version string parser'
|
description = 'Version string parser'
|
||||||
author = 'Kelly Brazil'
|
author = 'Kelly Brazil'
|
||||||
author_email = 'kellyjonbrazil@gmail.com'
|
author_email = 'kellyjonbrazil@gmail.com'
|
||||||
details = 'Based on distutils/version.py from CPython 3.9.5'
|
details = 'Based on distutils/version.py from CPython 3.9.5.'
|
||||||
compatible = ['linux', 'darwin', 'cygwin', 'win32', 'aix', 'freebsd']
|
compatible = ['linux', 'darwin', 'cygwin', 'win32', 'aix', 'freebsd']
|
||||||
tags = ['generic', 'string']
|
tags = ['generic', 'string']
|
||||||
|
|
||||||
@ -88,6 +113,22 @@ def _process(proc_data: JSONDictType) -> JSONDictType:
|
|||||||
|
|
||||||
List of Dictionaries. Structured to conform to the schema.
|
List of Dictionaries. Structured to conform to the schema.
|
||||||
"""
|
"""
|
||||||
|
int_list = {'major', 'minor', 'patch', 'prerelease', 'prerelease_num'}
|
||||||
|
|
||||||
|
for k, v in proc_data.items():
|
||||||
|
if k in int_list:
|
||||||
|
try:
|
||||||
|
proc_data[k] = int(v)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
if 'components' in proc_data:
|
||||||
|
for i, obj in enumerate(proc_data['components']):
|
||||||
|
try:
|
||||||
|
proc_data['components'][i] = int(obj)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
return proc_data
|
return proc_data
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user