about summary refs log tree commit diff
path: root/pkgs/applications/version-management/gitlab
diff options
context:
space:
mode:
authorYaya <mak@nyantec.com>2023-05-24 13:16:22 +0000
committerYureka <yuka@yuka.dev>2023-05-25 10:08:53 +0200
commitdb8bbd55785e39c870b9529cbb678e3b7d391bd6 (patch)
tree9af861c1c7ddb969764a961e799e55f8a1788511 /pkgs/applications/version-management/gitlab
parent44b7c719567b48b92e621e390ab5972de6414187 (diff)
downloadnixlib-db8bbd55785e39c870b9529cbb678e3b7d391bd6.tar
nixlib-db8bbd55785e39c870b9529cbb678e3b7d391bd6.tar.gz
nixlib-db8bbd55785e39c870b9529cbb678e3b7d391bd6.tar.bz2
nixlib-db8bbd55785e39c870b9529cbb678e3b7d391bd6.tar.lz
nixlib-db8bbd55785e39c870b9529cbb678e3b7d391bd6.tar.xz
nixlib-db8bbd55785e39c870b9529cbb678e3b7d391bd6.tar.zst
nixlib-db8bbd55785e39c870b9529cbb678e3b7d391bd6.zip
gitlab: Reformat update.py with black
Diffstat (limited to 'pkgs/applications/version-management/gitlab')
-rwxr-xr-xpkgs/applications/version-management/gitlab/update.py270
1 files changed, 173 insertions, 97 deletions
diff --git a/pkgs/applications/version-management/gitlab/update.py b/pkgs/applications/version-management/gitlab/update.py
index 04bf9401e539..fa3d06b18ea4 100755
--- a/pkgs/applications/version-management/gitlab/update.py
+++ b/pkgs/applications/version-management/gitlab/update.py
@@ -14,15 +14,17 @@ from typing import Iterable
 
 import requests
 
-NIXPKGS_PATH = pathlib.Path(__file__).parent / '../../../../'
+NIXPKGS_PATH = pathlib.Path(__file__).parent / "../../../../"
 GITLAB_DIR = pathlib.Path(__file__).parent
 
 logger = logging.getLogger(__name__)
 click_log.basic_config(logger)
 
+
 class GitLabRepo:
     version_regex = re.compile(r"^v\d+\.\d+\.\d+(\-rc\d+)?(\-ee)?(\-gitlab)?")
-    def __init__(self, owner: str = 'gitlab-org', repo: str = 'gitlab'):
+
+    def __init__(self, owner: str = "gitlab-org", repo: str = "gitlab"):
         self.owner = owner
         self.repo = repo
 
@@ -40,17 +42,41 @@ class GitLabRepo:
         versions = list(filter(self.version_regex.match, tags))
 
         # sort, but ignore v, -ee and -gitlab for sorting comparisons
-        versions.sort(key=lambda x: Version(x.replace("v", "").replace("-ee", "").replace("-gitlab", "")), reverse=True)
+        versions.sort(
+            key=lambda x: Version(
+                x.replace("v", "").replace("-ee", "").replace("-gitlab", "")
+            ),
+            reverse=True,
+        )
         return versions
 
     def get_git_hash(self, rev: str):
-        return subprocess.check_output(['nix-universal-prefetch', 'fetchFromGitLab', '--owner', self.owner, '--repo', self.repo, '--rev', rev]).decode('utf-8').strip()
+        return (
+            subprocess.check_output(
+                [
+                    "nix-universal-prefetch",
+                    "fetchFromGitLab",
+                    "--owner",
+                    self.owner,
+                    "--repo",
+                    self.repo,
+                    "--rev",
+                    rev,
+                ]
+            )
+            .decode("utf-8")
+            .strip()
+        )
 
     def get_yarn_hash(self, rev: str):
         with tempfile.TemporaryDirectory() as tmp_dir:
