Add Bruno as a macOS FMA (#36998)
This pull request adds support for the Bruno application to both the backend maintained apps system and the frontend software page. The main changes introduce Bruno's metadata, installation and uninstallation scripts, and its icon for display in the UI. **Backend: Bruno app integration** * Added `bruno.json` input definition for Bruno, specifying its installer format, unique identifier, and default categories. * Updated `apps.json` output to include Bruno with its description, platform, and slug. * Created output file `bruno/darwin.json` with Bruno's version info, installer and uninstall script references, SHA256 checksum, and category. **Frontend: Bruno icon and mapping** * Added `Bruno.tsx` SVG icon component for Bruno. * Imported Bruno icon in the icons index and mapped it in `SOFTWARE_NAME_TO_ICON_MAP` for use on the software page. [[1]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bR25) [[2]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bR183)
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "Bruno",
|
||||
"unique_identifier": "com.usebruno.app",
|
||||
"token": "bruno",
|
||||
"installer_format": "dmg",
|
||||
"slug": "bruno/darwin",
|
||||
"default_categories": ["Developer tools"]
|
||||
}
|
||||
@@ -169,6 +169,13 @@
|
||||
"unique_identifier": "Brave",
|
||||
"description": "Brave is a web browser designed with privacy, blocking ads and trackers by default while maintaining fast speed."
|
||||
},
|
||||
{
|
||||
"name": "Bruno",
|
||||
"slug": "bruno/darwin",
|
||||
"platform": "darwin",
|
||||
"unique_identifier": "com.usebruno.app",
|
||||
"description": "Bruno is an open source IDE for exploring and testing APIs."
|
||||
},
|
||||
{
|
||||
"name": "Camtasia",
|
||||
"slug": "camtasia/darwin",
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "2.15.1",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.usebruno.app';"
|
||||
},
|
||||
"installer_url": "https://github.com/usebruno/bruno/releases/download/v2.15.1/bruno_2.15.1_arm64_mac.dmg",
|
||||
"install_script_ref": "4fa6591d",
|
||||
"uninstall_script_ref": "28a81327",
|
||||
"sha256": "691813ebc0ac244826f995b530fbd43766ccc7c288a4acdac46baee859055816",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
]
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"28a81327": "#!/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/Bruno.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Support/bruno'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.usebruno.app.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.usebruno.app.savedState'\n",
|
||||
"4fa6591d": "#!/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.usebruno.app'\nif [ -d \"$APPDIR/Bruno.app\" ]; then\n\tsudo mv \"$APPDIR/Bruno.app\" \"$TMPDIR/Bruno.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/Bruno.app\" \"$APPDIR\"\n"
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -23,6 +23,7 @@ import Bitwarden from "./Bitwarden";
|
||||
import Blender from "./Blender";
|
||||
import Box from "./Box";
|
||||
import Brave from "./Brave";
|
||||
import Bruno from "./Bruno";
|
||||
import CLion from "./CLion";
|
||||
import Camtasia from "./Camtasia";
|
||||
import Canva from "./Canva";
|
||||
@@ -181,6 +182,7 @@ export const SOFTWARE_NAME_TO_ICON_MAP = {
|
||||
blender: Blender,
|
||||
box: Box,
|
||||
brave: Brave,
|
||||
bruno: Bruno,
|
||||
camtasia: Camtasia,
|
||||
canva: Canva,
|
||||
"chatgpt atlas": ChatGptAtlas,
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
Reference in New Issue
Block a user