From 8e3b5f6bd5e1b5bfa35c8a6de934646a3f55dc5f Mon Sep 17 00:00:00 2001 From: Johan Cwiklinski Date: Fri, 5 Apr 2024 22:21:49 +0200 Subject: [PATCH] Pass SSH arguments from command line pep8 --- bin/release | 153 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 95 insertions(+), 58 deletions(-) diff --git a/bin/release b/bin/release index 6db1cf1bf..ba82407bd 100755 --- a/bin/release +++ b/bin/release @@ -6,14 +6,10 @@ from datetime import datetime from termcolor import colored from urllib.parse import urlparse -#on tuxfamily -#ssh_path = 'galette/galette-repository/' -#ssh_host = 'ssh.tuxfamily.org' -#galette_dl_repo = 'http://download.tuxfamily.org/galette/' -#on ulysses -ssh_path = '/var/www/galette.eu/download/' -ssh_host = 'ulysses.fr' -galette_dl_repo = 'https://galette.eu/download/' +# on Tuxfamily +ssh_path = 'galette/galette-repository/' +ssh_host = 'ssh.tuxfamily.org' +galette_dl_repo = 'http://download.tuxfamily.org/galette/' local_dl_repo = os.path.join( os.path.dirname( @@ -34,18 +30,21 @@ nightly_version = None tag_commit = None repo = None + def print_err(msg): """ Display colored error message """ print(colored(msg, 'red', attrs=['bold'])) + def get_numeric_version(ver): """ Returns all numeric version """ return re.findall(r'\d+', ver) + def valid_version(ver): """ Check if provided version is valid. @@ -55,6 +54,7 @@ def valid_version(ver): """ return '.'.join(get_numeric_version(ver)) == ver + def incr_version(ver): """ Increment version number @@ -63,6 +63,7 @@ def incr_version(ver): version[-1] = str(int(version[-1]) + 1) return version + def propose_version(): """ Propose new minor and major versions, @@ -74,24 +75,24 @@ def propose_version(): for tagref in tagrefs: tag = tagref.tag if valid_version(tag.tag): - #last minor version is always the last one :) + # last minor version is always the last one :) if tag.tag > last_minor: last_minor = tag.tag - #last major version + # last major version if len(tag.tag) == 5 and tag.tag > last_major: last_major = tag.tag if verbose: print('last minor: %s | last major %s' % (last_minor, last_major)) - #no version provided. propose one + # no version provided. propose one new_minor = None new_major = None if len(last_minor) == 5: - #if the latest is a major version - new_minor = last_minor + ('.1') + # if the latest is a major version + new_minor = last_minor + '.1' else: new_minor = '.'.join(incr_version(last_minor)) @@ -102,6 +103,7 @@ def propose_version(): major: %s """ % (new_minor, new_major)) + def get_latest_version(): """ Look for latest version @@ -111,14 +113,15 @@ def get_latest_version(): last = None for tagref in tagrefs: tag = tagref.tag - if tag != None and valid_version(tag.tag): - #last minor version is always the last one :) - if last == None or tag.tag > last.tag: + if tag is not None and valid_version(tag.tag): + # last minor version is always the last one :) + if last is None or tag.tag > last.tag: last = tag tag_commit = last.hexsha return last.tag + def is_existing_version(ver): """ Look specified version exists @@ -130,18 +133,21 @@ def is_existing_version(ver): return True return False + def is_version_bumped(ver): """ Check if version has been bumped in Galette configuration file """ global repo, tag_commit - versions_file = repo.git.execute(["git", "show", f"{tag_commit}:{os.path.join('galette', 'config', 'versions.inc.php')}"]) + versions_file = repo.git.execute( + ["git", "show", f"{tag_commit}:{os.path.join('galette', 'config', 'versions.inc.php')}"]) file_version = re.search("^define\\('GALETTE_VERSION', 'v(?P.+)'\\)", versions_file, re.MULTILINE) if file_version.group('version') != ver: print_err('Trying to release %s, but bumped version is %s!' % (ver, file_version.group('version'))) exit(1) + def ask_user_confirm(msg): """ Ask user his confirmation @@ -161,6 +167,7 @@ def ask_user_confirm(msg): "Invalid input. Please enter 'yes' or 'no' (or 'y' or 'n')." ) + def get_rel_name(buildver): """ Build archive name from command line parameters @@ -183,6 +190,7 @@ def get_rel_name(buildver): return archive_name + def _do_build(ver): """ Proceed build @@ -197,7 +205,7 @@ def _do_build(ver): ) if not force: - #first check if a version + # first check if a version local = False ascLocal = False @@ -212,7 +220,7 @@ def _do_build(ver): exists = response.status == 200 if not exists: - #also check from local repo + # also check from local repo exists = os.path.exists(galette_archive) if exists: local = True @@ -223,7 +231,7 @@ def _do_build(ver): ascexists = response.status == 200 if not ascexists: - #also check from local repo + # also check from local repo ascexists = os.path.exists( os.path.join( local_dl_repo, @@ -239,7 +247,7 @@ def _do_build(ver): loctxt = '' if local: loctxt = 'locally ' - msg = 'Relase %s already %sexists' % (rel_name, loctxt) + msg = 'Release %s already %sexists' % (rel_name, loctxt) if ascexists: loctxt = '' @@ -283,7 +291,7 @@ def _do_build(ver): typever, galette_archive )) - print('Archive command: %s' % (archive_cmd)) + print('Archive command: %s' % archive_cmd) if commit and extra: print('Archiving GIT commit %s' % commit) @@ -306,15 +314,16 @@ def _do_build(ver): if upload: do_scp(galette_archive) + def do_sign(archive): sign_cmd = 'gpg --detach-sign --armor %s' % archive p1 = subprocess.Popen(sign_cmd, shell=True) p1.communicate() + def do_scp(archive): global ssh_key, ssh_host, ssh_path - #path = 'galette/galette-repository/' path = ssh_path if extra: path += 'dev/' @@ -327,6 +336,7 @@ def do_scp(archive): p1 = subprocess.Popen(scp_cmd, shell=True) p1.communicate() + def add_libs(rel_name, galette_archive): """ Add external libraries to the archive @@ -339,7 +349,7 @@ def add_libs(rel_name, galette_archive): galette.extractall(path=src_dir) galette.close() - #set galette nightly version + # set galette nightly version config_dir = os.path.join(src_dir, rel_name, 'galette', 'config') if nightly_version != None: sed_cmd = 'sed -e "s/GALETTE_NIGHTLY\', false/GALETTE_NIGHTLY\', \'%s\'/" -i versions.inc.php' % nightly_version @@ -347,22 +357,22 @@ def add_libs(rel_name, galette_archive): p1 = subprocess.Popen(sed_cmd, shell=True, cwd=config_dir) p1.wait() - #install npm modules + # install npm modules npm_dir = os.path.join(src_dir, rel_name) npm_cmd = 'npm install --prefix %s' % npm_dir print(npm_cmd) p1 = subprocess.Popen(npm_cmd, shell=True, cwd=npm_dir) p1.wait() - #build the UI assets + # build the UI assets wp_cmd = 'npm run first-build' p1 = subprocess.Popen(wp_cmd, shell=True, cwd=npm_dir) p1.wait() - #node modules are no longer needed + # node modules are no longer needed shutil.rmtree(os.path.join(npm_dir, 'node_modules')) - #UI sources and some built assets are no longer needed + # UI sources and some built assets are no longer needed shutil.rmtree(os.path.join(npm_dir, 'semantic')) shutil.rmtree(os.path.join(npm_dir, 'ui')) shutil.rmtree(os.path.join(src_dir, rel_name, 'galette/webroot/themes/default/ui/components')) @@ -373,14 +383,14 @@ def add_libs(rel_name, galette_archive): os.remove(os.path.join(src_dir, rel_name, 'galette/webroot/themes/default/ui/semantic.css')) os.remove(os.path.join(src_dir, rel_name, 'galette/webroot/themes/default/ui/semantic.rtl.css')) - #install php dependencies + # install php dependencies composer_cmd = 'composer install --ignore-platform-reqs --no-dev' composer_dir = os.path.join(src_dir, rel_name, 'galette') print(composer_dir) p1 = subprocess.Popen(composer_cmd, shell=True, cwd=composer_dir) p1.wait() - #cleaunp files not required in releases + # cleaunp files not required in releases todrop = [ '.travis.yml', 'apigen.neon', @@ -408,35 +418,35 @@ def add_libs(rel_name, galette_archive): if os.path.exists(os.path.join(src_dir, rel_name, '.github')): shutil.rmtree(os.path.join(src_dir, rel_name, '.github')) - #cleanup vendors + # cleanup vendors for root, dirnames, filenames in os.walk(os.path.join(composer_dir, 'vendor')): - #remove git directories + # remove git directories for dirname in fnmatch.filter(dirnames, '.git*'): remove_dir = os.path.join(composer_dir, root, dirname) shutil.rmtree(remove_dir) - #remove test directories + # remove test directories for dirname in fnmatch.filter(dirnames, 'test?'): remove_dir = os.path.join(composer_dir, root, dirname) shutil.rmtree(remove_dir) - #remove examples directories + # remove examples directories for dirname in fnmatch.filter(dirnames, 'example?'): remove_dir = os.path.join(composer_dir, root, dirname) shutil.rmtree(remove_dir) - #remove doc directories + # remove doc directories for dirname in fnmatch.filter(dirnames, 'doc?'): remove_dir = os.path.join(composer_dir, root, dirname) shutil.rmtree(remove_dir) - #remove composer stuff + # remove composer stuff for filename in fnmatch.filter(filenames, 'composer*'): remove_file = os.path.join(composer_dir, root, filename) os.remove(remove_file) for dirname in dirnames: - #remove Faker useless languages + # remove Faker useless languages if root.endswith('src/Faker/Provider'): if dirname not in ['en_US', 'fr_FR', 'de_DE']: shutil.rmtree(os.path.join(root, dirname)) - #begin to remove tcpdf not used fonts + # begin to remove tcpdf not used fonts if root.endswith('tcpdf/fonts'): if dirname != 'dejavu-fonts-ttf-2.34': shutil.rmtree(os.path.join(root, dirname)) @@ -447,23 +457,23 @@ def add_libs(rel_name, galette_archive): for filename in filenames: if os.path.islink(os.path.join(root, filename)): os.remove(os.path.join(root, filename)) - #remove tcpdf not used fonts + # remove tcpdf not used fonts if root.endswith('tcpdf/fonts'): if filename not in [ - 'dejavusansbi.ctg.z', - 'dejavusansbi.z', - 'dejavusansb.z', - 'dejavusansi.ctg.z', - 'dejavusansi.z', - 'dejavusans.z', - 'zapfdingbats.php', - 'dejavusansb.ctg.z', - 'dejavusansbi.php', - 'dejavusansb.php', - 'dejavusans.ctg.z', - 'dejavusansi.php', - 'dejavusans.php', - 'helvetica.php' + 'dejavusansbi.ctg.z', + 'dejavusansbi.z', + 'dejavusansb.z', + 'dejavusansi.ctg.z', + 'dejavusansi.z', + 'dejavusans.z', + 'zapfdingbats.php', + 'dejavusansb.ctg.z', + 'dejavusansbi.php', + 'dejavusansb.php', + 'dejavusans.ctg.z', + 'dejavusansi.php', + 'dejavusans.php', + 'helvetica.php' ]: os.remove(os.path.join(root, filename)) @@ -478,9 +488,10 @@ def add_libs(rel_name, galette_archive): galette.close() shutil.rmtree(src_dir) + def valid_commit(repo, c): """ - Validate commit existance in repository + Validate commit existence in repository Also prepare version for GALETTE_NIGHTLY value """ global commit, nightly_version @@ -514,11 +525,12 @@ def valid_commit(repo, c): except gitdb.exc.BadObject: return False + def main(): """ Main method """ - global verbose, tagrefs, force, extra, assume_yes, nightly, sign, ssh_key, repo + global verbose, tagrefs, force, extra, assume_yes, nightly, sign, ssh_key, repo, ssh_host, ssh_path, galette_dl_repo parser = argparse.ArgumentParser(description='Release Galette') group = parser.add_mutually_exclusive_group() @@ -566,10 +578,25 @@ def main(): '--ssh-key', help='SSH key to be used for uploading', ) + parser.add_argument( + '-H', + '--ssh-host', + help='SSH host to upload to (default %s)' % ssh_host + ) + parser.add_argument( + '-P', + '--ssh-path', + help='Path on SSH host (default %s)' % ssh_path + ) + parser.add_argument( + '-d', + '--download-url', + help='Download URL (default %s)' % galette_dl_repo + ) parser.add_argument('-f', action='store_true') args = parser.parse_args() - verbose=args.verbose + verbose = args.verbose if verbose: print(args) @@ -582,11 +609,20 @@ def main(): force = ask_user_confirm( 'Are you *REALLY* sure you mean -f when you typed -f? [yes/No] ' ) - assume_yes=args.assume_yes + assume_yes = args.assume_yes if args.ssh_key: ssh_key = args.ssh_key + if args.ssh_host: + ssh_host = args.ssh_host + + if args.ssh_path: + ssh_path = args.ssh_path + + if args.download_url: + galette_dl_repo = args.download_url + build = False buildver = None if args.nightly: @@ -617,7 +653,7 @@ def main(): print_err('%s is not a valid version number!' % args.version) sys.exit(1) else: - #check if specified version exists + # check if specified version exists if not is_existing_version(args.version): print_err('%s does not exist!' % args.version) else: @@ -639,5 +675,6 @@ def main(): if build: _do_build(buildver) + if __name__ == "__main__": main() -- 2.39.2