-            with open(tmp_dir + '/yarn.lock', 'w') as f:
-                f.write(self.get_file('yarn.lock', rev))
-            return subprocess.check_output(['prefetch-yarn-deps', tmp_dir + '/yarn.lock']).decode('utf-8').strip()
+            with open(tmp_dir + "/yarn.lock", "w") as f:
+                f.write(self.get_file("yarn.lock", rev))
+            return (
+                subprocess.check_output(["prefetch-yarn-deps", tmp_dir + "/yarn.lock"])
+                .decode("utf-8")
+                .strip()
+            )
 
     @staticmethod
     def rev2version(tag: str) -> str:
@@ -61,9 +87,9 @@ class GitLabRepo:
         :return: a normalized version number
         """
         # strip v prefix
-        version = re.sub(r"^v", '', tag)
+        version = re.sub(r"^v", "", tag)
         # strip -ee and -gitlab suffixes
-        return re.sub(r"-(ee|gitlab)$", '', version)
+        return re.sub(r"-(ee|gitlab)$", "", version)
 
     def get_file(self, filepath, rev):
         """
@@ -77,29 +103,39 @@ class GitLabRepo:
     def get_data(self, rev):
         version = self.rev2version(rev)
 
-        passthru = {v: self.get_file(v, rev).strip() for v in ['GITALY_SERVER_VERSION', 'GITLAB_PAGES_VERSION',
-                                                               'GITLAB_SHELL_VERSION']}
+        passthru = {
+            v: self.get_file(v, rev).strip()
+            for v in [
+                "GITALY_SERVER_VERSION",
+                "GITLAB_PAGES_VERSION",
+                "GITLAB_SHELL_VERSION",
+            ]
+        }
 
         passthru["GITLAB_WORKHORSE_VERSION"] = version
 
-        return dict(version=self.rev2version(rev),
-                    repo_hash=self.get_git_hash(rev),
-                    yarn_hash=self.get_yarn_hash(rev),
-                    owner=self.owner,
-                    repo=self.repo,
-                    rev=rev,
-                    passthru=passthru)
+        return dict(
+            version=self.rev2version(rev),
+            repo_hash=self.get_git_hash(rev),
+            yarn_hash=self.get_yarn_hash(rev),
+            owner=self.owner,
+            repo=self.repo,
+            rev=rev,
+            passthru=passthru,
+        )
 
 
 def _get_data_json():
-    data_file_path = pathlib.Path(__file__).parent / 'data.json'
-    with open(data_file_path, 'r') as f:
+    data_file_path = pathlib.Path(__file__).parent / "data.json"
+    with open(data_file_path, "r") as f:
         return json.load(f)
 
 
 def _call_nix_update(pkg, version):
     """calls nix-update from nixpkgs root dir"""
-    return subprocess.check_output(['nix-update', pkg, '--version', version], cwd=NIXPKGS_PATH)
+    return subprocess.check_output(
+        ["nix-update", pkg, "--version", version], cwd=NIXPKGS_PATH
+    )
 
 
 @click_log.simple_verbosity_option(logger)
@@ -108,8 +144,8 @@ def cli():
     pass
 
 
-@cli.command('update-data')
-@click.option('--rev', default='latest', help='The rev to use (vX.Y.Z-ee), or \'latest\'')
+@cli.command("update-data")
+@click.option("--rev", default="latest", help="The rev to use (vX.Y.Z-ee), or 'latest'")
 def update_data(rev: str):
     """Update data.json"""
     logger.info("Updating data.json")
@@ -117,18 +153,18 @@ def update_data(rev: str):
     repo = GitLabRepo()
     if rev == "latest":
         # filter out pre and rc releases
-        rev = next(filter(lambda x: not ('rc' in x or x.endswith('pre')), repo.tags))
+        rev = next(filter(lambda x: not ("rc" in x or x.endswith("pre")), repo.tags))
 
-    data_file_path = pathlib.Path(__file__).parent / 'data.json'
+    data_file_path = pathlib.Path(__file__).parent / "data.json"
 
     data = repo.get_data(rev)
 
-    with open(data_file_path.as_posix(), 'w') as f:
+    with open(data_file_path.as_posix(), "w") as f:
         json.dump(data, f, indent=2)
         f.write("\n")
 
 
