@fredlackey/devutils 0.0.1 → 0.0.3
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 +5 -5
- package/package.json +1 -1
- package/src/commands/install.js +374 -36
- package/src/installs/adobe-creative-cloud.js +527 -25
- package/src/installs/adobe-creative-cloud.md +605 -0
- package/src/installs/appcleaner.js +303 -26
- package/src/installs/appcleaner.md +699 -0
- package/src/installs/apt-transport-https.js +390 -0
- package/src/installs/apt-transport-https.md +678 -0
- package/src/installs/atomicparsley.js +624 -26
- package/src/installs/atomicparsley.md +795 -0
- package/src/installs/aws-cli.js +779 -26
- package/src/installs/aws-cli.md +727 -0
- package/src/installs/balena-etcher.js +688 -26
- package/src/installs/balena-etcher.md +761 -0
- package/src/installs/bambu-studio.js +912 -26
- package/src/installs/bambu-studio.md +780 -0
- package/src/installs/bash-completion.js +554 -23
- package/src/installs/bash-completion.md +833 -0
- package/src/installs/bash.js +399 -26
- package/src/installs/bash.md +993 -0
- package/src/installs/beyond-compare.js +585 -26
- package/src/installs/beyond-compare.md +813 -0
- package/src/installs/build-essential.js +511 -26
- package/src/installs/build-essential.md +977 -0
- package/src/installs/ca-certificates.js +618 -0
- package/src/installs/ca-certificates.md +937 -0
- package/src/installs/caffeine.js +490 -26
- package/src/installs/caffeine.md +839 -0
- package/src/installs/camtasia.js +577 -25
- package/src/installs/camtasia.md +762 -0
- package/src/installs/chatgpt.js +458 -26
- package/src/installs/chatgpt.md +814 -0
- package/src/installs/chocolatey.js +447 -0
- package/src/installs/chocolatey.md +661 -0
- package/src/installs/chrome-canary.js +472 -26
- package/src/installs/chrome-canary.md +641 -0
- package/src/installs/chromium.js +645 -26
- package/src/installs/chromium.md +838 -0
- package/src/installs/claude-code.js +558 -26
- package/src/installs/claude-code.md +1173 -0
- package/src/installs/curl.js +361 -26
- package/src/installs/curl.md +714 -0
- package/src/installs/cursor.js +561 -26
- package/src/installs/cursor.md +970 -0
- package/src/installs/dbschema.js +674 -26
- package/src/installs/dbschema.md +925 -0
- package/src/installs/dependencies.md +435 -0
- package/src/installs/development-tools.js +600 -0
- package/src/installs/development-tools.md +977 -0
- package/src/installs/docker.js +1010 -25
- package/src/installs/docker.md +1109 -0
- package/src/installs/drawio.js +1001 -26
- package/src/installs/drawio.md +795 -0
- package/src/installs/elmedia-player.js +328 -25
- package/src/installs/elmedia-player.md +556 -0
- package/src/installs/ffmpeg.js +870 -25
- package/src/installs/ffmpeg.md +852 -0
- package/src/installs/file.js +464 -0
- package/src/installs/file.md +987 -0
- package/src/installs/gemini-cli.js +793 -26
- package/src/installs/gemini-cli.md +1153 -0
- package/src/installs/git.js +382 -26
- package/src/installs/git.md +907 -0
- package/src/installs/gitego.js +931 -26
- package/src/installs/gitego.md +1172 -0
- package/src/installs/go.js +913 -26
- package/src/installs/go.md +958 -0
- package/src/installs/google-chrome.js +801 -25
- package/src/installs/google-chrome.md +862 -0
- package/src/installs/gpg.js +412 -73
- package/src/installs/gpg.md +1056 -0
- package/src/installs/homebrew.js +1015 -26
- package/src/installs/homebrew.md +988 -0
- package/src/installs/imageoptim.js +950 -26
- package/src/installs/imageoptim.md +1119 -0
- package/src/installs/installers.json +2297 -0
- package/src/installs/jq.js +382 -26
- package/src/installs/jq.md +809 -0
- package/src/installs/keyboard-maestro.js +701 -26
- package/src/installs/keyboard-maestro.md +825 -0
- package/src/installs/latex.js +771 -26
- package/src/installs/latex.md +1095 -0
- package/src/installs/lftp.js +338 -26
- package/src/installs/lftp.md +907 -0
- package/src/installs/lsb-release.js +346 -0
- package/src/installs/lsb-release.md +814 -0
- package/src/installs/messenger.js +829 -26
- package/src/installs/messenger.md +900 -0
- package/src/installs/microsoft-office.js +550 -26
- package/src/installs/microsoft-office.md +760 -0
- package/src/installs/microsoft-teams.js +782 -25
- package/src/installs/microsoft-teams.md +886 -0
- package/src/installs/node.js +886 -26
- package/src/installs/node.md +1153 -0
- package/src/installs/nordpass.js +698 -26
- package/src/installs/nordpass.md +921 -0
- package/src/installs/nvm.js +977 -26
- package/src/installs/nvm.md +1057 -0
- package/src/installs/openssh.js +734 -64
- package/src/installs/openssh.md +1056 -0
- package/src/installs/pandoc.js +644 -26
- package/src/installs/pandoc.md +1036 -0
- package/src/installs/pinentry.js +492 -26
- package/src/installs/pinentry.md +1142 -0
- package/src/installs/pngyu.js +851 -26
- package/src/installs/pngyu.md +896 -0
- package/src/installs/postman.js +781 -26
- package/src/installs/postman.md +940 -0
- package/src/installs/procps.js +425 -0
- package/src/installs/procps.md +851 -0
- package/src/installs/safari-tech-preview.js +355 -25
- package/src/installs/safari-tech-preview.md +533 -0
- package/src/installs/sfnt2woff.js +640 -26
- package/src/installs/sfnt2woff.md +795 -0
- package/src/installs/shellcheck.js +463 -26
- package/src/installs/shellcheck.md +1005 -0
- package/src/installs/slack.js +722 -25
- package/src/installs/slack.md +865 -0
- package/src/installs/snagit.js +566 -25
- package/src/installs/snagit.md +844 -0
- package/src/installs/software-properties-common.js +372 -0
- package/src/installs/software-properties-common.md +805 -0
- package/src/installs/spotify.js +858 -25
- package/src/installs/spotify.md +901 -0
- package/src/installs/studio-3t.js +803 -26
- package/src/installs/studio-3t.md +918 -0
- package/src/installs/sublime-text.js +780 -25
- package/src/installs/sublime-text.md +914 -0
- package/src/installs/superwhisper.js +687 -25
- package/src/installs/superwhisper.md +630 -0
- package/src/installs/tailscale.js +727 -26
- package/src/installs/tailscale.md +1100 -0
- package/src/installs/tar.js +389 -0
- package/src/installs/tar.md +946 -0
- package/src/installs/termius.js +780 -26
- package/src/installs/termius.md +844 -0
- package/src/installs/terraform.js +761 -26
- package/src/installs/terraform.md +899 -0
- package/src/installs/tidal.js +752 -25
- package/src/installs/tidal.md +864 -0
- package/src/installs/tmux.js +328 -26
- package/src/installs/tmux.md +1030 -0
- package/src/installs/tree.js +393 -26
- package/src/installs/tree.md +833 -0
- package/src/installs/unzip.js +460 -0
- package/src/installs/unzip.md +879 -0
- package/src/installs/vim.js +403 -26
- package/src/installs/vim.md +1040 -0
- package/src/installs/vlc.js +803 -26
- package/src/installs/vlc.md +927 -0
- package/src/installs/vscode.js +825 -26
- package/src/installs/vscode.md +1002 -0
- package/src/installs/wget.js +415 -0
- package/src/installs/wget.md +791 -0
- package/src/installs/whatsapp.js +710 -25
- package/src/installs/whatsapp.md +854 -0
- package/src/installs/winpty.js +352 -0
- package/src/installs/winpty.md +620 -0
- package/src/installs/woff2.js +535 -26
- package/src/installs/woff2.md +977 -0
- package/src/installs/wsl.js +572 -0
- package/src/installs/wsl.md +699 -0
- package/src/installs/xcode-clt.js +520 -0
- package/src/installs/xcode-clt.md +351 -0
- package/src/installs/xcode.js +542 -26
- package/src/installs/xcode.md +573 -0
- package/src/installs/yarn.js +806 -26
- package/src/installs/yarn.md +1074 -0
- package/src/installs/yq.js +636 -26
- package/src/installs/yq.md +944 -0
- package/src/installs/yt-dlp.js +683 -26
- package/src/installs/yt-dlp.md +946 -0
- package/src/installs/yum-utils.js +297 -0
- package/src/installs/yum-utils.md +648 -0
- package/src/installs/zoom.js +740 -25
- package/src/installs/zoom.md +884 -0
- package/src/scripts/README.md +567 -45
- package/src/scripts/STATUS.md +208 -0
- package/src/scripts/afk.js +395 -7
- package/src/scripts/backup-all.js +731 -9
- package/src/scripts/backup-source.js +711 -8
- package/src/scripts/brewd.js +373 -7
- package/src/scripts/brewi.js +505 -9
- package/src/scripts/brewr.js +512 -9
- package/src/scripts/brews.js +462 -9
- package/src/scripts/brewu.js +488 -7
- package/src/scripts/c.js +185 -7
- package/src/scripts/ccurl.js +325 -8
- package/src/scripts/certbot-crontab-init.js +488 -8
- package/src/scripts/certbot-init.js +641 -9
- package/src/scripts/ch.js +339 -7
- package/src/scripts/claude-danger.js +253 -8
- package/src/scripts/clean-dev.js +419 -8
- package/src/scripts/clear-dns-cache.js +525 -7
- package/src/scripts/clone.js +417 -7
- package/src/scripts/code-all.js +420 -7
- package/src/scripts/count-files.js +195 -8
- package/src/scripts/count-folders.js +195 -8
- package/src/scripts/count.js +248 -8
- package/src/scripts/d.js +203 -7
- package/src/scripts/datauri.js +373 -8
- package/src/scripts/delete-files.js +363 -7
- package/src/scripts/docker-clean.js +410 -8
- package/src/scripts/dp.js +426 -7
- package/src/scripts/e.js +375 -9
- package/src/scripts/empty-trash.js +497 -7
- package/src/scripts/evm.js +428 -9
- package/src/scripts/fetch-github-repos.js +441 -10
- package/src/scripts/get-channel.js +329 -8
- package/src/scripts/get-course.js +384 -11
- package/src/scripts/get-dependencies.js +290 -9
- package/src/scripts/get-folder.js +783 -10
- package/src/scripts/get-tunes.js +411 -10
- package/src/scripts/get-video.js +352 -9
- package/src/scripts/git-backup.js +561 -9
- package/src/scripts/git-clone.js +477 -9
- package/src/scripts/git-pup.js +303 -7
- package/src/scripts/git-push.js +380 -8
- package/src/scripts/h.js +607 -9
- package/src/scripts/hide-desktop-icons.js +483 -7
- package/src/scripts/hide-hidden-files.js +522 -7
- package/src/scripts/install-dependencies-from.js +440 -9
- package/src/scripts/ips.js +647 -10
- package/src/scripts/iso.js +354 -8
- package/src/scripts/killni.js +561 -7
- package/src/scripts/ll.js +451 -8
- package/src/scripts/local-ip.js +310 -8
- package/src/scripts/m.js +508 -8
- package/src/scripts/map.js +293 -8
- package/src/scripts/mkd.js +287 -7
- package/src/scripts/ncu-update-all.js +441 -8
- package/src/scripts/nginx-init.js +702 -12
- package/src/scripts/npmi.js +366 -7
- package/src/scripts/o.js +495 -8
- package/src/scripts/org-by-date.js +321 -7
- package/src/scripts/p.js +208 -7
- package/src/scripts/packages.js +313 -8
- package/src/scripts/path.js +209 -7
- package/src/scripts/ports.js +582 -8
- package/src/scripts/q.js +290 -8
- package/src/scripts/refresh-files.js +378 -10
- package/src/scripts/remove-smaller-files.js +500 -8
- package/src/scripts/rename-files-with-date.js +517 -9
- package/src/scripts/resize-image.js +523 -9
- package/src/scripts/rm-safe.js +653 -8
- package/src/scripts/s.js +525 -9
- package/src/scripts/set-git-public.js +349 -7
- package/src/scripts/show-desktop-icons.js +459 -7
- package/src/scripts/show-hidden-files.js +456 -7
- package/src/scripts/tpa.js +265 -8
- package/src/scripts/tpo.js +264 -7
- package/src/scripts/u.js +489 -7
- package/src/scripts/vpush.js +422 -8
- package/src/scripts/y.js +267 -7
- package/src/utils/common/os.js +94 -2
- package/src/utils/ubuntu/apt.js +13 -7
- package/src/utils/windows/choco.js +82 -26
- package/src/utils/windows/winget.js +89 -27
|
@@ -1,23 +1,472 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* show-hidden-files - Configure file manager to show hidden files (dotfiles)
|
|
5
|
+
*
|
|
6
|
+
* Migrated from legacy dotfiles alias.
|
|
7
|
+
* Original: alias show-hidden-files="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
|
|
8
|
+
*
|
|
9
|
+
* This script configures the system's file manager to display hidden files.
|
|
10
|
+
* Hidden files are those that start with a dot (.) on Unix-like systems,
|
|
11
|
+
* or have the "hidden" attribute set on Windows.
|
|
12
|
+
*
|
|
13
|
+
* The behavior varies by platform:
|
|
14
|
+
* - macOS: Modifies Finder preferences and restarts Finder
|
|
15
|
+
* - Linux (GNOME): Uses gsettings to configure Nautilus file manager
|
|
16
|
+
* - Linux (other): Provides instructions for toggling hidden files
|
|
17
|
+
* - Windows: Modifies Explorer settings via registry or PowerShell
|
|
18
|
+
*
|
|
5
19
|
* @module scripts/show-hidden-files
|
|
6
20
|
*/
|
|
7
21
|
|
|
22
|
+
const os = require('../utils/common/os');
|
|
23
|
+
const { execSync } = require('child_process');
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Helper function to check if a command exists on the system.
|
|
27
|
+
* Used to detect which tools are available for configuration.
|
|
28
|
+
*
|
|
29
|
+
* @param {string} cmd - The command name to check
|
|
30
|
+
* @returns {boolean} True if the command exists, false otherwise
|
|
31
|
+
*/
|
|
32
|
+
function isCommandAvailable(cmd) {
|
|
33
|
+
try {
|
|
34
|
+
// Use 'which' on Unix-like systems, 'where' on Windows
|
|
35
|
+
const checkCmd = process.platform === 'win32' ? `where ${cmd}` : `which ${cmd}`;
|
|
36
|
+
execSync(checkCmd, { stdio: 'ignore' });
|
|
37
|
+
return true;
|
|
38
|
+
} catch {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Pure Node.js implementation - NOT APPLICABLE for this script.
|
|
45
|
+
*
|
|
46
|
+
* Showing hidden files requires OS-level integration with the file manager:
|
|
47
|
+
* - macOS uses the `defaults` command to modify Finder preferences
|
|
48
|
+
* - Linux uses gsettings/dconf for GNOME or DE-specific configuration
|
|
49
|
+
* - Windows uses registry modifications or PowerShell cmdlets
|
|
50
|
+
*
|
|
51
|
+
* There is no pure Node.js way to configure file manager preferences.
|
|
52
|
+
*
|
|
53
|
+
* @param {string[]} args - Command line arguments (unused)
|
|
54
|
+
* @returns {Promise<void>}
|
|
55
|
+
* @throws {Error} Always throws - this function should not be called directly
|
|
56
|
+
*/
|
|
57
|
+
async function do_show_hidden_files_nodejs(args) {
|
|
58
|
+
// Configuring file manager preferences is inherently platform-specific.
|
|
59
|
+
// Each platform has its own settings system and file manager.
|
|
60
|
+
throw new Error(
|
|
61
|
+
'do_show_hidden_files_nodejs should not be called directly. ' +
|
|
62
|
+
'File manager configuration requires OS-specific commands.'
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Show hidden files in macOS Finder.
|
|
68
|
+
*
|
|
69
|
+
* Uses the original dotfiles approach:
|
|
70
|
+
* 1. Set AppleShowAllFiles preference to true using `defaults` command
|
|
71
|
+
* 2. Restart Finder with `killall` to apply changes immediately
|
|
72
|
+
*
|
|
73
|
+
* The setting persists across reboots. To hide hidden files again,
|
|
74
|
+
* use the companion `hide-hidden-files` command.
|
|
75
|
+
*
|
|
76
|
+
* @param {string[]} args - Command line arguments (unused)
|
|
77
|
+
* @returns {Promise<void>}
|
|
78
|
+
*/
|
|
79
|
+
async function do_show_hidden_files_macos(args) {
|
|
80
|
+
try {
|
|
81
|
+
console.log('Configuring Finder to show hidden files...');
|
|
82
|
+
|
|
83
|
+
// Step 1: Write the preference to show all files
|
|
84
|
+
// This sets AppleShowAllFiles to true in Finder's preferences
|
|
85
|
+
execSync('defaults write com.apple.finder AppleShowAllFiles -bool true', {
|
|
86
|
+
stdio: 'pipe'
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
// Step 2: Restart Finder to apply the change immediately
|
|
90
|
+
// Without this, users would need to log out or restart Finder manually
|
|
91
|
+
execSync('killall Finder', { stdio: 'pipe' });
|
|
92
|
+
|
|
93
|
+
console.log('Done! Hidden files are now visible in Finder.');
|
|
94
|
+
console.log('');
|
|
95
|
+
console.log('To hide them again, run: hide-hidden-files');
|
|
96
|
+
} catch (error) {
|
|
97
|
+
console.error('Error: Could not configure Finder preferences.');
|
|
98
|
+
console.error('Make sure you have the necessary permissions.');
|
|
99
|
+
if (error.message) {
|
|
100
|
+
console.error(`Details: ${error.message}`);
|
|
101
|
+
}
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Show hidden files in Ubuntu file managers.
|
|
108
|
+
*
|
|
109
|
+
* Ubuntu typically uses Nautilus (GNOME Files) as the default file manager.
|
|
110
|
+
* This function uses gsettings to enable the "show-hidden" preference.
|
|
111
|
+
*
|
|
112
|
+
* For other file managers (Thunar, Dolphin, etc.), users can typically
|
|
113
|
+
* press Ctrl+H to toggle hidden file visibility.
|
|
114
|
+
*
|
|
115
|
+
* @param {string[]} args - Command line arguments (unused)
|
|
116
|
+
* @returns {Promise<void>}
|
|
117
|
+
*/
|
|
118
|
+
async function do_show_hidden_files_ubuntu(args) {
|
|
119
|
+
// Check if we have a desktop environment available
|
|
120
|
+
const hasDesktop = os.isDesktopAvailable();
|
|
121
|
+
|
|
122
|
+
if (!hasDesktop) {
|
|
123
|
+
console.log('No desktop environment detected.');
|
|
124
|
+
console.log('');
|
|
125
|
+
console.log('On a headless server, hidden files are always visible in the terminal.');
|
|
126
|
+
console.log('Use "ls -a" to list all files including hidden ones.');
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// Try gsettings for GNOME/Nautilus first (most common on Ubuntu)
|
|
131
|
+
if (isCommandAvailable('gsettings')) {
|
|
132
|
+
try {
|
|
133
|
+
console.log('Configuring file manager to show hidden files...');
|
|
134
|
+
|
|
135
|
+
// This setting tells Nautilus (GNOME Files) to show hidden files
|
|
136
|
+
execSync('gsettings set org.gnome.nautilus.preferences show-hidden-files true', {
|
|
137
|
+
stdio: 'pipe'
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
console.log('Done! Hidden files are now visible in the file manager.');
|
|
141
|
+
console.log('');
|
|
142
|
+
console.log('To hide them again, run: hide-hidden-files');
|
|
143
|
+
console.log('Or press Ctrl+H in the file manager to toggle visibility.');
|
|
144
|
+
return;
|
|
145
|
+
} catch {
|
|
146
|
+
// gsettings command failed, maybe not using GNOME
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// Try dconf for GNOME (alternative method)
|
|
151
|
+
if (isCommandAvailable('dconf')) {
|
|
152
|
+
try {
|
|
153
|
+
execSync('dconf write /org/gnome/nautilus/preferences/show-hidden-files true', {
|
|
154
|
+
stdio: 'pipe'
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
console.log('Done! Hidden files are now visible in Nautilus.');
|
|
158
|
+
console.log('');
|
|
159
|
+
console.log('To hide them again, run: hide-hidden-files');
|
|
160
|
+
return;
|
|
161
|
+
} catch {
|
|
162
|
+
// dconf command failed
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Provide generic instructions for other desktop environments
|
|
167
|
+
console.log('Could not automatically configure the file manager.');
|
|
168
|
+
console.log('');
|
|
169
|
+
console.log('To show hidden files manually:');
|
|
170
|
+
console.log(' - Press Ctrl+H in most file managers to toggle visibility');
|
|
171
|
+
console.log(' - In Nautilus: View menu > Show Hidden Files');
|
|
172
|
+
console.log(' - In Thunar: View menu > Show Hidden Files');
|
|
173
|
+
console.log(' - In Dolphin: View menu > Hidden Files (or press Alt+.)');
|
|
174
|
+
console.log('');
|
|
175
|
+
console.log('In the terminal, use "ls -a" to list all files.');
|
|
176
|
+
}
|
|
177
|
+
|
|
8
178
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
179
|
+
* Show hidden files on Raspberry Pi OS.
|
|
180
|
+
*
|
|
181
|
+
* Raspberry Pi OS typically uses PCManFM (LXDE) or Thunar (XFCE) as the
|
|
182
|
+
* default file manager. This function attempts to configure the appropriate
|
|
183
|
+
* file manager or provides manual instructions.
|
|
11
184
|
*
|
|
12
185
|
* @param {string[]} args - Command line arguments (unused)
|
|
13
186
|
* @returns {Promise<void>}
|
|
14
187
|
*/
|
|
15
|
-
async function
|
|
16
|
-
//
|
|
188
|
+
async function do_show_hidden_files_raspbian(args) {
|
|
189
|
+
// Check if we have a desktop environment available
|
|
190
|
+
const hasDesktop = os.isDesktopAvailable();
|
|
191
|
+
|
|
192
|
+
if (!hasDesktop) {
|
|
193
|
+
console.log('No desktop environment detected.');
|
|
194
|
+
console.log('');
|
|
195
|
+
console.log('On a headless Raspberry Pi, hidden files are always visible in the terminal.');
|
|
196
|
+
console.log('Use "ls -a" to list all files including hidden ones.');
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// Try gsettings for GNOME/Nautilus (if using GNOME desktop on Pi)
|
|
201
|
+
if (isCommandAvailable('gsettings')) {
|
|
202
|
+
try {
|
|
203
|
+
execSync('gsettings set org.gnome.nautilus.preferences show-hidden-files true', {
|
|
204
|
+
stdio: 'pipe'
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
console.log('Done! Hidden files are now visible in the file manager.');
|
|
208
|
+
console.log('');
|
|
209
|
+
console.log('To hide them again, run: hide-hidden-files');
|
|
210
|
+
return;
|
|
211
|
+
} catch {
|
|
212
|
+
// gsettings failed, try other methods
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// Provide instructions for PCManFM (common on Raspberry Pi OS with LXDE)
|
|
217
|
+
console.log('Raspberry Pi OS file manager configuration:');
|
|
218
|
+
console.log('');
|
|
219
|
+
console.log('For PCManFM (default on LXDE desktop):');
|
|
220
|
+
console.log(' 1. Open the File Manager');
|
|
221
|
+
console.log(' 2. Go to Edit menu > Preferences');
|
|
222
|
+
console.log(' 3. Check "Show hidden files"');
|
|
223
|
+
console.log(' Or press Ctrl+H to toggle visibility');
|
|
224
|
+
console.log('');
|
|
225
|
+
console.log('For other file managers:');
|
|
226
|
+
console.log(' - Press Ctrl+H to toggle hidden files');
|
|
227
|
+
console.log('');
|
|
228
|
+
console.log('In the terminal, use "ls -a" to list all files.');
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Show hidden files on Amazon Linux.
|
|
233
|
+
*
|
|
234
|
+
* Amazon Linux is typically used in server environments without a desktop.
|
|
235
|
+
* If a desktop is present, it attempts to configure the file manager.
|
|
236
|
+
*
|
|
237
|
+
* @param {string[]} args - Command line arguments (unused)
|
|
238
|
+
* @returns {Promise<void>}
|
|
239
|
+
*/
|
|
240
|
+
async function do_show_hidden_files_amazon_linux(args) {
|
|
241
|
+
// Check if we have a desktop environment available
|
|
242
|
+
const hasDesktop = os.isDesktopAvailable();
|
|
243
|
+
|
|
244
|
+
if (!hasDesktop) {
|
|
245
|
+
console.log('No desktop environment detected.');
|
|
246
|
+
console.log('Amazon Linux is typically used in server environments.');
|
|
247
|
+
console.log('');
|
|
248
|
+
console.log('Hidden files are always visible in the terminal.');
|
|
249
|
+
console.log('Use "ls -a" to list all files including hidden ones.');
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// Try gsettings for GNOME
|
|
254
|
+
if (isCommandAvailable('gsettings')) {
|
|
255
|
+
try {
|
|
256
|
+
execSync('gsettings set org.gnome.nautilus.preferences show-hidden-files true', {
|
|
257
|
+
stdio: 'pipe'
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
console.log('Done! Hidden files are now visible in the file manager.');
|
|
261
|
+
console.log('');
|
|
262
|
+
console.log('To hide them again, run: hide-hidden-files');
|
|
263
|
+
return;
|
|
264
|
+
} catch {
|
|
265
|
+
// gsettings failed
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
console.log('Could not automatically configure the file manager.');
|
|
270
|
+
console.log('Press Ctrl+H in most file managers to toggle hidden files.');
|
|
271
|
+
console.log('');
|
|
272
|
+
console.log('In the terminal, use "ls -a" to list all files.');
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Show hidden files in Windows File Explorer using Command Prompt.
|
|
277
|
+
*
|
|
278
|
+
* Windows hidden files are controlled by two settings in the registry:
|
|
279
|
+
* 1. Hidden - Controls visibility of files with the "hidden" attribute
|
|
280
|
+
* 2. ShowSuperHidden - Controls visibility of system files
|
|
281
|
+
*
|
|
282
|
+
* This function modifies the Explorer settings via the registry.
|
|
283
|
+
*
|
|
284
|
+
* @param {string[]} args - Command line arguments (unused)
|
|
285
|
+
* @returns {Promise<void>}
|
|
286
|
+
*/
|
|
287
|
+
async function do_show_hidden_files_cmd(args) {
|
|
288
|
+
try {
|
|
289
|
+
console.log('Configuring File Explorer to show hidden files...');
|
|
290
|
+
|
|
291
|
+
// Set Hidden to 1 (show hidden files)
|
|
292
|
+
// The "Hidden" key controls whether files with the hidden attribute are displayed
|
|
293
|
+
// Value 1 = show, Value 2 = don't show
|
|
294
|
+
execSync(
|
|
295
|
+
'reg add "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced" /v Hidden /t REG_DWORD /d 1 /f',
|
|
296
|
+
{ stdio: 'pipe' }
|
|
297
|
+
);
|
|
298
|
+
|
|
299
|
+
// Optionally show super hidden (system) files as well
|
|
300
|
+
// Value 1 = show, Value 0 = don't show
|
|
301
|
+
execSync(
|
|
302
|
+
'reg add "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced" /v ShowSuperHidden /t REG_DWORD /d 1 /f',
|
|
303
|
+
{ stdio: 'pipe' }
|
|
304
|
+
);
|
|
305
|
+
|
|
306
|
+
console.log('Done! Registry has been updated to show hidden files.');
|
|
307
|
+
console.log('');
|
|
308
|
+
console.log('Note: You may need to:');
|
|
309
|
+
console.log(' 1. Open a new File Explorer window, or');
|
|
310
|
+
console.log(' 2. Press F5 to refresh the current window');
|
|
311
|
+
console.log('');
|
|
312
|
+
console.log('To hide them again, run: hide-hidden-files');
|
|
313
|
+
} catch (error) {
|
|
314
|
+
console.error('Error: Could not modify registry settings.');
|
|
315
|
+
console.error('Make sure you have the necessary permissions.');
|
|
316
|
+
if (error.message) {
|
|
317
|
+
console.error(`Details: ${error.message}`);
|
|
318
|
+
}
|
|
319
|
+
process.exit(1);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Show hidden files in Windows File Explorer using PowerShell.
|
|
325
|
+
*
|
|
326
|
+
* Uses PowerShell's Set-ItemProperty cmdlet to modify Explorer settings.
|
|
327
|
+
* This is a cleaner approach than using the reg command directly.
|
|
328
|
+
*
|
|
329
|
+
* @param {string[]} args - Command line arguments (unused)
|
|
330
|
+
* @returns {Promise<void>}
|
|
331
|
+
*/
|
|
332
|
+
async function do_show_hidden_files_powershell(args) {
|
|
333
|
+
try {
|
|
334
|
+
console.log('Configuring File Explorer to show hidden files...');
|
|
335
|
+
|
|
336
|
+
// PowerShell command to set the Hidden property
|
|
337
|
+
// Using Set-ItemProperty for cleaner registry access
|
|
338
|
+
const regPath = 'HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced';
|
|
339
|
+
|
|
340
|
+
// Show hidden files (Hidden = 1)
|
|
341
|
+
execSync(
|
|
342
|
+
`powershell -Command "Set-ItemProperty -Path '${regPath}' -Name 'Hidden' -Value 1"`,
|
|
343
|
+
{ stdio: 'pipe' }
|
|
344
|
+
);
|
|
345
|
+
|
|
346
|
+
// Show super hidden (system) files (ShowSuperHidden = 1)
|
|
347
|
+
execSync(
|
|
348
|
+
`powershell -Command "Set-ItemProperty -Path '${regPath}' -Name 'ShowSuperHidden' -Value 1"`,
|
|
349
|
+
{ stdio: 'pipe' }
|
|
350
|
+
);
|
|
351
|
+
|
|
352
|
+
console.log('Done! Registry has been updated to show hidden files.');
|
|
353
|
+
console.log('');
|
|
354
|
+
console.log('Note: You may need to:');
|
|
355
|
+
console.log(' 1. Open a new File Explorer window, or');
|
|
356
|
+
console.log(' 2. Press F5 to refresh the current window');
|
|
357
|
+
console.log('');
|
|
358
|
+
console.log('To hide them again, run: hide-hidden-files');
|
|
359
|
+
} catch (error) {
|
|
360
|
+
console.error('Error: Could not modify registry settings.');
|
|
361
|
+
console.error('Make sure you have the necessary permissions.');
|
|
362
|
+
if (error.message) {
|
|
363
|
+
console.error(`Details: ${error.message}`);
|
|
364
|
+
}
|
|
365
|
+
process.exit(1);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* Show hidden files in Windows File Explorer from Git Bash.
|
|
371
|
+
*
|
|
372
|
+
* Git Bash runs on Windows, so we use the Windows registry commands.
|
|
373
|
+
* The reg.exe command is available in Git Bash's PATH.
|
|
374
|
+
*
|
|
375
|
+
* @param {string[]} args - Command line arguments (unused)
|
|
376
|
+
* @returns {Promise<void>}
|
|
377
|
+
*/
|
|
378
|
+
async function do_show_hidden_files_gitbash(args) {
|
|
379
|
+
try {
|
|
380
|
+
console.log('Configuring File Explorer to show hidden files...');
|
|
381
|
+
|
|
382
|
+
// Use reg.exe (available in Git Bash on Windows)
|
|
383
|
+
// Note: In Git Bash, we need to use forward slashes or escape backslashes
|
|
384
|
+
execSync(
|
|
385
|
+
'reg add "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced" /v Hidden /t REG_DWORD /d 1 /f',
|
|
386
|
+
{ stdio: 'pipe' }
|
|
387
|
+
);
|
|
388
|
+
|
|
389
|
+
execSync(
|
|
390
|
+
'reg add "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced" /v ShowSuperHidden /t REG_DWORD /d 1 /f',
|
|
391
|
+
{ stdio: 'pipe' }
|
|
392
|
+
);
|
|
393
|
+
|
|
394
|
+
console.log('Done! Registry has been updated to show hidden files.');
|
|
395
|
+
console.log('');
|
|
396
|
+
console.log('Note: You may need to:');
|
|
397
|
+
console.log(' 1. Open a new File Explorer window, or');
|
|
398
|
+
console.log(' 2. Press F5 to refresh the current window');
|
|
399
|
+
console.log('');
|
|
400
|
+
console.log('To hide them again, run: hide-hidden-files');
|
|
401
|
+
} catch (error) {
|
|
402
|
+
console.error('Error: Could not modify registry settings.');
|
|
403
|
+
console.error('Make sure you have the necessary permissions.');
|
|
404
|
+
if (error.message) {
|
|
405
|
+
console.error(`Details: ${error.message}`);
|
|
406
|
+
}
|
|
407
|
+
process.exit(1);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* Main entry point - detects environment and executes appropriate implementation.
|
|
413
|
+
*
|
|
414
|
+
* The "show-hidden-files" command configures the system's file manager to
|
|
415
|
+
* display hidden files (dotfiles on Unix, hidden attribute files on Windows).
|
|
416
|
+
*
|
|
417
|
+
* This is useful for developers who frequently need to access configuration
|
|
418
|
+
* files like .gitignore, .env, .bashrc, etc.
|
|
419
|
+
*
|
|
420
|
+
* @param {string[]} args - Command line arguments (unused)
|
|
421
|
+
* @returns {Promise<void>}
|
|
422
|
+
*/
|
|
423
|
+
async function do_show_hidden_files(args) {
|
|
424
|
+
const platform = os.detect();
|
|
425
|
+
|
|
426
|
+
const handlers = {
|
|
427
|
+
'macos': do_show_hidden_files_macos,
|
|
428
|
+
'ubuntu': do_show_hidden_files_ubuntu,
|
|
429
|
+
'debian': do_show_hidden_files_ubuntu,
|
|
430
|
+
'raspbian': do_show_hidden_files_raspbian,
|
|
431
|
+
'amazon_linux': do_show_hidden_files_amazon_linux,
|
|
432
|
+
'rhel': do_show_hidden_files_amazon_linux,
|
|
433
|
+
'fedora': do_show_hidden_files_ubuntu,
|
|
434
|
+
'linux': do_show_hidden_files_ubuntu,
|
|
435
|
+
'wsl': do_show_hidden_files_ubuntu,
|
|
436
|
+
'cmd': do_show_hidden_files_cmd,
|
|
437
|
+
'windows': do_show_hidden_files_cmd,
|
|
438
|
+
'powershell': do_show_hidden_files_powershell,
|
|
439
|
+
'gitbash': do_show_hidden_files_gitbash
|
|
440
|
+
};
|
|
441
|
+
|
|
442
|
+
const handler = handlers[platform.type];
|
|
443
|
+
if (!handler) {
|
|
444
|
+
console.error(`Platform '${platform.type}' is not supported for this command.`);
|
|
445
|
+
console.error('');
|
|
446
|
+
console.error('Supported platforms:');
|
|
447
|
+
console.error(' - macOS');
|
|
448
|
+
console.error(' - Ubuntu, Debian, and other Linux distributions');
|
|
449
|
+
console.error(' - Raspberry Pi OS');
|
|
450
|
+
console.error(' - Windows (CMD, PowerShell, Git Bash)');
|
|
451
|
+
process.exit(1);
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
await handler(args);
|
|
17
455
|
}
|
|
18
456
|
|
|
19
|
-
module.exports = {
|
|
457
|
+
module.exports = {
|
|
458
|
+
main: do_show_hidden_files,
|
|
459
|
+
do_show_hidden_files,
|
|
460
|
+
do_show_hidden_files_nodejs,
|
|
461
|
+
do_show_hidden_files_macos,
|
|
462
|
+
do_show_hidden_files_ubuntu,
|
|
463
|
+
do_show_hidden_files_raspbian,
|
|
464
|
+
do_show_hidden_files_amazon_linux,
|
|
465
|
+
do_show_hidden_files_cmd,
|
|
466
|
+
do_show_hidden_files_powershell,
|
|
467
|
+
do_show_hidden_files_gitbash
|
|
468
|
+
};
|
|
20
469
|
|
|
21
470
|
if (require.main === module) {
|
|
22
|
-
|
|
471
|
+
do_show_hidden_files(process.argv.slice(2));
|
|
23
472
|
}
|