From f6aa44e33f9fe7edc723cd77e4f77992d36fb83f Mon Sep 17 00:00:00 2001 From: JEEVITHA KANNAN K S Date: Fri, 1 Nov 2024 01:40:40 +0530 Subject: [PATCH 1/3] feat: jetbrains-toolbox --- .../Developer-tools/jetbrains-toolbox.sh | 48 +++++++++++++++++++ core/tabs/applications-setup/tab_data.toml | 6 +++ core/tabs/common-script.sh | 11 +++++ 3 files changed, 65 insertions(+) create mode 100644 core/tabs/applications-setup/Developer-tools/jetbrains-toolbox.sh diff --git a/core/tabs/applications-setup/Developer-tools/jetbrains-toolbox.sh b/core/tabs/applications-setup/Developer-tools/jetbrains-toolbox.sh new file mode 100644 index 000000000..0f6d6b096 --- /dev/null +++ b/core/tabs/applications-setup/Developer-tools/jetbrains-toolbox.sh @@ -0,0 +1,48 @@ +#!/bin/dash -e + +. ../../common-script.sh + +manualInstall() { + JETBRAINS_TOOLBOX_DIR="/opt/jetbrains-toolbox" + + case "$ARCH" in + x86_64) ARCHIVE_URL=$(curl -s "https://data.services.jetbrains.com/products/releases?code=TBA&latest=true&type=release" | jq -r ".TBA[0].downloads.linux.link");; + aarch64) ARCHIVE_URL=$(curl -s "https://data.services.jetbrains.com/products/releases?code=TBA&latest=true&type=release" | jq -r ".TBA[0].downloads.linuxARM64.link");; + esac + + curl -fSL "$ARCHIVE_URL" -o "jetbrains-toolbox.tar.gz" + + if [ -d "$JETBRAINS_TOOLBOX_DIR" ]; then + "$ESCALATION_TOOL" rm -rf "$JETBRAINS_TOOLBOX_DIR" + fi + + "$ESCALATION_TOOL" mkdir -p "$JETBRAINS_TOOLBOX_DIR" + "$ESCALATION_TOOL" tar -xzf "jetbrains-toolbox.tar.gz" -C "$JETBRAINS_TOOLBOX_DIR" --strip-components=1 + "$ESCALATION_TOOL" ln -sf "$JETBRAINS_TOOLBOX_DIR/jetbrains-toolbox" "/usr/bin/jetbrains-toolbox" +} + +installJetBrainsToolBox() { + if ! command_exists jetbrains-toolbox; then + printf "%b\n" "${YELLOW}Installing Jetbrains Toolbox...${RC}" + case "$PACKAGER" in + pacman) + "$AUR_HELPER" -S --needed --noconfirm jetbrains-toolbox + ;; + dnf) + manualInstall + ;; + *) + "$ESCALATION_TOOL" "$PACKAGER" install -y libfuse2 + manualInstall + ;; + esac + printf "%b\n" "${GREEN}Successfully installed Jetbrains Toolbox.${RC}" + else + printf "%b\n" "${GREEN}Jetbrains toolbox is already installed.${RC}" + fi +} + +checkEnv +checkEscalationTool +checkAURHelper +installJetBrainsToolBox \ No newline at end of file diff --git a/core/tabs/applications-setup/tab_data.toml b/core/tabs/applications-setup/tab_data.toml index c102a5ce8..44b74464c 100644 --- a/core/tabs/applications-setup/tab_data.toml +++ b/core/tabs/applications-setup/tab_data.toml @@ -54,6 +54,12 @@ description = "GitHub Desktop is a user-friendly application that simplifies the script = "Developer-tools/githubdesktop-setup.sh" task_list = "I" +[[data.entries]] +name = "JetBrains Toolbox" +description = "JetBrains Toolbox is a collection of tools and an app that help developers work with JetBrains products." +script = "Developer-tools/jetbrains-toolbox.sh" +task_list = "I" + [[data.entries]] name = "Meld" description = "Meld is a visual diff and merge tool that helps compare files, directories, and version-controlled projects." diff --git a/core/tabs/common-script.sh b/core/tabs/common-script.sh index 396f358d9..c468b9f3f 100644 --- a/core/tabs/common-script.sh +++ b/core/tabs/common-script.sh @@ -15,6 +15,16 @@ command_exists() { return 0 } +checkArch() { + case "$(uname -m)" in + x86_64|amd64) ARCH="x86_64" ;; + aarch64|arm64) ARCH="aarch64" ;; + *) printf "%b\n" "${RED}Unsupported architecture: $(uname -m)${RC}" && exit 1 ;; + esac + + printf "%b\n" "${CYAN}System architecture: ${ARCH}${RC}" +} + checkAURHelper() { ## Check & Install AUR helper if [ "$PACKAGER" = "pacman" ]; then @@ -128,6 +138,7 @@ checkDistro() { } checkEnv() { + checkArch checkEscalationTool checkCommandRequirements "curl groups $ESCALATION_TOOL" checkPackageManager 'nala apt-get dnf pacman zypper' From b547d7fc24459f72f8f3d137da0a7d1f579f2994 Mon Sep 17 00:00:00 2001 From: JEEVITHA KANNAN K S Date: Fri, 1 Nov 2024 14:25:40 +0530 Subject: [PATCH 2/3] fix: formatting and shebang --- Cargo.lock | 147 ------------------ .../Developer-tools/jetbrains-toolbox.sh | 8 +- core/tabs/common-script.sh | 4 +- 3 files changed, 6 insertions(+), 153 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 266ed837a..320f081fe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -29,21 +29,6 @@ version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - [[package]] name = "ansi-to-tui" version = "6.0.0" @@ -136,12 +121,6 @@ version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" -[[package]] -name = "bumpalo" -version = "3.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" - [[package]] name = "byteorder" version = "1.5.0" @@ -178,20 +157,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "chrono" -version = "0.4.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", - "num-traits", - "wasm-bindgen", - "windows-targets", -] - [[package]] name = "clap" version = "4.5.19" @@ -252,12 +217,6 @@ dependencies = [ "static_assertions", ] -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - [[package]] name = "crossterm" version = "0.28.1" @@ -370,29 +329,6 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "iana-time-zone" -version = "0.1.60" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - [[package]] name = "include_dir" version = "0.7.4" @@ -462,15 +398,6 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" -[[package]] -name = "js-sys" -version = "0.3.70" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" -dependencies = [ - "wasm-bindgen", -] - [[package]] name = "lazy_static" version = "1.5.0" @@ -501,7 +428,6 @@ version = "24.9.28" dependencies = [ "ansi-to-tui", "anstyle", - "chrono", "clap", "crossterm", "ego-tree", @@ -607,15 +533,6 @@ dependencies = [ "minimal-lexical", ] -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - [[package]] name = "once_cell" version = "1.19.0" @@ -1223,61 +1140,6 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" -[[package]] -name = "wasm-bindgen" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" -dependencies = [ - "cfg-if", - "once_cell", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" - [[package]] name = "which" version = "6.0.3" @@ -1312,15 +1174,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows-core" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" -dependencies = [ - "windows-targets", -] - [[package]] name = "windows-sys" version = "0.52.0" diff --git a/core/tabs/applications-setup/Developer-tools/jetbrains-toolbox.sh b/core/tabs/applications-setup/Developer-tools/jetbrains-toolbox.sh index 0f6d6b096..79ce360e3 100644 --- a/core/tabs/applications-setup/Developer-tools/jetbrains-toolbox.sh +++ b/core/tabs/applications-setup/Developer-tools/jetbrains-toolbox.sh @@ -1,4 +1,4 @@ -#!/bin/dash -e +#!/bin/sh -e . ../../common-script.sh @@ -6,8 +6,8 @@ manualInstall() { JETBRAINS_TOOLBOX_DIR="/opt/jetbrains-toolbox" case "$ARCH" in - x86_64) ARCHIVE_URL=$(curl -s "https://data.services.jetbrains.com/products/releases?code=TBA&latest=true&type=release" | jq -r ".TBA[0].downloads.linux.link");; - aarch64) ARCHIVE_URL=$(curl -s "https://data.services.jetbrains.com/products/releases?code=TBA&latest=true&type=release" | jq -r ".TBA[0].downloads.linuxARM64.link");; + x86_64) ARCHIVE_URL=$(curl -s "https://data.services.jetbrains.com/products/releases?code=TBA&latest=true&type=release" | jq -r ".TBA[0].downloads.linux.link") ;; + aarch64) ARCHIVE_URL=$(curl -s "https://data.services.jetbrains.com/products/releases?code=TBA&latest=true&type=release" | jq -r ".TBA[0].downloads.linuxARM64.link") ;; esac curl -fSL "$ARCHIVE_URL" -o "jetbrains-toolbox.tar.gz" @@ -45,4 +45,4 @@ installJetBrainsToolBox() { checkEnv checkEscalationTool checkAURHelper -installJetBrainsToolBox \ No newline at end of file +installJetBrainsToolBox diff --git a/core/tabs/common-script.sh b/core/tabs/common-script.sh index c468b9f3f..635c9693c 100644 --- a/core/tabs/common-script.sh +++ b/core/tabs/common-script.sh @@ -17,8 +17,8 @@ command_exists() { checkArch() { case "$(uname -m)" in - x86_64|amd64) ARCH="x86_64" ;; - aarch64|arm64) ARCH="aarch64" ;; + x86_64 | amd64) ARCH="x86_64" ;; + aarch64 | arm64) ARCH="aarch64" ;; *) printf "%b\n" "${RED}Unsupported architecture: $(uname -m)${RC}" && exit 1 ;; esac From 80b12fc1891ca8cd23a977a72ed7bbbf22a34815 Mon Sep 17 00:00:00 2001 From: JEEVITHA KANNAN K S Date: Fri, 1 Nov 2024 14:43:03 +0530 Subject: [PATCH 3/3] Forgot the docs --- docs/userguide.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/userguide.md b/docs/userguide.md index 46a3f99b0..8ad704e6d 100644 --- a/docs/userguide.md +++ b/docs/userguide.md @@ -17,6 +17,7 @@ ### Developer Tools - **Github Desktop**: GitHub Desktop is a user-friendly application that simplifies the process of managing Git repositories and interacting with GitHub, providing a graphical interface for tasks like committing, branching, and syncing changes. +- **JetBrains Toolbox**: JetBrains Toolbox is a collection of tools and an app that help developers work with JetBrains products. - **Meld**: Meld is a visual diff and merge tool that helps compare files, directories, and version-controlled projects. - **Neovim**: Neovim is a refactor, and sometimes redactor, in the tradition of Vim. It is not a rewrite but a continuation and extension of Vim.