-@cli.command('update-rubyenv')
+@cli.command("update-rubyenv")
 def update_rubyenv():
     """Update rubyEnv"""
     logger.info("Updating gitlab")
@@ -137,110 +173,137 @@ def update_rubyenv():
 
     # load rev from data.json
     data = _get_data_json()
-    rev = data['rev']
-    version = data['version']
+    rev = data["rev"]
+    version = data["version"]
 
-    for fn in ['Gemfile.lock', 'Gemfile']:
-        with open(rubyenv_dir / fn, 'w') as f:
+    for fn in ["Gemfile.lock", "Gemfile"]:
+        with open(rubyenv_dir / fn, "w") as f:
             f.write(repo.get_file(fn, rev))
 
     # patch for openssl 3.x support
-    subprocess.check_output(['sed', '-i', "s:'openssl', '2.*':'openssl', '3.0.2':g", 'Gemfile'], cwd=rubyenv_dir)
+    subprocess.check_output(
+        ["sed", "-i", "s:'openssl', '2.*':'openssl', '3.0.2':g", "Gemfile"],
+        cwd=rubyenv_dir,
+    )
 
     # Fetch vendored dependencies temporarily in order to build the gemset.nix
-    subprocess.check_output(['mkdir', '-p', 'vendor/gems'], cwd=rubyenv_dir)
-    subprocess.check_output(['sh', '-c', f'curl -L https://gitlab.com/gitlab-org/gitlab/-/archive/v{version}-ee/gitlab-v{version}-ee.tar.bz2?path=vendor/gems | tar -xj --strip-components=3'], cwd=f'{rubyenv_dir}/vendor/gems')
+    subprocess.check_output(["mkdir", "-p", "vendor/gems"], cwd=rubyenv_dir)
+    subprocess.check_output(
+        [
+            "sh",
+            "-c",
+            f"curl -L https://gitlab.com/gitlab-org/gitlab/-/archive/v{version}-ee/gitlab-v{version}-ee.tar.bz2?path=vendor/gems | tar -xj --strip-components=3",
+        ],
+        cwd=f"{rubyenv_dir}/vendor/gems",
+    )
 
     # Undo our gemset.nix patches so that bundix runs through
-    subprocess.check_output(['sed', '-i', '-e', '1d', '-e', 's:\\${src}/::g', 'gemset.nix'], cwd=rubyenv_dir)
-
-    subprocess.check_output(['bundle', 'lock'], cwd=rubyenv_dir)
-    subprocess.check_output(['bundix'], cwd=rubyenv_dir)
+    subprocess.check_output(
+        ["sed", "-i", "-e", "1d", "-e", "s:\\${src}/::g", "gemset.nix"], cwd=rubyenv_dir
+    )
 
-    subprocess.check_output(['sed', '-i', '-e', '1i\\src:', '-e', 's:path = \\(vendor/[^;]*\\);:path = "${src}/\\1";:g', 'gemset.nix'], cwd=rubyenv_dir)
-    subprocess.check_output(['rm', '-rf', 'vendor'], cwd=rubyenv_dir)
+    subprocess.check_output(["bundle", "lock"], cwd=rubyenv_dir)
+    subprocess.check_output(["bundix"], cwd=rubyenv_dir)
 
+    subprocess.check_output(
+        [
+            "sed",
+            "-i",
+            "-e",
+            "1i\\src:",
+            "-e",
+            's:path = \\(vendor/[^;]*\\);:path = "${src}/\\1";:g',
+            "gemset.nix",
+        ],
+        cwd=rubyenv_dir,
+    )
+    subprocess.check_output(["rm", "-rf", "vendor"], cwd=rubyenv_dir)
 
 
-@cli.command('update-gitaly')
+@cli.command("update-gitaly")
 def update_gitaly():
     """Update gitaly"""
     logger.info("Updating gitaly")
     data = _get_data_json()
