about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/editors/jetbrains/bin
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/editors/jetbrains/bin')
-rw-r--r--nixpkgs/pkgs/applications/editors/jetbrains/bin/darwin.nix40
-rw-r--r--nixpkgs/pkgs/applications/editors/jetbrains/bin/ides.json172
-rw-r--r--nixpkgs/pkgs/applications/editors/jetbrains/bin/linux.nix128
-rwxr-xr-xnixpkgs/pkgs/applications/editors/jetbrains/bin/update_bin.py131
-rw-r--r--nixpkgs/pkgs/applications/editors/jetbrains/bin/versions.json494
5 files changed, 965 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/editors/jetbrains/bin/darwin.nix b/nixpkgs/pkgs/applications/editors/jetbrains/bin/darwin.nix
new file mode 100644
index 000000000000..747f03f55d5e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/jetbrains/bin/darwin.nix
@@ -0,0 +1,40 @@
+{ lib
+, stdenvNoCC
+, undmg
+, ...
+}:
+
+{ meta
+, pname
+, product
+, productShort ? product
+, src
+, version
+, plugins ? [ ]
+, buildNumber
+, ...
+}:
+
+let
+  loname = lib.toLower productShort;
+in
+stdenvNoCC.mkDerivation {
+  inherit pname meta src version plugins;
+  passthru.buildNumber = buildNumber;
+  desktopName = product;
+  dontFixup = true;
+  installPhase = ''
+    runHook preInstall
+    APP_DIR="$out/Applications/${product}.app"
+    mkdir -p "$APP_DIR"
+    cp -Tr *.app "$APP_DIR"
+    mkdir -p "$out/bin"
+    cat << EOF > "$out/bin/${loname}"
+    open -na '$APP_DIR' --args "\$@"
+    EOF
+    chmod +x "$out/bin/${loname}"
+    runHook postInstall
+  '';
+  nativeBuildInputs = [ undmg ];
+  sourceRoot = ".";
+}
diff --git a/nixpkgs/pkgs/applications/editors/jetbrains/bin/ides.json b/nixpkgs/pkgs/applications/editors/jetbrains/bin/ides.json
new file mode 100644
index 000000000000..b503a7c6759c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/jetbrains/bin/ides.json
@@ -0,0 +1,172 @@
+{
+  "clion": {
+    "product": "CLion",
+    "wmClass": "jetbrains-clion",
+    "meta": {
+      "isOpenSource": false,
+      "description": "C/C++ IDE from JetBrains",
+      "maintainers": [ "edwtjo", "mic92", "tymscar" ],
+      "longDescription": "Enhancing productivity for every C and C++ developer on Linux, macOS and Windows.",
+      "homepage": "https://www.jetbrains.com/clion/"
+    }
+  },
+  "datagrip": {
+    "product": "DataGrip",
+    "wmClass": "jetbrains-datagrip",
+    "meta": {
+      "isOpenSource": false,
+      "description": "Database IDE from JetBrains",
+      "maintainers": [ ],
+      "longDescription": "DataGrip is a new IDE from JetBrains built for database admins. It allows you to quickly migrate and refactor relational databases, construct efficient, statically checked SQL queries and much more.",
+      "homepage": "https://www.jetbrains.com/datagrip/"
+    }
+  },
+  "dataspell": {
+    "product": "DataSpell",
+    "wmClass": "jetbrains-dataspell",
+    "meta": {
+      "isOpenSource": false,
+      "description": "Data science IDE from JetBrains",
+      "maintainers": [ "leona" ],
+      "longDescription": "DataSpell is a new IDE from JetBrains built for Data Scientists. Mainly it integrates Jupyter notebooks in the IntelliJ platform.",
+      "homepage": "https://www.jetbrains.com/dataspell/"
+    }
+  },
+  "gateway": {
+    "product": "JetBrains Gateway",
+    "productShort": "Gateway",
+    "wmClass": "jetbrains-gateway",
+    "meta": {
+      "isOpenSource": false,
+      "description": "Remote development for JetBrains products",
+      "maintainers": [ ],
+      "longDescription": "JetBrains Gateway is a lightweight launcher that connects a remote server with your local machine, downloads necessary components on the backend, and opens your project in JetBrains Client.",
+      "homepage": "https://www.jetbrains.com/remote-development/gateway/"
+    }
+  },
+  "goland": {
+    "product": "Goland",
+    "wmClass": "jetbrains-goland",
+    "meta": {
+      "isOpenSource": false,
+      "description": "Go IDE from JetBrains",
+      "maintainers": [ "tymscar" ],
+      "longDescription": "Goland is the codename for a new commercial IDE by JetBrains aimed at providing an ergonomic environment for Go development.\n          The new IDE extends the IntelliJ platform with the coding assistance and tool integrations specific for the Go language",
+      "homepage": "https://www.jetbrains.com/go/"
+    }
+  },
+  "idea-community": {
+    "product": "IntelliJ IDEA CE",
+    "productShort": "IDEA",
+    "wmClass": "jetbrains-idea-ce",
+    "meta": {
+      "isOpenSource": true,
+      "description": "Free Java, Kotlin, Groovy and Scala IDE from jetbrains",
+      "maintainers": [ "edwtjo", "gytis-ivaskevicius", "steinybot", "AnatolyPopov", "tymscar" ],
+      "longDescription": "IDE for Java SE, Groovy & Scala development Powerful environment for building Google Android apps Integration with JUnit, TestNG, popular SCMs, Ant & Maven. Also known as IntelliJ.",
+      "homepage": "https://www.jetbrains.com/idea/"
+    }
+  },
+  "idea-ultimate": {
+    "product": "IntelliJ IDEA",
+    "productShort": "IDEA",
+    "wmClass": "jetbrains-idea",
+    "meta": {
+      "isOpenSource": false,
+      "description": "Paid-for Java, Kotlin, Groovy and Scala IDE from jetbrains",
+      "maintainers": [ "edwtjo", "gytis-ivaskevicius", "steinybot", "AnatolyPopov", "tymscar" ],
+      "longDescription": "IDE for Java SE, Groovy & Scala development Powerful environment for building Google Android apps Integration with JUnit, TestNG, popular SCMs, Ant & Maven. Also known as IntelliJ.",
+      "homepage": "https://www.jetbrains.com/idea/"
+    }
+  },
+  "mps": {
+    "product": "MPS",
+    "wmClass": "jetbrains-MPS",
+    "meta": {
+      "isOpenSource": false,
+      "description": "IDE for building domain-specific languages from JetBrains",
+      "maintainers": [ "rasendubi" ],
+      "longDescription": "A metaprogramming system which uses projectional editing which allows users to overcome the limits of language parsers, and build DSL editors, such as ones with tables and diagrams.",
+      "homepage": "https://www.jetbrains.com/mps/"
+    }
+  },
+  "phpstorm": {
+    "product": "PhpStorm",
+    "wmClass": "jetbrains-phpstorm",
+    "meta": {
+      "isOpenSource": false,
+      "description": "PHP IDE from JetBrains",
+      "maintainers": [ "dritter", "tymscar" ],
+      "longDescription": "PhpStorm provides an editor for PHP, HTML and JavaScript with on-the-fly code analysis, error prevention and automated refactorings for PHP and JavaScript code. ",
+      "homepage": "https://www.jetbrains.com/phpstorm/"
+    }
+  },
+  "pycharm-community": {
+    "product": "PyCharm CE",
+    "productShort": "PyCharm",
+    "wmClass": "jetbrains-pycharm-ce",
+    "meta": {
+      "isOpenSource": true,
+      "description": "Free Python IDE from JetBrains",
+      "maintainers": [ "genericnerdyusername", "tymscar" ],
+      "longDescription": "Python IDE with complete set of tools for productive development with Python programming language. In addition, the IDE provides high-class capabilities for professional Web development with Django framework and Google App Engine. It has powerful coding assistance, navigation, a lot of refactoring features, tight integration with various Version Control Systems, Unit testing, powerful all-singing all-dancing Debugger and entire customization. PyCharm is developer driven IDE. It was developed with the aim of providing you almost everything you need for your comfortable and productive development!",
+      "homepage": "https://www.jetbrains.com/pycharm/"
+    }
+  },
+  "pycharm-professional": {
+    "product": "PyCharm",
+    "productShort": "PyCharm",
+    "wmClass": "jetbrains-pycharm",
+    "meta": {
+      "isOpenSource": false,
+      "description": "Paid-for Python IDE from JetBrains",
+      "maintainers": [ "genericnerdyusername", "tymscar" ],
+      "longDescription": "Python IDE with complete set of tools for productive development with Python programming language. In addition, the IDE provides high-class capabilities for professional Web development with Django framework and Google App Engine. It has powerful coding assistance, navigation, a lot of refactoring features, tight integration with various Version Control Systems, Unit testing, powerful all-singing all-dancing Debugger and entire customization. PyCharm is developer driven IDE. It was developed with the aim of providing you almost everything you need for your comfortable and productive development!",
+      "homepage": "https://www.jetbrains.com/pycharm/"
+    }
+  },
+  "rider": {
+    "product": "Rider",
+    "wmClass": "jetbrains-rider",
+    "meta": {
+      "isOpenSource": false,
+      "description": ".NET IDE from JetBrains",
+      "maintainers": [ "raphaelr" ],
+      "longDescription": "JetBrains Rider is a new .NET IDE based on the IntelliJ platform and ReSharper. Rider supports .NET Core, .NET Framework and Mono based projects. This lets you develop a wide array of applications including .NET desktop apps, services and libraries, Unity games, ASP.NET and ASP.NET Core web applications.",
+      "homepage": "https://www.jetbrains.com/rider/"
+    }
+  },
+  "ruby-mine": {
+    "product": "RubyMine",
+    "wmClass": "jetbrains-rubymine",
+    "meta": {
+      "isOpenSource": false,
+      "description": "Ruby IDE from JetBrains",
+      "maintainers": [ "edwtjo", "tymscar"],
+      "longDescription": "Ruby IDE from JetBrains",
+      "homepage": "https://www.jetbrains.com/ruby/"
+    }
+  },
+  "rust-rover": {
+    "product": "RustRover",
+    "wmClass": "jetbrains-rustrover",
+    "meta": {
+      "isOpenSource": false,
+      "description": "Rust IDE from JetBrains",
+      "maintainers": [ "genericnerdyusername"],
+      "longDescription": "Rust IDE from JetBrains",
+      "homepage": "https://www.jetbrains.com/rust/"
+    }
+  },
+  "webstorm": {
+    "product": "WebStorm",
+    "wmClass": "jetbrains-webstorm",
+    "meta": {
+      "isOpenSource": false,
+      "description": "Web IDE from JetBrains",
+      "maintainers": [ "abaldeau", "tymscar"],
+      "longDescription": "WebStorm provides an editor for HTML, JavaScript (incl. Node.js), and CSS with on-the-fly code analysis, error prevention and automated refactorings for JavaScript code.",
+      "homepage": "https://www.jetbrains.com/webstorm/"
+    }
+  }
+}
diff --git a/nixpkgs/pkgs/applications/editors/jetbrains/bin/linux.nix b/nixpkgs/pkgs/applications/editors/jetbrains/bin/linux.nix
new file mode 100644
index 000000000000..d26fb9847dfc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/jetbrains/bin/linux.nix
@@ -0,0 +1,128 @@
+{ stdenv
+, lib
+, makeDesktopItem
+, makeWrapper
+, patchelf
+, writeText
+, coreutils
+, gnugrep
+, which
+, git
+, unzip
+, libsecret
+, libnotify
+, udev
+, e2fsprogs
+, python3
+, autoPatchelfHook
+, vmopts ? null
+}:
+
+{ pname
+, product
+, productShort ? product
+, version
+, src
+, wmClass
+, buildNumber
+, jdk
+, meta
+, libdbm
+, fsnotifier
+, extraLdPath ? [ ]
+, extraWrapperArgs ? [ ]
+, extraBuildInputs ? [ ]
+}@args:
+
+let
+  loName = lib.toLower productShort;
+  hiName = lib.toUpper productShort;
+  vmoptsName = loName
+    + lib.optionalString stdenv.hostPlatform.is64bit "64"
+    + ".vmoptions";
+in
+
+with stdenv; lib.makeOverridable mkDerivation (rec {
+  inherit pname version src;
+  passthru.buildNumber = buildNumber;
+  meta = args.meta // { mainProgram = pname; };
+
+  desktopItem = makeDesktopItem {
+    name = pname;
+    exec = pname;
+    comment = lib.replaceStrings [ "\n" ] [ " " ] meta.longDescription;
+    desktopName = product;
+    genericName = meta.description;
+    categories = [ "Development" ];
+    icon = pname;
+    startupWMClass = wmClass;
+  };
+
+  vmoptsFile = lib.optionalString (vmopts != null) (writeText vmoptsName vmopts);
+
+  nativeBuildInputs = [ makeWrapper patchelf unzip autoPatchelfHook ];
+  buildInputs = extraBuildInputs;
+
+  postPatch = ''
+    rm -rf jbr
+    # When using the IDE as a remote backend using gateway, it expects the jbr directory to contain the jdk
+    ln -s ${jdk.home} jbr
+
+    if [ -d "plugins/remote-dev-server" ]; then
+      patch -p1 < ${../patches/jetbrains-remote-dev.patch}
+    fi
+
+    vmopts_file=bin/linux/${vmoptsName}
+    if [[ ! -f $vmopts_file ]]; then
+      vmopts_file=bin/${vmoptsName}
+      if [[ ! -f $vmopts_file ]]; then
+        echo "ERROR: $vmopts_file not found"
+        exit 1
+      fi
+    fi
+    echo -Djna.library.path=${lib.makeLibraryPath ([
+      libsecret e2fsprogs libnotify
+      # Required for Help -> Collect Logs
+      # in at least rider and goland
+      udev
+    ])} >> $vmopts_file
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/{bin,$pname,share/pixmaps,share/icons/hicolor/scalable/apps}
+    cp -a . $out/$pname
+    [[ -f $out/$pname/bin/${loName}.png ]] && ln -s $out/$pname/bin/${loName}.png $out/share/pixmaps/${pname}.png
+    [[ -f $out/$pname/bin/${loName}.svg ]] && ln -s $out/$pname/bin/${loName}.svg $out/share/pixmaps/${pname}.svg \
+      && ln -s $out/$pname/bin/${loName}.svg $out/share/icons/hicolor/scalable/apps/${pname}.svg
+    cp ${libdbm}/lib/libdbm.so $out/$pname/bin/libdbm.so
+    cp ${fsnotifier}/bin/fsnotifier $out/$pname/bin/fsnotifier
+
+    jdk=${jdk.home}
+    item=${desktopItem}
+
+    wrapProgram  "$out/$pname/bin/${loName}.sh" \
+      --prefix PATH : "${lib.makeBinPath [ jdk coreutils gnugrep which git ]}" \
+      --suffix PATH : "${lib.makeBinPath [ python3 ]}" \
+      --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath extraLdPath}" \
+      ${lib.concatStringsSep " " extraWrapperArgs} \
+      --set-default JDK_HOME "$jdk" \
+      --set-default ANDROID_JAVA_HOME "$jdk" \
+      --set-default JAVA_HOME "$jdk" \
+      --set-default JETBRAINSCLIENT_JDK "$jdk" \
+      --set-default ${hiName}_JDK "$jdk" \
+      --set-default ${hiName}_VM_OPTIONS ${vmoptsFile}
+
+    ln -s "$out/$pname/bin/${loName}.sh" $out/bin/$pname
+    rm -rf $out/$pname/plugins/remote-dev-server/selfcontained/
+    echo -e '#!/usr/bin/env bash\n'"$out/$pname/bin/remote-dev-server.sh"' "$@"' > $out/$pname/bin/remote-dev-server-wrapped.sh
+    chmod +x $out/$pname/bin/remote-dev-server-wrapped.sh
+    ln -s "$out/$pname/bin/remote-dev-server-wrapped.sh" $out/bin/$pname-remote-dev-server
+    ln -s "$item/share/applications" $out/share
+
+    runHook postInstall
+  '';
+} // lib.optionalAttrs (!(meta.license.free or true)) {
+  preferLocalBuild = true;
+})
diff --git a/nixpkgs/pkgs/applications/editors/jetbrains/bin/update_bin.py b/nixpkgs/pkgs/applications/editors/jetbrains/bin/update_bin.py
new file mode 100755
index 000000000000..31271d1dffed
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/jetbrains/bin/update_bin.py
@@ -0,0 +1,131 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i python3 -p python3 python3.pkgs.packaging python3.pkgs.requests python3.pkgs.xmltodict
+import json
+import pathlib
+import logging
+import requests
+import subprocess
+import sys
+import xmltodict
+from packaging import version
+
+updates_url = "https://www.jetbrains.com/updates/updates.xml"
+current_path = pathlib.Path(__file__).parent
+versions_file_path = current_path.joinpath("versions.json").resolve()
+fromVersions = {}
+toVersions = {}
+
+logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
+
+
+def one_or_more(x):
+    return x if isinstance(x, list) else [x]
+
+
+def download_channels():
+    logging.info("Checking for updates from %s", updates_url)
+    updates_response = requests.get(updates_url)
+    updates_response.raise_for_status()
+    root = xmltodict.parse(updates_response.text)
+    products = root["products"]["product"]
+    return {
+        channel["@name"]: channel
+        for product in products
+        if "channel" in product
+        for channel in one_or_more(product["channel"])
+    }
+
+
+def build_version(build):
+    build_number = build["@fullNumber"] if "@fullNumber" in build else build["@number"]
+    return version.parse(build_number)
+
+
+def latest_build(channel):
+    builds = one_or_more(channel["build"])
+    latest = max(builds, key=build_version)
+    return latest
+
+
+def download_sha256(url):
+    url = f"{url}.sha256"
+    download_response = requests.get(url)
+    download_response.raise_for_status()
+    return download_response.content.decode('UTF-8').split(' ')[0]
+
+
+channels = download_channels()
+
+
+def update_product(name, product):
+    update_channel = product["update-channel"]
+    logging.info("Updating %s", name)
+    channel = channels.get(update_channel)
+    if channel is None:
+        logging.error("Failed to find channel %s.", update_channel)
+        logging.error("Check that the update-channel in %s matches the name in %s", versions_file_path, updates_url)
+    else:
+        try:
+            build = latest_build(channel)
+            new_version = build["@version"]
+            new_build_number = build["@fullNumber"]
+            if "EAP" not in channel["@name"]:
+                version_or_build_number = new_version
+            else:
+                version_or_build_number = new_build_number
+            version_number = new_version.split(' ')[0]
+            download_url = product["url-template"].format(version=version_or_build_number, versionMajorMinor=version_number)
+            product["url"] = download_url
+            if "sha256" not in product or product.get("build_number") != new_build_number:
+                fromVersions[name] = product["version"]
+                toVersions[name] = new_version
+                logging.info("Found a newer version %s with build number %s.", new_version, new_build_number)
+                product["version"] = new_version
+                product["build_number"] = new_build_number
+                product["sha256"] = download_sha256(download_url)
+            else:
+                logging.info("Already at the latest version %s with build number %s.", new_version, new_build_number)
+        except Exception as e:
+            logging.exception("Update failed:", exc_info=e)
+            logging.warning("Skipping %s due to the above error.", name)
+            logging.warning("It may be out-of-date. Fix the error and rerun.")
+
+
+def update_products(products):
+    for name, product in products.items():
+        update_product(name, product)
+
+
+with open(versions_file_path, "r") as versions_file:
+    versions = json.load(versions_file)
+
+for products in versions.values():
+    update_products(products)
+
+with open(versions_file_path, "w") as versions_file:
+    json.dump(versions, versions_file, indent=2)
+    versions_file.write("\n")
+
+if len(toVersions) == 0:
+    # No Updates found
+    sys.exit(0)
+
+if len(toVersions) == 1:
+    commitMessage = ""
+else:
+    lowestVersion = min(fromVersions.values())
+    highestVersion = max(toVersions.values())
+    commitMessage = f"jetbrains: {lowestVersion} -> {highestVersion}"
+    commitMessage += "\n\n"
+
+for name in toVersions.keys():
+    commitMessage += f"jetbrains.{name}: {fromVersions[name]} -> {toVersions[name]}\n"
+
+# Commit the result
+logging.info("#### Committing changes... ####")
+subprocess.run(['git', 'commit', f'-m{commitMessage}', '--', f'{versions_file_path}'], check=True)
+
+logging.info("#### Updating plugins ####")
+plugin_script = current_path.joinpath("../plugins/update_plugins.py").resolve()
+subprocess.call(plugin_script)
+
diff --git a/nixpkgs/pkgs/applications/editors/jetbrains/bin/versions.json b/nixpkgs/pkgs/applications/editors/jetbrains/bin/versions.json
new file mode 100644
index 000000000000..79e85f6f8022
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/jetbrains/bin/versions.json
@@ -0,0 +1,494 @@
+{
+  "x86_64-linux": {
+    "clion": {
+      "update-channel": "CLion RELEASE",
+      "url-template": "https://download.jetbrains.com/cpp/CLion-{version}.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "3cde2fc25c759d4e114c5a768547e1d3083710e0fbe2591084a4ad4934490fc9",
+      "url": "https://download.jetbrains.com/cpp/CLion-2023.3.1.tar.gz",
+      "build_number": "233.11799.287"
+    },
+    "datagrip": {
+      "update-channel": "DataGrip RELEASE",
+      "url-template": "https://download.jetbrains.com/datagrip/datagrip-{version}.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "4177882deb0380fba9b426c2580baea7dc4297bddefdd7bfb094433ff4cbb7b8",
+      "url": "https://download.jetbrains.com/datagrip/datagrip-2023.3.1.tar.gz",
+      "build_number": "233.11799.296"
+    },
+    "dataspell": {
+      "update-channel": "DataSpell RELEASE",
+      "url-template": "https://download.jetbrains.com/python/dataspell-{version}.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "0b5196dcc146cb163b1c9797986c46c651ad8132d3ee78dca92f9f9081f9f7e9",
+      "url": "https://download.jetbrains.com/python/dataspell-2023.3.1.tar.gz",
+      "build_number": "233.11799.285"
+    },
+    "gateway": {
+      "update-channel": "Gateway RELEASE",
+      "url-template": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}.tar.gz",
+      "version": "2023.3",
+      "sha256": "ecf0cdc671d83ba6b9251ab1ad0d40bc6ca86ea577437aa2d4b9fe5aa0449fad",
+      "url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-2023.3.tar.gz",
+      "build_number": "233.11799.240"
+    },
+    "goland": {
+      "update-channel": "GoLand RELEASE",
+      "url-template": "https://download.jetbrains.com/go/goland-{version}.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "2fafd8f76979b174c598e58b6e39d2d796eef8e69d28da28abcb7a5c260992d6",
+      "url": "https://download.jetbrains.com/go/goland-2023.3.1.tar.gz",
+      "build_number": "233.11799.286"
+    },
+    "idea-community": {
+      "update-channel": "IntelliJ IDEA RELEASE",
+      "url-template": "https://download.jetbrains.com/idea/ideaIC-{version}.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "7afd70b71e1fcb8280393d59ec58ab72f2ccf369f5d6e0035e6b265600531e4a",
+      "url": "https://download.jetbrains.com/idea/ideaIC-2023.3.1.tar.gz",
+      "build_number": "233.11799.300"
+    },
+    "idea-ultimate": {
+      "update-channel": "IntelliJ IDEA RELEASE",
+      "url-template": "https://download.jetbrains.com/idea/ideaIU-{version}.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "0a80d971e430786492acfd04e4ba73eda2e4ee60f752e3f9494a4476c6cad761",
+      "url": "https://download.jetbrains.com/idea/ideaIU-2023.3.1.tar.gz",
+      "build_number": "233.11799.300"
+    },
+    "mps": {
+      "update-channel": "MPS RELEASE",
+      "url-template": "https://download.jetbrains.com/mps/{versionMajorMinor}/MPS-{version}.tar.gz",
+      "version": "2023.2",
+      "sha256": "10d85eee914e23691f8512745eaa044ee33e0ca784fb84a1b0a39852d5ec1014",
+      "url": "https://download.jetbrains.com/mps/2023.2/MPS-2023.2.tar.gz",
+      "build_number": "232.10072.781"
+    },
+    "phpstorm": {
+      "update-channel": "PhpStorm RELEASE",
+      "url-template": "https://download.jetbrains.com/webide/PhpStorm-{version}.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "c8b034014e17c58def72aa351e44a441ca516403f795acef5325e964d5179983",
+      "url": "https://download.jetbrains.com/webide/PhpStorm-2023.3.1.tar.gz",
+      "build_number": "233.11799.297",
+      "version-major-minor": "2022.3"
+    },
+    "pycharm-community": {
+      "update-channel": "PyCharm RELEASE",
+      "url-template": "https://download.jetbrains.com/python/pycharm-community-{version}.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "95a03ad8abf2400e9691bb10b13d47407abfcbc25192cf3773e1a2dab42c0499",
+      "url": "https://download.jetbrains.com/python/pycharm-community-2023.3.1.tar.gz",
+      "build_number": "233.11799.298"
+    },
+    "pycharm-professional": {
+      "update-channel": "PyCharm RELEASE",
+      "url-template": "https://download.jetbrains.com/python/pycharm-professional-{version}.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "f3a09cd2aebd2ffbc42f927467a613e55430d3ff76d57c263d31ccee3c1de110",
+      "url": "https://download.jetbrains.com/python/pycharm-professional-2023.3.1.tar.gz",
+      "build_number": "233.11799.298"
+    },
+    "rider": {
+      "update-channel": "Rider RELEASE",
+      "url-template": "https://download.jetbrains.com/rider/JetBrains.Rider-{version}.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "07dfbdc277d2befdb2700f515167b9bcb6464dd6d9fe59f98147c03233b6aa75",
+      "url": "https://download.jetbrains.com/rider/JetBrains.Rider-2023.3.1.tar.gz",
+      "build_number": "233.11799.303"
+    },
+    "ruby-mine": {
+      "update-channel": "RubyMine RELEASE",
+      "url-template": "https://download.jetbrains.com/ruby/RubyMine-{version}.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "35cd23c7a0f73add6ba05f246707e2f2550185033172f5d42a6b02e750253115",
+      "url": "https://download.jetbrains.com/ruby/RubyMine-2023.3.1.tar.gz",
+      "build_number": "233.11799.290"
+    },
+    "rust-rover": {
+      "update-channel": "RustRover EAP",
+      "url-template": "https://download.jetbrains.com/rustrover/RustRover-{version}.tar.gz",
+      "version": "2023.3 EAP",
+      "sha256": "07524c044de4565cbf052f9980044aa6c6e28064eefb3033587afa1e09ff69bf",
+      "url": "https://download.jetbrains.com/rustrover/RustRover-233.11799.284.tar.gz",
+      "build_number": "233.11799.284"
+    },
+    "webstorm": {
+      "update-channel": "WebStorm RELEASE",
+      "url-template": "https://download.jetbrains.com/webstorm/WebStorm-{version}.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "26a3acc9864c2c7715d377059d3b52b1085b90b708b254ec2d52b80f625eb442",
+      "url": "https://download.jetbrains.com/webstorm/WebStorm-2023.3.1.tar.gz",
+      "build_number": "233.11799.293"
+    }
+  },
+  "aarch64-linux": {
+    "clion": {
+      "update-channel": "CLion RELEASE",
+      "url-template": "https://download.jetbrains.com/cpp/CLion-{version}-aarch64.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "8aa207ee92f518fafc93b5a3bece67f15ce65ee18b8e6c28a393e8dbc0a5ef4f",
+      "url": "https://download.jetbrains.com/cpp/CLion-2023.3.1-aarch64.tar.gz",
+      "build_number": "233.11799.287"
+    },
+    "datagrip": {
+      "update-channel": "DataGrip RELEASE",
+      "url-template": "https://download.jetbrains.com/datagrip/datagrip-{version}-aarch64.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "dd76187e8598fd0e450b76e54767ca321e3e61f11d745a191b9039f71914b003",
+      "url": "https://download.jetbrains.com/datagrip/datagrip-2023.3.1-aarch64.tar.gz",
+      "build_number": "233.11799.296"
+    },
+    "dataspell": {
+      "update-channel": "DataSpell RELEASE",
+      "url-template": "https://download.jetbrains.com/python/dataspell-{version}-aarch64.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "ad49e53b159e321f07dc7b9f53a25a3a936cf49b5bffcf46357e5a80b1913ea9",
+      "url": "https://download.jetbrains.com/python/dataspell-2023.3.1-aarch64.tar.gz",
+      "build_number": "233.11799.285"
+    },
+    "gateway": {
+      "update-channel": "Gateway RELEASE",
+      "url-template": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}-aarch64.tar.gz",
+      "version": "2023.3",
+      "sha256": "053f72669c30583b0cc4dce08b56cfcdd3252087e8f4b71986178e364c69b585",
+      "url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-2023.3-aarch64.tar.gz",
+      "build_number": "233.11799.240"
+    },
+    "goland": {
+      "update-channel": "GoLand RELEASE",
+      "url-template": "https://download.jetbrains.com/go/goland-{version}-aarch64.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "87276008be7143efa3ad965194b4e5baf9528e59f9db5f6e5f856f0e0bb1554f",
+      "url": "https://download.jetbrains.com/go/goland-2023.3.1-aarch64.tar.gz",
+      "build_number": "233.11799.286"
+    },
+    "idea-community": {
+      "update-channel": "IntelliJ IDEA RELEASE",
+      "url-template": "https://download.jetbrains.com/idea/ideaIC-{version}-aarch64.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "3a53972b56c9135c8ad1fb0c0d9d3ded2c79120f8e5461de272954f58c3637b4",
+      "url": "https://download.jetbrains.com/idea/ideaIC-2023.3.1-aarch64.tar.gz",
+      "build_number": "233.11799.300"
+    },
+    "idea-ultimate": {
+      "update-channel": "IntelliJ IDEA RELEASE",
+      "url-template": "https://download.jetbrains.com/idea/ideaIU-{version}-aarch64.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "cf6e7dc7d6ba1a7e807d80316364e51ee2e23aa471ab19ada93aff8fc9b1627d",
+      "url": "https://download.jetbrains.com/idea/ideaIU-2023.3.1-aarch64.tar.gz",
+      "build_number": "233.11799.300"
+    },
+    "mps": {
+      "update-channel": "MPS RELEASE",
+      "url-template": "https://download.jetbrains.com/mps/{versionMajorMinor}/MPS-{version}.tar.gz",
+      "version": "2023.2",
+      "sha256": "10d85eee914e23691f8512745eaa044ee33e0ca784fb84a1b0a39852d5ec1014",
+      "url": "https://download.jetbrains.com/mps/2023.2/MPS-2023.2.tar.gz",
+      "build_number": "232.10072.781"
+    },
+    "phpstorm": {
+      "update-channel": "PhpStorm RELEASE",
+      "url-template": "https://download.jetbrains.com/webide/PhpStorm-{version}-aarch64.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "c3c04f463beb798da48d08188980cde1505795c6f2cfaf788c9bca94f0f3c2d7",
+      "url": "https://download.jetbrains.com/webide/PhpStorm-2023.3.1-aarch64.tar.gz",
+      "build_number": "233.11799.297",
+      "version-major-minor": "2022.3"
+    },
+    "pycharm-community": {
+      "update-channel": "PyCharm RELEASE",
+      "url-template": "https://download.jetbrains.com/python/pycharm-community-{version}-aarch64.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "1b9a0c950d232d4a0418203dbbff19ba73279cbc933789d11c2a81ce80d0b485",
+      "url": "https://download.jetbrains.com/python/pycharm-community-2023.3.1-aarch64.tar.gz",
+      "build_number": "233.11799.298"
+    },
+    "pycharm-professional": {
+      "update-channel": "PyCharm RELEASE",
+      "url-template": "https://download.jetbrains.com/python/pycharm-professional-{version}-aarch64.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "eb649602ebd2212575631db51569029e3683a9f4842b5e506c1f2b573a777749",
+      "url": "https://download.jetbrains.com/python/pycharm-professional-2023.3.1-aarch64.tar.gz",
+      "build_number": "233.11799.298"
+    },
+    "rider": {
+      "update-channel": "Rider RELEASE",
+      "url-template": "https://download.jetbrains.com/rider/JetBrains.Rider-{version}-aarch64.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "0a8328ce72821dc779724b4eb46ff8da98a374e178f5f0830141667371231ba6",
+      "url": "https://download.jetbrains.com/rider/JetBrains.Rider-2023.3.1-aarch64.tar.gz",
+      "build_number": "233.11799.303"
+    },
+    "ruby-mine": {
+      "update-channel": "RubyMine RELEASE",
+      "url-template": "https://download.jetbrains.com/ruby/RubyMine-{version}-aarch64.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "6c77b39006410a580d9e46bb7a44b8a524414b1e38e61042be839eff10021fac",
+      "url": "https://download.jetbrains.com/ruby/RubyMine-2023.3.1-aarch64.tar.gz",
+      "build_number": "233.11799.290"
+    },
+    "rust-rover": {
+      "update-channel": "RustRover EAP",
+      "url-template": "https://download.jetbrains.com/rustrover/RustRover-{version}-aarch64.tar.gz",
+      "version": "2023.3 EAP",
+      "sha256": "62b276acfb0c0233e84dd332cad95d84dc5d751e04e51cad6f0675e676674594",
+      "url": "https://download.jetbrains.com/rustrover/RustRover-233.11799.284-aarch64.tar.gz",
+      "build_number": "233.11799.284"
+    },
+    "webstorm": {
+      "update-channel": "WebStorm RELEASE",
+      "url-template": "https://download.jetbrains.com/webstorm/WebStorm-{version}-aarch64.tar.gz",
+      "version": "2023.3.1",
+      "sha256": "2de348e4df2ce5fb4f9da1b2f17fa30c359a97aec499329aaea8d1bdf12fd4eb",
+      "url": "https://download.jetbrains.com/webstorm/WebStorm-2023.3.1-aarch64.tar.gz",
+      "build_number": "233.11799.293"
+    }
+  },
+  "x86_64-darwin": {
+    "clion": {
+      "update-channel": "CLion RELEASE",
+      "url-template": "https://download.jetbrains.com/cpp/CLion-{version}.dmg",
+      "version": "2023.3.1",
+      "sha256": "199745463dee1f1a0c7f52b4fa5cc6a68121311d951a594cb4ce77fa4ed5ce2d",
+      "url": "https://download.jetbrains.com/cpp/CLion-2023.3.1.dmg",
+      "build_number": "233.11799.287"
+    },
+    "datagrip": {
+      "update-channel": "DataGrip RELEASE",
+      "url-template": "https://download.jetbrains.com/datagrip/datagrip-{version}.dmg",
+      "version": "2023.3.1",
+      "sha256": "eb37ad83ecd5a74cbbdca5300e57e18ff9f946b0986b023921da07691b54498d",
+      "url": "https://download.jetbrains.com/datagrip/datagrip-2023.3.1.dmg",
+      "build_number": "233.11799.296"
+    },
+    "dataspell": {
+      "update-channel": "DataSpell RELEASE",
+      "url-template": "https://download.jetbrains.com/python/dataspell-{version}.dmg",
+      "version": "2023.3.1",
+      "sha256": "4d6874a2bfecd3625808f1d6ce23c49974ce10cec482ed3a42e001bc6f7c720b",
+      "url": "https://download.jetbrains.com/python/dataspell-2023.3.1.dmg",
+      "build_number": "233.11799.285"
+    },
+    "gateway": {
+      "update-channel": "Gateway RELEASE",
+      "url-template": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}.dmg",
+      "version": "2023.3",
+      "sha256": "17fb60d9a13fc561e24054a651b2576426df43e4ec6ea6a07a7ce65648d9df5d",
+      "url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-2023.3.dmg",
+      "build_number": "233.11799.240"
+    },
+    "goland": {
+      "update-channel": "GoLand RELEASE",
+      "url-template": "https://download.jetbrains.com/go/goland-{version}.dmg",
+      "version": "2023.3.1",
+      "sha256": "56c2e20dcac8b86da4cd4d9a52c061fd9839b968ee0f2960084a52ac1c2dfbbf",
+      "url": "https://download.jetbrains.com/go/goland-2023.3.1.dmg",
+      "build_number": "233.11799.286"
+    },
+    "idea-community": {
+      "update-channel": "IntelliJ IDEA RELEASE",
+      "url-template": "https://download.jetbrains.com/idea/ideaIC-{version}.dmg",
+      "version": "2023.3.1",
+      "sha256": "e65b75aa6fa957880f5e0b435d8eaea570a9f4408caa7e7475a90b5e1017cd2a",
+      "url": "https://download.jetbrains.com/idea/ideaIC-2023.3.1.dmg",
+      "build_number": "233.11799.300"
+    },
+    "idea-ultimate": {
+      "update-channel": "IntelliJ IDEA RELEASE",
+      "url-template": "https://download.jetbrains.com/idea/ideaIU-{version}.dmg",
+      "version": "2023.3.1",
+      "sha256": "06cddba143c5e5c6fdf9a733a79d05e3f9c41eb96469000dbd7577d74686747c",
+      "url": "https://download.jetbrains.com/idea/ideaIU-2023.3.1.dmg",
+      "build_number": "233.11799.300"
+    },
+    "mps": {
+      "update-channel": "MPS RELEASE",
+      "url-template": "https://download.jetbrains.com/mps/{versionMajorMinor}/MPS-{version}-macos.dmg",
+      "version": "2023.2",
+      "sha256": "11a635432beaca5809fe0253303d07444a0bfd6fac287c72e7b03e7a9f1a59e4",
+      "url": "https://download.jetbrains.com/mps/2023.2/MPS-2023.2-macos.dmg",
+      "build_number": "232.10072.781"
+    },
+    "phpstorm": {
+      "update-channel": "PhpStorm RELEASE",
+      "url-template": "https://download.jetbrains.com/webide/PhpStorm-{version}.dmg",
+      "version": "2023.3.1",
+      "sha256": "dbf18efa0be9a029e09ecbc7f82f901643d81c2f96e75f73ec5ef12092c1008a",
+      "url": "https://download.jetbrains.com/webide/PhpStorm-2023.3.1.dmg",
+      "build_number": "233.11799.297",
+      "version-major-minor": "2022.3"
+    },
+    "pycharm-community": {
+      "update-channel": "PyCharm RELEASE",
+      "url-template": "https://download.jetbrains.com/python/pycharm-community-{version}.dmg",
+      "version": "2023.3.1",
+      "sha256": "48aabc8cc464c02a868527cda7a0fec7c3cb0339c1a6ad46590e2e2aa1530317",
+      "url": "https://download.jetbrains.com/python/pycharm-community-2023.3.1.dmg",
+      "build_number": "233.11799.298"
+    },
+    "pycharm-professional": {
+      "update-channel": "PyCharm RELEASE",
+      "url-template": "https://download.jetbrains.com/python/pycharm-professional-{version}.dmg",
+      "version": "2023.3.1",
+      "sha256": "ddb6f52803e1774bcf1d965b0dece128d152579a8c773dc65b06b44b70a0b395",
+      "url": "https://download.jetbrains.com/python/pycharm-professional-2023.3.1.dmg",
+      "build_number": "233.11799.298"
+    },
+    "rider": {
+      "update-channel": "Rider RELEASE",
+      "url-template": "https://download.jetbrains.com/rider/JetBrains.Rider-{version}.dmg",
+      "version": "2023.3.1",
+      "sha256": "b076dfca4fbe732190176d62defb0c5a99885861a1aeab72a6d105b66e4a47ca",
+      "url": "https://download.jetbrains.com/rider/JetBrains.Rider-2023.3.1.dmg",
+      "build_number": "233.11799.303"
+    },
+    "ruby-mine": {
+      "update-channel": "RubyMine RELEASE",
+      "url-template": "https://download.jetbrains.com/ruby/RubyMine-{version}.dmg",
+      "version": "2023.3.1",
+      "sha256": "4cce817269f230684ff08318ace108d54b9dded525048faf4a1787eff8ba4dc0",
+      "url": "https://download.jetbrains.com/ruby/RubyMine-2023.3.1.dmg",
+      "build_number": "233.11799.290"
+    },
+    "rust-rover": {
+      "update-channel": "RustRover EAP",
+      "url-template": "https://download.jetbrains.com/rustrover/RustRover-{version}.dmg",
+      "version": "2023.3 EAP",
+      "sha256": "2ec2563a94abf3b873709c27cb81692fb0fbff44ee42b275cc38d0dc3c74e7af",
+      "url": "https://download.jetbrains.com/rustrover/RustRover-233.11799.284.dmg",
+      "build_number": "233.11799.284"
+    },
+    "webstorm": {
+      "update-channel": "WebStorm RELEASE",
+      "url-template": "https://download.jetbrains.com/webstorm/WebStorm-{version}.dmg",
+      "version": "2023.3.1",
+      "sha256": "94cfc4db7574607555039c65a4bc6ecbb900192c19744bf9082ce9dfea5c7667",
+      "url": "https://download.jetbrains.com/webstorm/WebStorm-2023.3.1.dmg",
+      "build_number": "233.11799.293"
+    }
+  },
+  "aarch64-darwin": {
+    "clion": {
+      "update-channel": "CLion RELEASE",
+      "url-template": "https://download.jetbrains.com/cpp/CLion-{version}-aarch64.dmg",
+      "version": "2023.3.1",
+      "sha256": "d8b0dfeb8a4b15339f296c90b0535cdc5b0b25ba3cbbfe2601f04a24a4289b95",
+      "url": "https://download.jetbrains.com/cpp/CLion-2023.3.1-aarch64.dmg",
+      "build_number": "233.11799.287"
+    },
+    "datagrip": {
+      "update-channel": "DataGrip RELEASE",
+      "url-template": "https://download.jetbrains.com/datagrip/datagrip-{version}-aarch64.dmg",
+      "version": "2023.3.1",
+      "sha256": "c8a3d4c3679da1961f186d0d4fedc6510d8f967ceebe0cd34d867249f5729f34",
+      "url": "https://download.jetbrains.com/datagrip/datagrip-2023.3.1-aarch64.dmg",
+      "build_number": "233.11799.296"
+    },
+    "dataspell": {
+      "update-channel": "DataSpell RELEASE",
+      "url-template": "https://download.jetbrains.com/python/dataspell-{version}-aarch64.dmg",
+      "version": "2023.3.1",
+      "sha256": "0dbdfe1c24334dc2b4e27c0390862343041c07fb4abeb00b0eeb6db5b7171e83",
+      "url": "https://download.jetbrains.com/python/dataspell-2023.3.1-aarch64.dmg",
+      "build_number": "233.11799.285"
+    },
+    "gateway": {
+      "update-channel": "Gateway RELEASE",
+      "url-template": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}-aarch64.dmg",
+      "version": "2023.3",
+      "sha256": "917a01af3f455fc8c6e72f838b9fe449f100ff0b7c93631cb7e778c5edee09ba",
+      "url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-2023.3-aarch64.dmg",
+      "build_number": "233.11799.240"
+    },
+    "goland": {
+      "update-channel": "GoLand RELEASE",
+      "url-template": "https://download.jetbrains.com/go/goland-{version}-aarch64.dmg",
+      "version": "2023.3.1",
+      "sha256": "b0e29f8a5470c7b5de7565faacf90f206e6a353f1afaecc239899d66dbae48d8",
+      "url": "https://download.jetbrains.com/go/goland-2023.3.1-aarch64.dmg",
+      "build_number": "233.11799.286"
+    },
+    "idea-community": {
+      "update-channel": "IntelliJ IDEA RELEASE",
+      "url-template": "https://download.jetbrains.com/idea/ideaIC-{version}-aarch64.dmg",
+      "version": "2023.3.1",
+      "sha256": "0630913d6730073f8f06a26ef51a6b2e0599d93a5809718e74046bfea3023a86",
+      "url": "https://download.jetbrains.com/idea/ideaIC-2023.3.1-aarch64.dmg",
+      "build_number": "233.11799.300"
+    },
+    "idea-ultimate": {
+      "update-channel": "IntelliJ IDEA RELEASE",
+      "url-template": "https://download.jetbrains.com/idea/ideaIU-{version}-aarch64.dmg",
+      "version": "2023.3.1",
+      "sha256": "3f9bb300298dc900da342ee437e9475e762997095408c8b725ab499fec49e7bf",
+      "url": "https://download.jetbrains.com/idea/ideaIU-2023.3.1-aarch64.dmg",
+      "build_number": "233.11799.300"
+    },
+    "mps": {
+      "update-channel": "MPS RELEASE",
+      "url-template": "https://download.jetbrains.com/mps/{versionMajorMinor}/MPS-{version}-macos-aarch64.dmg",
+      "version": "2023.2",
+      "url": "https://download.jetbrains.com/mps/2023.2/MPS-2023.2-macos-aarch64.dmg",
+      "sha256": "a19ecd8a109783e9d2260cc18f48ac97e52a0bc00ee29df5ccf711a80d1701eb",
+      "build_number": "232.10072.781"
+    },
+    "phpstorm": {
+      "update-channel": "PhpStorm RELEASE",
+      "url-template": "https://download.jetbrains.com/webide/PhpStorm-{version}-aarch64.dmg",
+      "version": "2023.3.1",
+      "sha256": "15cc0735cd2073d9e5a9bbbefa8d973cf05eabfd8fab0f77bd137e72cfd7f31c",
+      "url": "https://download.jetbrains.com/webide/PhpStorm-2023.3.1-aarch64.dmg",
+      "build_number": "233.11799.297",
+      "version-major-minor": "2022.3"
+    },
+    "pycharm-community": {
+      "update-channel": "PyCharm RELEASE",
+      "url-template": "https://download.jetbrains.com/python/pycharm-community-{version}-aarch64.dmg",
+      "version": "2023.3.1",
+      "sha256": "d4c425bb640dd8984706abd1e875db037feec5828737bf050e09f0ee7af4732c",
+      "url": "https://download.jetbrains.com/python/pycharm-community-2023.3.1-aarch64.dmg",
+      "build_number": "233.11799.298"
+    },
+    "pycharm-professional": {
+      "update-channel": "PyCharm RELEASE",
+      "url-template": "https://download.jetbrains.com/python/pycharm-professional-{version}-aarch64.dmg",
+      "version": "2023.3.1",
+      "sha256": "c57ebac6ab0d7b01b53a600da675a16c8eb853d7bba9c9324d16f99f5a198874",
+      "url": "https://download.jetbrains.com/python/pycharm-professional-2023.3.1-aarch64.dmg",
+      "build_number": "233.11799.298"
+    },
+    "rider": {
+      "update-channel": "Rider RELEASE",
+      "url-template": "https://download.jetbrains.com/rider/JetBrains.Rider-{version}-aarch64.dmg",
+      "version": "2023.3.1",
+      "sha256": "ddb85ddf7636c45f911848a76daa92a6ba7cd3c428f28d7d89ecf44db2b93bdc",
+      "url": "https://download.jetbrains.com/rider/JetBrains.Rider-2023.3.1-aarch64.dmg",
+      "build_number": "233.11799.303"
+    },
+    "ruby-mine": {
+      "update-channel": "RubyMine RELEASE",
+      "url-template": "https://download.jetbrains.com/ruby/RubyMine-{version}-aarch64.dmg",
+      "version": "2023.3.1",
+      "sha256": "5999eefdce0738a5599ce7f35455e228e5c964b26924f947c6839a9aee561204",
+      "url": "https://download.jetbrains.com/ruby/RubyMine-2023.3.1-aarch64.dmg",
+      "build_number": "233.11799.290"
+    },
+    "rust-rover": {
+      "update-channel": "RustRover EAP",
+      "url-template": "https://download.jetbrains.com/rustrover/RustRover-{version}-aarch64.dmg",
+      "version": "2023.3 EAP",
+      "sha256": "beff1ad500e58cb150ef05ab66de69dab2b609ff7da836a4ee04d701d9d41e76",
+      "url": "https://download.jetbrains.com/rustrover/RustRover-233.11799.284-aarch64.dmg",
+      "build_number": "233.11799.284"
+    },
+    "webstorm": {
+      "update-channel": "WebStorm RELEASE",
+      "url-template": "https://download.jetbrains.com/webstorm/WebStorm-{version}-aarch64.dmg",
+      "version": "2023.3.1",
+      "sha256": "daca106f82dcefe66f00c1d34ed628f7b03db596c8852d855a1dfdd7066fd659",
+      "url": "https://download.jetbrains.com/webstorm/WebStorm-2023.3.1-aarch64.dmg",
+      "build_number": "233.11799.293"
+    }
+  }
+}