gstreamer-rs/generator.py
Víctor Manuel Jáquez Leal 25142fc3b5 generator.py: change heuristic to modify Cargo.toml
It is easy to forget to add the final comma in the last item in
the workspace member list, thus the current heuristic breaks the
Cargo.toml parsing.

Instead of trying to append the gir item, it is inserted at
position end-2, avoiding the previous described situation.
2018-09-06 11:56:48 +03:00

60 lines
1.8 KiB
Python
Executable file

#!/usr/bin/env python
from os import listdir
from os.path import isfile, join
from subprocess import call
import sys
need_rebuild = False
def update_workspace():
with open('Cargo.toml', 'r') as f:
old_lines = f.readlines()
lines = old_lines[:]
with open('Cargo.toml', 'w') as f:
lines.insert(len(lines) - 2, '"gir",')
f.write(''.join(lines))
success = True
try:
call(['bash', '-c', 'cd gir && cargo build --release'])
except:
success = False
with open('Cargo.toml', 'w') as f:
f.write(''.join(old_lines))
return success
if not isfile('./gir/src'):
need_rebuild = True
print('=> Initializing gir submodule...')
call(['bash', '-c', 'git submodule update --init'])
print('<= Done!')
question = 'Do you want to update gir submodule? [y/N]'
if sys.version_info[0] < 3:
line = raw_input(question)
else:
line = input(question)
line = line.strip()
if line.lower() == 'n' or len(line) == 0:
need_rebuild = True
print('=> Updating gir submodule...')
call(['bash', '-c', 'cd gir && git reset --hard HEAD && git pull -f origin master'])
print('<= Done!')
if need_rebuild is True or not os.path.isfile('./gir/target/release/gir'):
print('=> Building gir...')
if update_workspace() is True:
print('<= Done!')
else:
print('<= Failed...')
sys.exit(1)
print('=> Regenerating crates...')
for entry in [f for f in listdir('.') if isfile(join('.', f))]:
if entry.startswith('Gir_Gst') and entry.endswith('.toml'):
print('==> Regenerating "{}"...'.format(entry))
call(['./target/release/gir', '-c', entry])
print('<== Done!')
print('<= Done!')
print("Don't forget to check if everything has been correctly generated!")