]> git.agnieray.net Git - galette.git/commitdiff
Pass SSH arguments from command line
authorJohan Cwiklinski <johan@x-tnd.be>
Fri, 5 Apr 2024 20:21:49 +0000 (22:21 +0200)
committerJohan Cwiklinski <johan@x-tnd.be>
Fri, 5 Apr 2024 20:21:49 +0000 (22:21 +0200)
pep8

bin/release

index 6db1cf1bf016b8e5bb07951fb96b3d68f97a560c..ba82407bd531356ba6d8264ec53578904b1dd03a 100755 (executable)
@@ -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<version>.+)'\\)", 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()