Add DB Browser for SQLite as a macOS FMA (#37057)

This pull request adds support for "DB Browser for SQLite" to the
maintained apps system and frontend, including metadata, installer
details, and icon integration. The changes ensure that "DB Browser for
SQLite" is now recognized, installable, and visually represented in the
software catalog.

**Backend: App Metadata and Installer Integration**
* Added a new input file `db-browser-for-sqlite.json` with metadata for
"DB Browser for SQLite"
(`ee/maintained-apps/inputs/homebrew/db-browser-for-sqlite.json`).
* Generated output files for the app, including listing in `apps.json`
and a detailed installer/uninstaller script with version info and SHA256
checksum (`ee/maintained-apps/outputs/apps.json`,
`ee/maintained-apps/outputs/db-browser-for-sqlite/darwin.json`).
[[1]](diffhunk://#diff-4c1446cfc02c6bb0bda874481e333c65b84e184fcea52f656b49a6489f73c9c2R403-R409)
[[2]](diffhunk://#diff-4f92dcbeb9f303f8a2b0337097c2c11892b2eb2f73023dc26845f6971d34aa6aR1-R21)

**Frontend: Icon and Mapping Integration**
* Added a new React SVG icon component for "DB Browser for SQLite"
(`DbBrowserForSqLite.tsx`).
* Imported the new icon into the icons index and mapped it in
`SOFTWARE_NAME_TO_ICON_MAP` for correct display on the software page
(`frontend/pages/SoftwarePage/components/icons/index.ts`).
[[1]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bR56)
[[2]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bR234)
This commit is contained in:
Allen Houchins
2025-12-10 10:28:35 -06:00
committed by GitHub
parent fe2a9a867e
commit 69ac473694
6 changed files with 52 additions and 0 deletions
@@ -0,0 +1,8 @@
{
"name": "DB Browser for SQLite",
"unique_identifier": "com.sqlitebrowser.sqlitebrowser",
"token": "db-browser-for-sqlite",
"installer_format": "dmg",
"slug": "db-browser-for-sqlite/darwin",
"default_categories": ["Developer tools"]
}
+7
View File
@@ -400,6 +400,13 @@
"unique_identifier": "com.jetbrains.datagrip",
"description": "DataGrip is a powerful cross-platform IDE for relational and NoSQL databases."
},
{
"name": "DB Browser for SQLite",
"slug": "db-browser-for-sqlite/darwin",
"platform": "darwin",
"unique_identifier": "com.sqlitebrowser.sqlitebrowser",
"description": "DB Browser for SQLite is a high quality, visual, open source tool designed for people who want to create, search, and edit SQLite or SQLCipher databases."
},
{
"name": "DBeaver",
"slug": "dbeaver-community/darwin",
@@ -0,0 +1,21 @@
{
"versions": [
{
"version": "3.13.1",
"queries": {
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.sqlitebrowser.sqlitebrowser';"
},
"installer_url": "https://github.com/sqlitebrowser/sqlitebrowser/releases/download/v3.13.1/DB.Browser.for.SQLite-v3.13.1.dmg",
"install_script_ref": "924000d3",
"uninstall_script_ref": "c014d2d5",
"sha256": "a641cfbfcc2ce609f07de44a35134dab53485ecc18e6d9afa297b514d74bd75e",
"default_categories": [
"Developer tools"
]
}
],
"refs": {
"924000d3": "#!/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.sqlitebrowser.sqlitebrowser'\nif [ -d \"$APPDIR/DB Browser for SQLite.app\" ]; then\n\tsudo mv \"$APPDIR/DB Browser for SQLite.app\" \"$TMPDIR/DB Browser for SQLite.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/DB Browser for SQLite.app\" \"$APPDIR\"\n",
"c014d2d5": "#!/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/DB Browser for SQLite.app\"\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.sqlitebrowser.sqlitebrowser.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/net.sourceforge.sqlitebrowser.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/net.sourceforge.sqlitebrowser.savedState'\n"
}
}
File diff suppressed because one or more lines are too long
@@ -53,6 +53,7 @@ import CreativeCloud from "./AdobeCreativeCloud";
import Cursor from "./Cursor";
import Cyberduck from "./Cyberduck";
import DataGrip from "./DataGrip";
import DbBrowserForSqLite from "./DbBrowserForSqLite";
import DBeaver from "./DBeaver";
import DBeaverEe from "./DBeaverEe";
import DBeaverLite from "./DBeaverLite";
@@ -230,6 +231,7 @@ export const SOFTWARE_NAME_TO_ICON_MAP = {
cursor: Cursor,
cyberduck: Cyberduck,
datagrip: DataGrip,
"db browser for sqlite": DbBrowserForSqLite,
"dbeaver community": DBeaver,
"dbeaver enterprise edition": DBeaverEe,
"dbeaver lite edition": DBeaverLite,
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB