1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #!/usr/bin/env python3
- #
- # Conversion script to update SRC_URI to add branch to git urls
- #
- # Copyright (C) 2021 Richard Purdie
- #
- # SPDX-License-Identifier: GPL-2.0-only
- #
- import re
- import os
- import sys
- import tempfile
- import shutil
- import mimetypes
- if len(sys.argv) < 2:
- print("Please specify a directory to run the conversion script against.")
- sys.exit(1)
- def processfile(fn):
- def matchline(line):
- if "MIRROR" in line or ".*" in line or "GNOME_GIT" in line:
- return False
- return True
- print("processing file '%s'" % fn)
- try:
- if "distro_alias.inc" in fn or "linux-yocto-custom.bb" in fn:
- return
- fh, abs_path = tempfile.mkstemp()
- modified = False
- with os.fdopen(fh, 'w') as new_file:
- with open(fn, "r") as old_file:
- for line in old_file:
- if ("git://" in line or "gitsm://" in line) and "branch=" not in line and matchline(line):
- if line.endswith('"\n'):
- line = line.replace('"\n', ';branch=master"\n')
- elif re.search('\s*\\\\$', line):
- line = re.sub('\s*\\\\$', ';branch=master \\\\', line)
- modified = True
- if ("git://" in line or "gitsm://" in line) and "github.com" in line and "protocol=https" not in line and matchline(line):
- if "protocol=git" in line:
- line = line.replace('protocol=git', 'protocol=https')
- elif line.endswith('"\n'):
- line = line.replace('"\n', ';protocol=https"\n')
- elif re.search('\s*\\\\$', line):
- line = re.sub('\s*\\\\$', ';protocol=https \\\\', line)
- modified = True
- new_file.write(line)
- if modified:
- shutil.copymode(fn, abs_path)
- os.remove(fn)
- shutil.move(abs_path, fn)
- except UnicodeDecodeError:
- pass
- ourname = os.path.basename(sys.argv[0])
- ourversion = "0.1"
- if os.path.isfile(sys.argv[1]):
- processfile(sys.argv[1])
- sys.exit(0)
- for targetdir in sys.argv[1:]:
- print("processing directory '%s'" % targetdir)
- for root, dirs, files in os.walk(targetdir):
- for name in files:
- if name == ourname:
- continue
- fn = os.path.join(root, name)
- if os.path.islink(fn):
- continue
- if "/.git/" in fn or fn.endswith(".html") or fn.endswith(".patch") or fn.endswith(".m4") or fn.endswith(".diff"):
- continue
- processfile(fn)
- print("All files processed with version %s" % ourversion)
|