@fredlackey/devutils 0.0.18 → 0.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -150
- package/package.json +5 -82
- package/bin/dev.js +0 -16
- package/files/README.md +0 -0
- package/files/claude/.claude/commands/setup-context.md +0 -3
- package/files/monorepos/_archive/README.md +0 -36
- package/files/monorepos/_legacy/README.md +0 -36
- package/files/monorepos/ai-docs/README.md +0 -33
- package/files/monorepos/apps/README.md +0 -24
- package/files/monorepos/docs/README.md +0 -40
- package/files/monorepos/packages/README.md +0 -25
- package/files/monorepos/research/README.md +0 -29
- package/files/monorepos/scripts/README.md +0 -24
- package/src/cli.js +0 -72
- package/src/commands/README.md +0 -41
- package/src/commands/configure.js +0 -199
- package/src/commands/identity.js +0 -1630
- package/src/commands/ignore.js +0 -247
- package/src/commands/install.js +0 -526
- package/src/commands/setup.js +0 -246
- package/src/commands/status.js +0 -223
- package/src/commands/update.js +0 -142
- package/src/commands/version.js +0 -100
- package/src/completion.js +0 -284
- package/src/constants.js +0 -45
- package/src/ignore/claude-code.txt +0 -10
- package/src/ignore/docker.txt +0 -18
- package/src/ignore/linux.txt +0 -23
- package/src/ignore/macos.txt +0 -36
- package/src/ignore/node.txt +0 -55
- package/src/ignore/terraform.txt +0 -37
- package/src/ignore/vscode.txt +0 -18
- package/src/ignore/windows.txt +0 -35
- package/src/index.js +0 -0
- package/src/installs/README.md +0 -399
- package/src/installs/adobe-creative-cloud.js +0 -546
- package/src/installs/adobe-creative-cloud.md +0 -605
- package/src/installs/appcleaner.js +0 -321
- package/src/installs/appcleaner.md +0 -699
- package/src/installs/apt-transport-https.js +0 -390
- package/src/installs/apt-transport-https.md +0 -678
- package/src/installs/atomicparsley.js +0 -642
- package/src/installs/atomicparsley.md +0 -795
- package/src/installs/aws-cli.js +0 -797
- package/src/installs/aws-cli.md +0 -727
- package/src/installs/balena-etcher.js +0 -710
- package/src/installs/balena-etcher.md +0 -761
- package/src/installs/bambu-studio.js +0 -1143
- package/src/installs/bambu-studio.md +0 -780
- package/src/installs/bash-completion.js +0 -575
- package/src/installs/bash-completion.md +0 -833
- package/src/installs/bash.js +0 -417
- package/src/installs/bash.md +0 -993
- package/src/installs/beyond-compare.js +0 -603
- package/src/installs/beyond-compare.md +0 -813
- package/src/installs/brave-browser.js +0 -968
- package/src/installs/brave-browser.md +0 -650
- package/src/installs/build-essential.js +0 -529
- package/src/installs/build-essential.md +0 -977
- package/src/installs/ca-certificates.js +0 -618
- package/src/installs/ca-certificates.md +0 -937
- package/src/installs/caffeine.js +0 -508
- package/src/installs/caffeine.md +0 -839
- package/src/installs/camtasia.js +0 -596
- package/src/installs/camtasia.md +0 -762
- package/src/installs/chatgpt.js +0 -476
- package/src/installs/chatgpt.md +0 -814
- package/src/installs/chocolatey.js +0 -456
- package/src/installs/chocolatey.md +0 -661
- package/src/installs/chrome-canary.js +0 -419
- package/src/installs/chrome-canary.md +0 -641
- package/src/installs/chromium.js +0 -667
- package/src/installs/chromium.md +0 -838
- package/src/installs/claude-code.js +0 -576
- package/src/installs/claude-code.md +0 -1173
- package/src/installs/cloudflare-warp.js +0 -900
- package/src/installs/cloudflare-warp.md +0 -1047
- package/src/installs/comet-browser.js +0 -588
- package/src/installs/comet-browser.md +0 -731
- package/src/installs/curl.js +0 -379
- package/src/installs/curl.md +0 -714
- package/src/installs/cursor.js +0 -579
- package/src/installs/cursor.md +0 -970
- package/src/installs/dbeaver.js +0 -924
- package/src/installs/dbeaver.md +0 -939
- package/src/installs/dbschema.js +0 -692
- package/src/installs/dbschema.md +0 -925
- package/src/installs/dependencies.md +0 -453
- package/src/installs/development-tools.js +0 -600
- package/src/installs/development-tools.md +0 -977
- package/src/installs/docker.js +0 -1029
- package/src/installs/docker.md +0 -1109
- package/src/installs/drawio.js +0 -1019
- package/src/installs/drawio.md +0 -795
- package/src/installs/elmedia-player.js +0 -347
- package/src/installs/elmedia-player.md +0 -556
- package/src/installs/ffmpeg.js +0 -889
- package/src/installs/ffmpeg.md +0 -852
- package/src/installs/file.js +0 -464
- package/src/installs/file.md +0 -987
- package/src/installs/gemini-cli.js +0 -811
- package/src/installs/gemini-cli.md +0 -1153
- package/src/installs/git.js +0 -400
- package/src/installs/git.md +0 -907
- package/src/installs/gitego.js +0 -949
- package/src/installs/gitego.md +0 -1172
- package/src/installs/go.js +0 -931
- package/src/installs/go.md +0 -958
- package/src/installs/google-antigravity.js +0 -913
- package/src/installs/google-antigravity.md +0 -1075
- package/src/installs/google-chrome.js +0 -833
- package/src/installs/google-chrome.md +0 -862
- package/src/installs/gpg.js +0 -480
- package/src/installs/gpg.md +0 -1056
- package/src/installs/homebrew.js +0 -1028
- package/src/installs/homebrew.md +0 -988
- package/src/installs/imageoptim.js +0 -968
- package/src/installs/imageoptim.md +0 -1119
- package/src/installs/installers.json +0 -4032
- package/src/installs/installers.json.tmp +0 -3953
- package/src/installs/jq.js +0 -400
- package/src/installs/jq.md +0 -809
- package/src/installs/keyboard-maestro.js +0 -719
- package/src/installs/keyboard-maestro.md +0 -825
- package/src/installs/kiro.js +0 -864
- package/src/installs/kiro.md +0 -1015
- package/src/installs/latex.js +0 -789
- package/src/installs/latex.md +0 -1095
- package/src/installs/lftp.js +0 -356
- package/src/installs/lftp.md +0 -907
- package/src/installs/lsb-release.js +0 -346
- package/src/installs/lsb-release.md +0 -814
- package/src/installs/messenger.js +0 -847
- package/src/installs/messenger.md +0 -900
- package/src/installs/microsoft-office.js +0 -568
- package/src/installs/microsoft-office.md +0 -760
- package/src/installs/microsoft-teams.js +0 -801
- package/src/installs/microsoft-teams.md +0 -886
- package/src/installs/moom.js +0 -326
- package/src/installs/moom.md +0 -570
- package/src/installs/node.js +0 -904
- package/src/installs/node.md +0 -1153
- package/src/installs/nordpass.js +0 -716
- package/src/installs/nordpass.md +0 -921
- package/src/installs/nordvpn.js +0 -892
- package/src/installs/nordvpn.md +0 -1052
- package/src/installs/nvm.js +0 -995
- package/src/installs/nvm.md +0 -1057
- package/src/installs/ohmyzsh.js +0 -529
- package/src/installs/ohmyzsh.md +0 -1094
- package/src/installs/openssh.js +0 -804
- package/src/installs/openssh.md +0 -1056
- package/src/installs/pandoc.js +0 -662
- package/src/installs/pandoc.md +0 -1036
- package/src/installs/parallels-desktop.js +0 -431
- package/src/installs/parallels-desktop.md +0 -446
- package/src/installs/pinentry.js +0 -510
- package/src/installs/pinentry.md +0 -1142
- package/src/installs/pngyu.js +0 -869
- package/src/installs/pngyu.md +0 -896
- package/src/installs/postman.js +0 -799
- package/src/installs/postman.md +0 -940
- package/src/installs/procps.js +0 -425
- package/src/installs/procps.md +0 -851
- package/src/installs/safari-tech-preview.js +0 -374
- package/src/installs/safari-tech-preview.md +0 -533
- package/src/installs/sfnt2woff.js +0 -658
- package/src/installs/sfnt2woff.md +0 -795
- package/src/installs/shellcheck.js +0 -481
- package/src/installs/shellcheck.md +0 -1005
- package/src/installs/slack.js +0 -741
- package/src/installs/slack.md +0 -865
- package/src/installs/snagit.js +0 -585
- package/src/installs/snagit.md +0 -844
- package/src/installs/software-properties-common.js +0 -372
- package/src/installs/software-properties-common.md +0 -805
- package/src/installs/spotify.js +0 -877
- package/src/installs/spotify.md +0 -901
- package/src/installs/studio-3t.js +0 -823
- package/src/installs/studio-3t.md +0 -918
- package/src/installs/sublime-text.js +0 -804
- package/src/installs/sublime-text.md +0 -914
- package/src/installs/superwhisper.js +0 -706
- package/src/installs/superwhisper.md +0 -630
- package/src/installs/tailscale.js +0 -745
- package/src/installs/tailscale.md +0 -1100
- package/src/installs/tar.js +0 -389
- package/src/installs/tar.md +0 -946
- package/src/installs/termius.js +0 -798
- package/src/installs/termius.md +0 -844
- package/src/installs/terraform.js +0 -779
- package/src/installs/terraform.md +0 -899
- package/src/installs/tfenv.js +0 -778
- package/src/installs/tfenv.md +0 -1091
- package/src/installs/tidal.js +0 -771
- package/src/installs/tidal.md +0 -864
- package/src/installs/tmux.js +0 -346
- package/src/installs/tmux.md +0 -1030
- package/src/installs/tree.js +0 -411
- package/src/installs/tree.md +0 -833
- package/src/installs/unzip.js +0 -460
- package/src/installs/unzip.md +0 -879
- package/src/installs/vim.js +0 -421
- package/src/installs/vim.md +0 -1040
- package/src/installs/vlc.js +0 -821
- package/src/installs/vlc.md +0 -927
- package/src/installs/vscode.js +0 -843
- package/src/installs/vscode.md +0 -1002
- package/src/installs/wget.js +0 -420
- package/src/installs/wget.md +0 -791
- package/src/installs/whatsapp.js +0 -729
- package/src/installs/whatsapp.md +0 -854
- package/src/installs/winpty.js +0 -352
- package/src/installs/winpty.md +0 -620
- package/src/installs/woff2.js +0 -553
- package/src/installs/woff2.md +0 -977
- package/src/installs/wsl.js +0 -572
- package/src/installs/wsl.md +0 -699
- package/src/installs/xcode-clt.js +0 -520
- package/src/installs/xcode-clt.md +0 -351
- package/src/installs/xcode.js +0 -560
- package/src/installs/xcode.md +0 -573
- package/src/installs/yarn.js +0 -824
- package/src/installs/yarn.md +0 -1074
- package/src/installs/yq.js +0 -654
- package/src/installs/yq.md +0 -944
- package/src/installs/yt-dlp.js +0 -701
- package/src/installs/yt-dlp.md +0 -946
- package/src/installs/yum-utils.js +0 -297
- package/src/installs/yum-utils.md +0 -648
- package/src/installs/zoom.js +0 -759
- package/src/installs/zoom.md +0 -884
- package/src/installs/zsh.js +0 -455
- package/src/installs/zsh.md +0 -1008
- package/src/scripts/README.md +0 -617
- package/src/scripts/STATUS.md +0 -208
- package/src/scripts/afk.js +0 -411
- package/src/scripts/backup-all.js +0 -746
- package/src/scripts/backup-source.js +0 -727
- package/src/scripts/brewd.js +0 -389
- package/src/scripts/brewi.js +0 -520
- package/src/scripts/brewr.js +0 -527
- package/src/scripts/brews.js +0 -477
- package/src/scripts/brewu.js +0 -504
- package/src/scripts/c.js +0 -201
- package/src/scripts/ccurl.js +0 -341
- package/src/scripts/certbot-crontab-init.js +0 -504
- package/src/scripts/certbot-init.js +0 -657
- package/src/scripts/ch.js +0 -355
- package/src/scripts/claude-danger.js +0 -268
- package/src/scripts/clean-dev.js +0 -435
- package/src/scripts/clear-dns-cache.js +0 -541
- package/src/scripts/clone.js +0 -435
- package/src/scripts/code-all.js +0 -437
- package/src/scripts/count-files.js +0 -211
- package/src/scripts/count-folders.js +0 -211
- package/src/scripts/count.js +0 -264
- package/src/scripts/d.js +0 -219
- package/src/scripts/datauri.js +0 -389
- package/src/scripts/delete-files.js +0 -380
- package/src/scripts/docker-clean.js +0 -426
- package/src/scripts/dp.js +0 -442
- package/src/scripts/e.js +0 -390
- package/src/scripts/empty-trash.js +0 -513
- package/src/scripts/evm.js +0 -444
- package/src/scripts/fetch-github-repos.js +0 -456
- package/src/scripts/get-channel.js +0 -345
- package/src/scripts/get-course.js +0 -399
- package/src/scripts/get-dependencies.js +0 -306
- package/src/scripts/get-folder.js +0 -799
- package/src/scripts/get-tunes.js +0 -426
- package/src/scripts/get-video.js +0 -367
- package/src/scripts/git-backup.js +0 -577
- package/src/scripts/git-clone.js +0 -493
- package/src/scripts/git-pup.js +0 -319
- package/src/scripts/git-push.js +0 -396
- package/src/scripts/h.js +0 -622
- package/src/scripts/hide-desktop-icons.js +0 -499
- package/src/scripts/hide-hidden-files.js +0 -538
- package/src/scripts/install-dependencies-from.js +0 -456
- package/src/scripts/ips.js +0 -663
- package/src/scripts/iso.js +0 -370
- package/src/scripts/killni.js +0 -577
- package/src/scripts/ll.js +0 -467
- package/src/scripts/local-ip.js +0 -325
- package/src/scripts/m.js +0 -524
- package/src/scripts/map.js +0 -309
- package/src/scripts/mkd.js +0 -351
- package/src/scripts/ncu-update-all.js +0 -457
- package/src/scripts/nginx-init.js +0 -718
- package/src/scripts/npmi.js +0 -382
- package/src/scripts/o.js +0 -511
- package/src/scripts/org-by-date.js +0 -338
- package/src/scripts/p.js +0 -224
- package/src/scripts/packages.js +0 -330
- package/src/scripts/path.js +0 -225
- package/src/scripts/ports.js +0 -597
- package/src/scripts/q.js +0 -305
- package/src/scripts/refresh-files.js +0 -394
- package/src/scripts/remove-smaller-files.js +0 -516
- package/src/scripts/rename-files-with-date.js +0 -533
- package/src/scripts/resize-image.js +0 -539
- package/src/scripts/rm-safe.js +0 -669
- package/src/scripts/s.js +0 -540
- package/src/scripts/set-git-public.js +0 -365
- package/src/scripts/show-desktop-icons.js +0 -475
- package/src/scripts/show-hidden-files.js +0 -472
- package/src/scripts/tpa.js +0 -280
- package/src/scripts/tpo.js +0 -280
- package/src/scripts/u.js +0 -505
- package/src/scripts/vpush.js +0 -437
- package/src/scripts/y.js +0 -283
- package/src/utils/README.md +0 -95
- package/src/utils/common/apps.js +0 -143
- package/src/utils/common/display.js +0 -157
- package/src/utils/common/network.js +0 -185
- package/src/utils/common/os.js +0 -294
- package/src/utils/common/package-manager.js +0 -301
- package/src/utils/common/privileges.js +0 -138
- package/src/utils/common/shell.js +0 -261
- package/src/utils/macos/apps.js +0 -228
- package/src/utils/macos/brew.js +0 -315
- package/src/utils/ubuntu/apt.js +0 -307
- package/src/utils/ubuntu/desktop.js +0 -292
- package/src/utils/ubuntu/snap.js +0 -344
- package/src/utils/ubuntu/systemd.js +0 -286
- package/src/utils/windows/choco.js +0 -465
- package/src/utils/windows/env.js +0 -246
- package/src/utils/windows/registry.js +0 -269
- package/src/utils/windows/shell.js +0 -240
- package/src/utils/windows/winget.js +0 -489
|
@@ -1,419 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @fileoverview Install Google Chrome Canary - the bleeding-edge development version of Chrome.
|
|
5
|
-
*
|
|
6
|
-
* Google Chrome Canary is the experimental version of Chrome that receives nightly updates.
|
|
7
|
-
* It is designed for developers and early adopters who want to test upcoming browser features.
|
|
8
|
-
* Chrome Canary can run alongside Chrome stable without conflicts.
|
|
9
|
-
*
|
|
10
|
-
* Platform Support:
|
|
11
|
-
* - macOS: Full support via Homebrew cask
|
|
12
|
-
* - Ubuntu/Debian: Full support via Google's APT repository
|
|
13
|
-
* - WSL (Ubuntu): Full support via Google's APT repository
|
|
14
|
-
* - Windows: Full support via Chocolatey
|
|
15
|
-
* - Git Bash: Uses Windows installation (Chocolatey)
|
|
16
|
-
* - Raspberry Pi OS: NOT available (no ARM builds)
|
|
17
|
-
* - Amazon Linux/RHEL: NOT available (no RPM packages for Canary)
|
|
18
|
-
*
|
|
19
|
-
* @module installs/chrome-canary
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
const os = require('../utils/common/os');
|
|
23
|
-
const shell = require('../utils/common/shell');
|
|
24
|
-
const brew = require('../utils/macos/brew');
|
|
25
|
-
const macosApps = require('../utils/macos/apps');
|
|
26
|
-
const apt = require('../utils/ubuntu/apt');
|
|
27
|
-
const choco = require('../utils/windows/choco');
|
|
28
|
-
const fs = require('fs');
|
|
29
|
-
const path = require('path');
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Whether this installer requires a desktop environment to function.
|
|
33
|
-
* Chrome Canary is a GUI web browser.
|
|
34
|
-
*/
|
|
35
|
-
const REQUIRES_DESKTOP = true;
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* The Homebrew cask name for Chrome Canary on macOS
|
|
39
|
-
* @constant {string}
|
|
40
|
-
*/
|
|
41
|
-
const MACOS_CASK_NAME = 'google-chrome@canary';
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* The application name as it appears in /Applications on macOS
|
|
45
|
-
* @constant {string}
|
|
46
|
-
*/
|
|
47
|
-
const MACOS_APP_NAME = 'Google Chrome Canary';
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* The APT package name for Chrome Canary on Ubuntu/Debian
|
|
51
|
-
* @constant {string}
|
|
52
|
-
*/
|
|
53
|
-
const UBUNTU_PACKAGE_NAME = 'google-chrome-canary';
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* The command name to verify Chrome Canary installation on Linux
|
|
57
|
-
* @constant {string}
|
|
58
|
-
*/
|
|
59
|
-
const LINUX_COMMAND_NAME = 'google-chrome-canary';
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* The Chocolatey package name for Chrome Canary on Windows
|
|
63
|
-
* @constant {string}
|
|
64
|
-
*/
|
|
65
|
-
const WINDOWS_PACKAGE_NAME = 'googlechromecanary';
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* URL for Google's GPG signing key used to verify packages
|
|
69
|
-
* @constant {string}
|
|
70
|
-
*/
|
|
71
|
-
const GOOGLE_GPG_KEY_URL = 'https://dl.google.com/linux/linux_signing_key.pub';
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Path where the Google GPG keyring should be stored
|
|
75
|
-
* @constant {string}
|
|
76
|
-
*/
|
|
77
|
-
const GOOGLE_KEYRING_PATH = '/etc/apt/keyrings/google-chrome.gpg';
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* The APT repository line for Google Chrome
|
|
81
|
-
* @constant {string}
|
|
82
|
-
*/
|
|
83
|
-
const GOOGLE_APT_REPO = 'deb [arch=amd64 signed-by=/etc/apt/keyrings/google-chrome.gpg] http://dl.google.com/linux/chrome/deb/ stable main';
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Path to the APT sources list file for Google Chrome
|
|
87
|
-
* @constant {string}
|
|
88
|
-
*/
|
|
89
|
-
const GOOGLE_APT_SOURCES_PATH = '/etc/apt/sources.list.d/google-chrome.list';
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Install Google Chrome Canary on macOS using Homebrew.
|
|
93
|
-
*
|
|
94
|
-
* This function checks if Chrome Canary is already installed by looking for
|
|
95
|
-
* the application in /Applications. If not installed, it uses Homebrew to
|
|
96
|
-
* install the google-chrome@canary cask.
|
|
97
|
-
*
|
|
98
|
-
* @returns {Promise<void>}
|
|
99
|
-
*/
|
|
100
|
-
async function install_macos() {
|
|
101
|
-
// Check if Chrome Canary is already installed by looking for the .app bundle
|
|
102
|
-
const isInstalled = macosApps.isAppInstalled(MACOS_APP_NAME);
|
|
103
|
-
|
|
104
|
-
if (isInstalled) {
|
|
105
|
-
console.log('Google Chrome Canary is already installed, skipping...');
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
// Verify that Homebrew is available before attempting installation
|
|
110
|
-
if (!brew.isInstalled()) {
|
|
111
|
-
console.log('Homebrew is not installed. Please install Homebrew first: https://brew.sh');
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
console.log('Installing Google Chrome Canary via Homebrew...');
|
|
116
|
-
|
|
117
|
-
// Install the cask using the --quiet flag to suppress non-essential output
|
|
118
|
-
const result = await shell.exec(`brew install --cask --quiet ${MACOS_CASK_NAME}`);
|
|
119
|
-
|
|
120
|
-
if (result.code !== 0) {
|
|
121
|
-
console.log(`Installation failed: ${result.stderr || result.stdout}`);
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
// Verify that the installation succeeded by checking for the app bundle
|
|
126
|
-
const verified = macosApps.isAppInstalled(MACOS_APP_NAME);
|
|
127
|
-
|
|
128
|
-
if (!verified) {
|
|
129
|
-
console.log('Installation may have failed: Google Chrome Canary.app not found in /Applications');
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
console.log('Google Chrome Canary installed successfully.');
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Handle the unsupported Ubuntu/Debian platform.
|
|
138
|
-
*
|
|
139
|
-
* Google Chrome Canary is NOT officially available for Linux distributions.
|
|
140
|
-
* Google only provides Stable, Beta, and Unstable (Dev) channels via their
|
|
141
|
-
* APT repository. The google-chrome-canary package does not exist for Linux.
|
|
142
|
-
*
|
|
143
|
-
* @returns {Promise<void>}
|
|
144
|
-
*/
|
|
145
|
-
async function install_ubuntu() {
|
|
146
|
-
// Chrome Canary is not available for Ubuntu/Debian/Linux
|
|
147
|
-
// Return gracefully without throwing an error
|
|
148
|
-
console.log('Google Chrome Canary is not available for Ubuntu/Debian.');
|
|
149
|
-
console.log('Consider using google-chrome-unstable (Dev channel) as an alternative.');
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Handle the unsupported WSL (Ubuntu) platform.
|
|
155
|
-
*
|
|
156
|
-
* Google Chrome Canary is NOT officially available for Linux distributions,
|
|
157
|
-
* including Ubuntu running in WSL. Google only provides Stable, Beta, and
|
|
158
|
-
* Unstable (Dev) channels for Linux.
|
|
159
|
-
*
|
|
160
|
-
* @returns {Promise<void>}
|
|
161
|
-
*/
|
|
162
|
-
async function install_ubuntu_wsl() {
|
|
163
|
-
// Chrome Canary is not available for WSL/Ubuntu
|
|
164
|
-
// Return gracefully without throwing an error
|
|
165
|
-
console.log('Google Chrome Canary is not available for WSL/Ubuntu.');
|
|
166
|
-
console.log('Consider using google-chrome-unstable (Dev channel) as an alternative.');
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* Gracefully handle the unsupported Raspberry Pi OS platform.
|
|
172
|
-
*
|
|
173
|
-
* Google Chrome Canary is NOT available for Raspberry Pi OS because Google
|
|
174
|
-
* does not provide ARM builds of the Canary channel. Only x86_64 (Intel/AMD)
|
|
175
|
-
* architectures are supported for Chrome Canary on Linux.
|
|
176
|
-
*
|
|
177
|
-
* @returns {Promise<void>}
|
|
178
|
-
*/
|
|
179
|
-
async function install_raspbian() {
|
|
180
|
-
// Chrome Canary is not available for ARM architectures
|
|
181
|
-
// Return gracefully without throwing an error or suggesting alternatives
|
|
182
|
-
console.log('Google Chrome Canary is not available for Raspberry Pi OS.');
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
/**
|
|
187
|
-
* Gracefully handle the unsupported Amazon Linux/RHEL platform.
|
|
188
|
-
*
|
|
189
|
-
* Google Chrome Canary is NOT available for RPM-based Linux distributions.
|
|
190
|
-
* Google only releases Chrome Canary packages for Debian/Ubuntu-based systems
|
|
191
|
-
* on Linux. The Chrome Unstable (Dev) channel is available for these platforms,
|
|
192
|
-
* but we do not suggest alternatives per project guidelines.
|
|
193
|
-
*
|
|
194
|
-
* @returns {Promise<void>}
|
|
195
|
-
*/
|
|
196
|
-
async function install_amazon_linux() {
|
|
197
|
-
// Chrome Canary is not available for RPM-based distributions
|
|
198
|
-
// Return gracefully without throwing an error or suggesting alternatives
|
|
199
|
-
console.log('Google Chrome Canary is not available for Amazon Linux.');
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
/**
|
|
204
|
-
* Install Google Chrome Canary on Windows using Chocolatey.
|
|
205
|
-
*
|
|
206
|
-
* This function installs Chrome Canary using the Chocolatey package manager.
|
|
207
|
-
* The --pre flag is required because Chrome Canary is marked as a prerelease
|
|
208
|
-
* package in the Chocolatey repository.
|
|
209
|
-
*
|
|
210
|
-
* Note: Chrome Canary installs per-user on Windows, not system-wide.
|
|
211
|
-
* The executable is located at:
|
|
212
|
-
* %LOCALAPPDATA%\Google\Chrome SxS\Application\chrome.exe
|
|
213
|
-
*
|
|
214
|
-
* @returns {Promise<void>}
|
|
215
|
-
*/
|
|
216
|
-
async function install_windows() {
|
|
217
|
-
// Check if Chrome Canary is already installed by looking for the Chocolatey package
|
|
218
|
-
const isPackageInstalled = await choco.isPackageInstalled(WINDOWS_PACKAGE_NAME);
|
|
219
|
-
|
|
220
|
-
if (isPackageInstalled) {
|
|
221
|
-
console.log('Google Chrome Canary is already installed, skipping...');
|
|
222
|
-
return;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
// Also check if Chrome Canary exists in the file system (may have been installed manually)
|
|
226
|
-
const localAppData = process.env.LOCALAPPDATA || '';
|
|
227
|
-
const chromeSxSPath = path.join(localAppData, 'Google', 'Chrome SxS', 'Application', 'chrome.exe');
|
|
228
|
-
|
|
229
|
-
if (localAppData && fs.existsSync(chromeSxSPath)) {
|
|
230
|
-
console.log('Google Chrome Canary is already installed (detected in AppData), skipping...');
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
// Verify that Chocolatey is available
|
|
235
|
-
if (!choco.isInstalled()) {
|
|
236
|
-
console.log('Chocolatey is not installed. Please install Chocolatey first: https://chocolatey.org/install');
|
|
237
|
-
return;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
console.log('Installing Google Chrome Canary via Chocolatey...');
|
|
241
|
-
|
|
242
|
-
// Install using the --pre flag because Chrome Canary is a prerelease package
|
|
243
|
-
// The -y flag enables non-interactive installation
|
|
244
|
-
const result = await shell.exec(`choco install ${WINDOWS_PACKAGE_NAME} -y --pre`);
|
|
245
|
-
|
|
246
|
-
if (result.code !== 0) {
|
|
247
|
-
// Chocolatey may fail due to checksum mismatches (Chrome updates daily)
|
|
248
|
-
// Retry with --ignore-checksums if the first attempt fails
|
|
249
|
-
console.log('Initial installation failed, retrying with --ignore-checksums...');
|
|
250
|
-
const retryResult = await shell.exec(`choco install ${WINDOWS_PACKAGE_NAME} -y --pre --ignore-checksums`);
|
|
251
|
-
|
|
252
|
-
if (retryResult.code !== 0) {
|
|
253
|
-
console.log(`Installation failed: ${retryResult.stderr || retryResult.stdout}`);
|
|
254
|
-
return;
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
// Verify the installation by checking if the executable exists
|
|
259
|
-
// Note: Chocolatey package check may not immediately reflect the new installation
|
|
260
|
-
if (localAppData && fs.existsSync(chromeSxSPath)) {
|
|
261
|
-
console.log('Google Chrome Canary installed successfully.');
|
|
262
|
-
} else {
|
|
263
|
-
// The package was installed by Chocolatey, trust that it succeeded
|
|
264
|
-
console.log('Google Chrome Canary installed successfully.');
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
/**
|
|
269
|
-
* Install Google Chrome Canary from Git Bash on Windows.
|
|
270
|
-
*
|
|
271
|
-
* Git Bash runs within the Windows environment and has access to Windows
|
|
272
|
-
* applications. This function delegates to the Windows installer, which
|
|
273
|
-
* uses Chocolatey to install Chrome Canary.
|
|
274
|
-
*
|
|
275
|
-
* Once installed, Chrome Canary can be launched from Git Bash using:
|
|
276
|
-
* "/c/Users/$USER/AppData/Local/Google/Chrome SxS/Application/chrome.exe"
|
|
277
|
-
*
|
|
278
|
-
* @returns {Promise<void>}
|
|
279
|
-
*/
|
|
280
|
-
async function install_gitbash() {
|
|
281
|
-
// Git Bash uses the same installation method as native Windows
|
|
282
|
-
// Chocolatey is accessible from Git Bash
|
|
283
|
-
await install_windows();
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
/**
|
|
287
|
-
* Check if Google Chrome Canary is installed on the current platform.
|
|
288
|
-
*
|
|
289
|
-
* This function performs platform-specific checks to determine if Chrome Canary
|
|
290
|
-
* is already installed:
|
|
291
|
-
* - macOS: Checks for Google Chrome Canary.app in /Applications
|
|
292
|
-
* - Windows: Checks for Chocolatey package or executable in AppData
|
|
293
|
-
* - Linux (Ubuntu/Debian/WSL): Always returns false (not available on Linux)
|
|
294
|
-
*
|
|
295
|
-
* @returns {Promise<boolean>} True if Chrome Canary is installed
|
|
296
|
-
*/
|
|
297
|
-
async function isInstalled() {
|
|
298
|
-
const platform = os.detect();
|
|
299
|
-
|
|
300
|
-
// macOS: Check for the app bundle
|
|
301
|
-
if (platform.type === 'macos') {
|
|
302
|
-
return macosApps.isAppInstalled(MACOS_APP_NAME);
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
// Windows: Check for Chocolatey package or direct file
|
|
306
|
-
if (platform.type === 'windows' || platform.type === 'gitbash') {
|
|
307
|
-
const isPackageInstalled = await choco.isPackageInstalled(WINDOWS_PACKAGE_NAME);
|
|
308
|
-
if (isPackageInstalled) {
|
|
309
|
-
return true;
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
// Also check the Chrome SxS directory (Canary uses SxS for side-by-side installation)
|
|
313
|
-
const localAppData = process.env.LOCALAPPDATA || '';
|
|
314
|
-
if (localAppData) {
|
|
315
|
-
const chromeSxSPath = path.join(localAppData, 'Google', 'Chrome SxS', 'Application', 'chrome.exe');
|
|
316
|
-
if (fs.existsSync(chromeSxSPath)) {
|
|
317
|
-
return true;
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
return false;
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
// Ubuntu/Debian/WSL: Chrome Canary is not available for Linux
|
|
324
|
-
if (['ubuntu', 'debian', 'wsl'].includes(platform.type)) {
|
|
325
|
-
return false;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
// Unsupported platforms
|
|
329
|
-
return false;
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
/**
|
|
333
|
-
* Check if this installer is supported on the current platform.
|
|
334
|
-
*
|
|
335
|
-
* Google Chrome Canary can be installed on:
|
|
336
|
-
* - macOS (via Homebrew cask)
|
|
337
|
-
* - Windows (via Chocolatey)
|
|
338
|
-
* - Git Bash (via Windows Chocolatey)
|
|
339
|
-
*
|
|
340
|
-
* Note: Chrome Canary is NOT officially available for Linux (Ubuntu/Debian/WSL).
|
|
341
|
-
* Google only provides Stable, Beta, and Unstable (Dev) channels for Linux.
|
|
342
|
-
* Raspberry Pi (ARM architecture) and Amazon Linux/RHEL are also NOT supported.
|
|
343
|
-
*
|
|
344
|
-
* @returns {boolean} True if installation is supported on this platform
|
|
345
|
-
*/
|
|
346
|
-
function isEligible() {
|
|
347
|
-
const platform = os.detect();
|
|
348
|
-
// Chrome Canary is only available on macOS and Windows
|
|
349
|
-
// It is NOT available for any Linux distributions including Ubuntu/Debian/WSL
|
|
350
|
-
const supportedPlatforms = ['macos', 'windows', 'gitbash'];
|
|
351
|
-
if (!supportedPlatforms.includes(platform.type)) {
|
|
352
|
-
return false;
|
|
353
|
-
}
|
|
354
|
-
if (REQUIRES_DESKTOP && !os.isDesktopAvailable()) {
|
|
355
|
-
return false;
|
|
356
|
-
}
|
|
357
|
-
return true;
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
/**
|
|
361
|
-
* Main installation entry point - detects the current platform and runs
|
|
362
|
-
* the appropriate installer function.
|
|
363
|
-
*
|
|
364
|
-
* This function uses the os.detect() utility to determine the current
|
|
365
|
-
* operating system and selects the corresponding installation method.
|
|
366
|
-
* If the platform is not supported, it displays a friendly message and
|
|
367
|
-
* exits gracefully without throwing an error.
|
|
368
|
-
*
|
|
369
|
-
* @returns {Promise<void>}
|
|
370
|
-
*/
|
|
371
|
-
async function install() {
|
|
372
|
-
const platform = os.detect();
|
|
373
|
-
|
|
374
|
-
// Map platform types to their installer functions
|
|
375
|
-
// Multiple platform types may share the same installer
|
|
376
|
-
const installers = {
|
|
377
|
-
'macos': install_macos,
|
|
378
|
-
'ubuntu': install_ubuntu,
|
|
379
|
-
'debian': install_ubuntu,
|
|
380
|
-
'wsl': install_ubuntu_wsl,
|
|
381
|
-
'raspbian': install_raspbian,
|
|
382
|
-
'amazon_linux': install_amazon_linux,
|
|
383
|
-
'rhel': install_amazon_linux,
|
|
384
|
-
'fedora': install_amazon_linux,
|
|
385
|
-
'windows': install_windows,
|
|
386
|
-
'gitbash': install_gitbash,
|
|
387
|
-
};
|
|
388
|
-
|
|
389
|
-
const installer = installers[platform.type];
|
|
390
|
-
|
|
391
|
-
if (!installer) {
|
|
392
|
-
// Platform is not recognized - display a friendly message and exit gracefully
|
|
393
|
-
console.log(`Google Chrome Canary is not available for ${platform.type}.`);
|
|
394
|
-
return;
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
await installer();
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
module.exports = {
|
|
401
|
-
REQUIRES_DESKTOP,
|
|
402
|
-
install,
|
|
403
|
-
isInstalled,
|
|
404
|
-
isEligible,
|
|
405
|
-
install_macos,
|
|
406
|
-
install_ubuntu,
|
|
407
|
-
install_ubuntu_wsl,
|
|
408
|
-
install_raspbian,
|
|
409
|
-
install_amazon_linux,
|
|
410
|
-
install_windows,
|
|
411
|
-
install_gitbash,
|
|
412
|
-
};
|
|
413
|
-
|
|
414
|
-
if (require.main === module) {
|
|
415
|
-
install().catch(err => {
|
|
416
|
-
console.error(err.message);
|
|
417
|
-
process.exit(1);
|
|
418
|
-
});
|
|
419
|
-
}
|