-    gitaly_server_version = data['passthru']['GITALY_SERVER_VERSION']
-    repo = GitLabRepo(repo='gitaly')
-    gitaly_dir = pathlib.Path(__file__).parent / 'gitaly'
+    gitaly_server_version = data["passthru"]["GITALY_SERVER_VERSION"]
+    repo = GitLabRepo(repo="gitaly")
+    gitaly_dir = pathlib.Path(__file__).parent / "gitaly"
 
-    for fn in ['Gemfile.lock', 'Gemfile']:
-        with open(gitaly_dir / fn, 'w') as f:
+    for fn in ["Gemfile.lock", "Gemfile"]:
+        with open(gitaly_dir / fn, "w") as f:
             f.write(repo.get_file(f"ruby/{fn}", f"v{gitaly_server_version}"))
 
-    subprocess.check_output(['bundle', 'lock'], cwd=gitaly_dir)
-    subprocess.check_output(['bundix'], cwd=gitaly_dir)
+    subprocess.check_output(["bundle", "lock"], cwd=gitaly_dir)
+    subprocess.check_output(["bundix"], cwd=gitaly_dir)
 
-    _call_nix_update('gitaly', gitaly_server_version)
+    _call_nix_update("gitaly", gitaly_server_version)
 
 
-@cli.command('update-gitlab-pages')
+@cli.command("update-gitlab-pages")
 def update_gitlab_pages():
     """Update gitlab-pages"""
     logger.info("Updating gitlab-pages")
     data = _get_data_json()
-    gitlab_pages_version = data['passthru']['GITLAB_PAGES_VERSION']
-    _call_nix_update('gitlab-pages', gitlab_pages_version)
+    gitlab_pages_version = data["passthru"]["GITLAB_PAGES_VERSION"]
+    _call_nix_update("gitlab-pages", gitlab_pages_version)
+
 
 def get_container_registry_version() -> str:
     """Returns the version attribute of gitlab-container-registry"""
-    return str(subprocess.check_output(
-        [
-            'nix',
-            '--experimental-features',
-            'nix-command',
-            'eval',
-            '-f',
-            '.',
-            '--raw',
-            'gitlab-container-registry.version'
-        ],
-        cwd=NIXPKGS_PATH
-    ))
+    return str(
+        subprocess.check_output(
+            [
+                "nix",
+                "--experimental-features",
+                "nix-command",
+                "eval",
+                "-f",
+                ".",
+                "--raw",
+                "gitlab-container-registry.version",
+            ],
+            cwd=NIXPKGS_PATH,
+        )
+    )
 
 
-@cli.command('update-gitlab-shell')
+@cli.command("update-gitlab-shell")
 def update_gitlab_shell():
     """Update gitlab-shell"""
     logger.info("Updating gitlab-shell")
     data = _get_data_json()
-    gitlab_shell_version = data['passthru']['GITLAB_SHELL_VERSION']
-    _call_nix_update('gitlab-shell', gitlab_shell_version)
+    gitlab_shell_version = data["passthru"]["GITLAB_SHELL_VERSION"]
+    _call_nix_update("gitlab-shell", gitlab_shell_version)
 
 
-@cli.command('update-gitlab-workhorse')
+@cli.command("update-gitlab-workhorse")
 def update_gitlab_workhorse():
     """Update gitlab-workhorse"""
     logger.info("Updating gitlab-workhorse")
     data = _get_data_json()
-    gitlab_workhorse_version = data['passthru']['GITLAB_WORKHORSE_VERSION']
-    _call_nix_update('gitlab-workhorse', gitlab_workhorse_version)
+    gitlab_workhorse_version = data["passthru"]["GITLAB_WORKHORSE_VERSION"]
+    _call_nix_update("gitlab-workhorse", gitlab_workhorse_version)
 
 
-@cli.command('update-gitlab-container-registry')
-@click.option('--rev', default='latest', help='The rev to use (vX.Y.Z-ee), or \'latest\'')
+@cli.command("update-gitlab-container-registry")
+@click.option("--rev", default="latest", help="The rev to use (vX.Y.Z-ee), or 'latest'")
 def update_gitlab_container_registry(rev: str):
     """Update gitlab-container-registry"""
     logger.info("Updading gitlab-container-registry")
     repo = GitLabRepo(repo="container-registry")
 
     if rev == "latest":
