From 480825387fdc1717be41c8b080b9703cee45b25a Mon Sep 17 00:00:00 2001 From: Harrison Ravazzolo <38767391+harrisonravazzolo@users.noreply.github.com> Date: Thu, 20 Nov 2025 11:24:48 -0800 Subject: [PATCH] macOS FMA: CLion (#36072) --- ee/maintained-apps/inputs/homebrew/clion.json | 8 +++++++ ee/maintained-apps/outputs/apps.json | 7 ++++++ ee/maintained-apps/outputs/clion/darwin.json | 21 ++++++++++++++++++ .../SoftwarePage/components/icons/CLion.tsx | 14 ++++++++++++ .../assets/images/app-icon-clion-60x60@2x.png | Bin 0 -> 8329 bytes 5 files changed, 50 insertions(+) create mode 100644 ee/maintained-apps/inputs/homebrew/clion.json create mode 100644 ee/maintained-apps/outputs/clion/darwin.json create mode 100644 frontend/pages/SoftwarePage/components/icons/CLion.tsx create mode 100644 website/assets/images/app-icon-clion-60x60@2x.png diff --git a/ee/maintained-apps/inputs/homebrew/clion.json b/ee/maintained-apps/inputs/homebrew/clion.json new file mode 100644 index 0000000000..5456f003e1 --- /dev/null +++ b/ee/maintained-apps/inputs/homebrew/clion.json @@ -0,0 +1,8 @@ +{ + "name": "CLion", + "unique_identifier": "com.jetbrains.CLion", + "token": "clion", + "installer_format": "dmg", + "slug": "clion/darwin", + "default_categories": ["Developer tools"] +} diff --git a/ee/maintained-apps/outputs/apps.json b/ee/maintained-apps/outputs/apps.json index 26cc17e7ba..464f578ad9 100644 --- a/ee/maintained-apps/outputs/apps.json +++ b/ee/maintained-apps/outputs/apps.json @@ -120,6 +120,13 @@ "unique_identifier": "com.clickup.desktop-app", "description": "ClickUp is a productivity platform for tasks, docs, goals, and chat." }, + { + "name": "CLion", + "slug": "clion/darwin", + "platform": "darwin", + "unique_identifier": "com.jetbrains.CLion", + "description": "Clion is a JetBrains IDE for C and C++." + }, { "name": "Cloudflare WARP", "slug": "cloudflare-warp/darwin", diff --git a/ee/maintained-apps/outputs/clion/darwin.json b/ee/maintained-apps/outputs/clion/darwin.json new file mode 100644 index 0000000000..c7f76aa5c1 --- /dev/null +++ b/ee/maintained-apps/outputs/clion/darwin.json @@ -0,0 +1,21 @@ +{ + "versions": [ + { + "version": "2025.2.4", + "queries": { + "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.jetbrains.CLion';" + }, + "installer_url": "https://download.jetbrains.com/cpp/CLion-2025.2.4-aarch64.dmg", + "install_script_ref": "2017e650", + "uninstall_script_ref": "4c45cafb", + "sha256": "7bdef6d73e0edfbc5ef02b7e74e5508e5b18a9c21afb5ba82488527d837e2a94", + "default_categories": [ + "Developer tools" + ] + } + ], + "refs": { + "2017e650": "#!/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.CLion'\nif [ -d \"$APPDIR/CLion.app\" ]; then\n\tsudo mv \"$APPDIR/CLion.app\" \"$TMPDIR/CLion.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/CLion.app\" \"$APPDIR\"\n", + "4c45cafb": "#!/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/CLion.app\"\nsudo rm -rf 'clion'\ntrash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/CLion2025.2'\ntrash $LOGGED_IN_USER '~/Library/Caches/JetBrains/CLion2025.2'\ntrash $LOGGED_IN_USER '~/Library/Logs/JetBrains/CLion2025.2'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.jetbrains.CLion.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.jetbrains.CLion.savedState'\n" + } +} diff --git a/frontend/pages/SoftwarePage/components/icons/CLion.tsx b/frontend/pages/SoftwarePage/components/icons/CLion.tsx new file mode 100644 index 0000000000..d7cca928ef --- /dev/null +++ b/frontend/pages/SoftwarePage/components/icons/CLion.tsx @@ -0,0 +1,14 @@ +import * as React from "react"; + +import type { SVGProps } from "react"; + +const CLion = (props: SVGProps) => ( + + + +); +export default CLion; diff --git a/website/assets/images/app-icon-clion-60x60@2x.png b/website/assets/images/app-icon-clion-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6357acd3b0885defca650b36253ab529177b0209 GIT binary patch literal 8329 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