From a6a1e5e52d40989c13e53375f7c4eafcdb449809 Mon Sep 17 00:00:00 2001 From: Harrison Ravazzolo <38767391+harrisonravazzolo@users.noreply.github.com> Date: Mon, 24 Nov 2025 17:06:52 -0800 Subject: [PATCH] macOS FMA: Rider (#36234) Co-authored-by: Allen Houchins <32207388+allenhouchins@users.noreply.github.com> --- ee/maintained-apps/inputs/homebrew/rider.json | 8 +++++++ ee/maintained-apps/outputs/apps.json | 7 ++++++ ee/maintained-apps/outputs/rider/darwin.json | 21 ++++++++++++++++++ .../SoftwarePage/components/icons/Rider.tsx | 14 ++++++++++++ .../assets/images/app-icon-rider-60x60@2x.png | Bin 0 -> 12722 bytes 5 files changed, 50 insertions(+) create mode 100644 ee/maintained-apps/inputs/homebrew/rider.json create mode 100644 ee/maintained-apps/outputs/rider/darwin.json create mode 100644 frontend/pages/SoftwarePage/components/icons/Rider.tsx create mode 100644 website/assets/images/app-icon-rider-60x60@2x.png diff --git a/ee/maintained-apps/inputs/homebrew/rider.json b/ee/maintained-apps/inputs/homebrew/rider.json new file mode 100644 index 0000000000..6939ee741e --- /dev/null +++ b/ee/maintained-apps/inputs/homebrew/rider.json @@ -0,0 +1,8 @@ +{ + "name": "Rider", + "unique_identifier": "com.jetbrains.rider", + "token": "rider", + "installer_format": "dmg", + "slug": "rider/darwin", + "default_categories": ["Developer tools"] +} diff --git a/ee/maintained-apps/outputs/apps.json b/ee/maintained-apps/outputs/apps.json index 82bc1dd70c..372016d3b5 100644 --- a/ee/maintained-apps/outputs/apps.json +++ b/ee/maintained-apps/outputs/apps.json @@ -617,6 +617,13 @@ "unique_identifier": "com.knollsoft.Rectangle", "description": "Rectangle is an app to move and resize windows using keyboard shortcuts or snap areas." }, + { + "name": "Rider", + "slug": "rider/darwin", + "platform": "darwin", + "unique_identifier": "com.jetbrains.rider", + "description": "Rider is a .NET IDE by JetBrains." + }, { "name": "RubyMine", "slug": "rubymine/darwin", diff --git a/ee/maintained-apps/outputs/rider/darwin.json b/ee/maintained-apps/outputs/rider/darwin.json new file mode 100644 index 0000000000..195da258aa --- /dev/null +++ b/ee/maintained-apps/outputs/rider/darwin.json @@ -0,0 +1,21 @@ +{ + "versions": [ + { + "version": "2025.3.0.2", + "queries": { + "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.jetbrains.rider';" + }, + "installer_url": "https://download.jetbrains.com/rider/JetBrains.Rider-2025.3.0.2-aarch64.dmg", + "install_script_ref": "8d17964d", + "uninstall_script_ref": "c52923fe", + "sha256": "7ab3b25b044c7f3439a0b2f76a3e8fc79bd36018fe4a21bcfaf643440209fe37", + "default_categories": [ + "Developer tools" + ] + } + ], + "refs": { + "8d17964d": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\n# extract contents\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nhdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\"\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\"\n# copy to the applications folder\nquit_application 'com.jetbrains.rider'\nif [ -d \"$APPDIR/Rider.app\" ]; then\n\tsudo mv \"$APPDIR/Rider.app\" \"$TMPDIR/Rider.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/Rider.app\" \"$APPDIR\"\n", + "c52923fe": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nsudo rm -rf \"$APPDIR/Rider.app\"\nsudo rm -rf 'rider'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Rider2025.3'\ntrash $LOGGED_IN_USER '~/Library/Caches/Rider2025.3'\ntrash $LOGGED_IN_USER '~/Library/Logs/Rider2025.3'\ntrash $LOGGED_IN_USER '~/Library/Preferences/jetbrains.rider.71e559ef.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/Rider2025.3'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.jetbrains.rider.savedState'\n" + } +} diff --git a/frontend/pages/SoftwarePage/components/icons/Rider.tsx b/frontend/pages/SoftwarePage/components/icons/Rider.tsx new file mode 100644 index 0000000000..09752e8d70 --- /dev/null +++ b/frontend/pages/SoftwarePage/components/icons/Rider.tsx @@ -0,0 +1,14 @@ +import * as React from "react"; + +import type { SVGProps } from "react"; + +const Rider = (props: SVGProps) => ( + + + +); +export default Rider; diff --git a/website/assets/images/app-icon-rider-60x60@2x.png b/website/assets/images/app-icon-rider-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..24f4f95cb1f2a13d547fd8e59d51bfe4e45f5e78 GIT binary patch literal 12722 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%0ABdgie$ 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