-        rev = next(filter(lambda x: not ('rc' in x or x.endswith('pre')), repo.tags))
+        rev = next(filter(lambda x: not ("rc" in x or x.endswith("pre")), repo.tags))
 
     version = repo.rev2version(rev)
-    _call_nix_update('gitlab-container-registry', version)
+    _call_nix_update("gitlab-container-registry", version)
 
 
-@cli.command('update-all')
-@click.option('--rev', default='latest', help='The rev to use (vX.Y.Z-ee), or \'latest\'')
-@click.option('--commit', is_flag=True, default=False, help='Commit the changes for you')
+@cli.command("update-all")
+@click.option("--rev", default="latest", help="The rev to use (vX.Y.Z-ee), or 'latest'")
+@click.option(
+    "--commit", is_flag=True, default=False, help="Commit the changes for you"
+)
 @click.pass_context
 def update_all(ctx, rev: str, commit: bool):
     """Update all gitlab components to the latest stable release"""
@@ -257,44 +320,57 @@ def update_all(ctx, rev: str, commit: bool):
     ctx.invoke(update_gitlab_shell)
     ctx.invoke(update_gitlab_workhorse)
     if commit:
-        commit_gitlab(old_data_json['version'], new_data_json['version'], new_data_json['rev'])
+        commit_gitlab(
+            old_data_json["version"], new_data_json["version"], new_data_json["rev"]
+        )
 
     ctx.invoke(update_gitlab_container_registry)
     if commit:
         new_container_registry_version = get_container_registry_version()
-        commit_container_registry(old_container_registry_version, new_container_registry_version)
+        commit_container_registry(
+            old_container_registry_version, new_container_registry_version
+        )
+
 
 def commit_gitlab(old_version: str, new_version: str, new_rev: str) -> None:
     """Commits the gitlab changes for you"""
     subprocess.run(
-        ['git', 'add', 'data.json', 'rubyEnv', 'gitaly', 'gitlab-pages', 'gitlab-shell', 'gitlab-workhorse'],
-        cwd=GITLAB_DIR
+        [
+            "git",
+            "add",
+            "data.json",
+            "rubyEnv",
+            "gitaly",
+            "gitlab-pages",
+            "gitlab-shell",
+            "gitlab-workhorse",
+        ],
+        cwd=GITLAB_DIR,
     )
     subprocess.run(
         [
-            'git',
-            'commit',
-            '--message',
-            f'''gitlab: {old_version} -> {new_version}\n\nhttps://gitlab.com/gitlab-org/gitlab/-/blob/{new_rev}/CHANGELOG.md'''
+            "git",
+            "commit",
+            "--message",
+            f"""gitlab: {old_version} -> {new_version}\n\nhttps://gitlab.com/gitlab-org/gitlab/-/blob/{new_rev}/CHANGELOG.md""",
         ],
-        cwd=GITLAB_DIR
+        cwd=GITLAB_DIR,
     )
 
+
 def commit_container_registry(old_version: str, new_version: str) -> None:
     """Commits the gitlab-container-registry changes for you"""
-    subprocess.run(
-        ['git', 'add', 'gitlab-container-registry'],
-        cwd=GITLAB_DIR
-    )
+    subprocess.run(["git", "add", "gitlab-container-registry"], cwd=GITLAB_DIR)
     subprocess.run(
         [
-            'git',
-            'commit',
-            '--message',
-            f"gitlab-container-registry: {old_version} -> {new_version}"
+            "git",
+            "commit",
+            "--message",
+            f"gitlab-container-registry: {old_version} -> {new_version}",
         ],
-        cwd=GITLAB_DIR
+        cwd=GITLAB_DIR,
     )
 
-if __name__ == '__main__':
+
+if __name__ == "__main__":
     cli()