move helper scripts to subfolder

This commit is contained in:
Christopher Engelhard 2020-12-30 11:03:33 +01:00
parent 3f6dac606c
commit e86f6f7f45
2 changed files with 80 additions and 0 deletions

80
utils/get-composer-requires.py Executable file
View File

@ -0,0 +1,80 @@
#!/bin/env python
import os
import json
import re
import subprocess
defaultconstraint = 2
constraintmap = ('any', 'loose', 'strict', 'exact')
def get_requires(name, version, constraint):
version = version.split('.')
if constraint == 0:
requires = 'php-composer(' + name + ')'
elif constraint == 1:
wipe = False
for i in range(0, len(version)):
if version[i] == '0' or wipe:
version[i] = '0'
else:
version[i] = str(int(version[i]) + 1)
wipe = True
requires = '(php-composer(' + name + ') >= ' + minver + ' with php-composer(' + name + ') < ' + '.'.join(version) + ')'
elif constraint == 2:
version[-1] = '0'
version[-2] = str(int(version[-2]) + 1)
requires = '(php-composer(' + name + ') >= ' + minver + ' with php-composer(' + name + ') < ' + '.'.join(version) + ')'
else:
requires = 'php-composer(' + name + ') = ' + minver
return requires
def repoquery(query):
stdout = subprocess.run(['dnf', 'repoquery', '-q', '--whatprovides', requires], stdout=subprocess.PIPE, universal_newlines=True, check = True).stdout
return stdout
with open('3rdparty/composer.json') as f:
#with open('apps/files_external/3rdparty/composer.json') as f:
depdata = json.load(f)
for name, version in depdata['require'].items():
if name == 'php':
continue
print(name, version, ':')
version = version.replace('v', '')
if version == '*':
constraint = 0
version = '0'
elif version.startswith('^'):
constraint = 1
version = version.strip('^')
elif version.startswith('~'):
constraint = 2
version = version.strip('~')
else:
constraint = defaultconstraint
if re.search('[^.0-9]', version):
print('Unparseable version:', version)
continue
else:
minver = version
requires = get_requires(name, version, constraint)
print(' Constraint (' + constraintmap[constraint] + '): ' + requires)
package = repoquery(requires)
while len(package) == 0:
constraint -= 1
if constraint < 0:
break
requires = get_requires(name, version, constraint)
print(' Constraint (' + constraintmap[constraint] + '): ' + requires)
package = repoquery(requires)
if len(package) == 0:
print(' -> no providing package found\n')
else:
print(' -> ' + package)