Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var BrewCmd = &cobra.Command{ Use: "brew", Short: "Update Homebrew packages only", Long: `This command updates only Homebrew packages, skipping system updates.`, Run: func(cmd *cobra.Command, args []string) { isVerbose := utils.IsVerbose(cmd) updateBrew(isVerbose) }, }
View Source
var CompauditFixCmd = &cobra.Command{ Use: "compauditFix", Short: "Fix insecure directories reported by compaudit", Long: `Runs 'compaudit' and applies 'chmod g-w,o-w' to any directories reported as insecure. This uses an interactive zsh so zsh functions like compaudit (from oh-my-zsh) are available.`, Run: func(cmd *cobra.Command, args []string) { log.Start("Running compaudit and fixing insecure directories...") isVerbose := utils.IsVerbose(cmd) execCmd := exec.Command("zsh", "-ic", "compaudit | xargs --no-run-if-empty chmod g-w,o-w") log.Verbose(isVerbose, "Executing: %s", execCmd.String()) outputBytes, err := execCmd.CombinedOutput() output := strings.TrimSpace(string(outputBytes)) if err != nil { log.Error("Failed to run compaudit fix: %v", err) if output != "" { log.Error("Output: %s", output) } return } if output != "" { log.Message("%s", output) } log.Success("Finished applying compaudit fixes.") }, }
CompauditFixCmd runs 'compaudit' and removes group/world write permissions from any reported insecure directories.
View Source
var FindNonMovieFoldersCmd = &cobra.Command{ Use: "findNonMovieFolders [directory]", Short: "Find and optionally delete non-movie folders", Long: `This command searches recursively through the supplied directory for directories that do not contain video files (mp4, mkv, avi, mov, wmv, flv, webm, mpeg, mpg, m4v). It identifies top-level subdirectories within the supplied directory that lack any such files anywhere within their structure. It lists the files within the identified folders and prompts for confirmation before deletion.`, Args: cobra.ExactArgs(1), Run: func(cmd *cobra.Command, args []string) { log.Start("Scanning for non-movie folders...") directory := args[0] isVerbose := utils.IsVerbose(cmd) if _, err := os.Stat(directory); os.IsNotExist(err) { log.Error("Provided directory does not exist: %s", directory) return } log.Verbose(isVerbose, "Searching for directories in: %s", directory) spinner := utils.NewProgressSpinner("Scanning directories...") nonMovieFolders, err := findNonMovieFolders(isVerbose, directory, spinner, func(done, total int) { progress := 0.0 if total > 0 { progress = float64(done) / float64(total) } spinner.SetProgressBar(progress, fmt.Sprintf("Scanning... (%d/%d)", done, total)) }) if err != nil { spinner.Stop() log.Error("Error finding non-movie folders: %s", err) return } spinner.UpdateMessage("Scan complete.") spinner.SetProgressBar(1.0) spinner.Stop() log.Verbose(isVerbose, "Found %d potential non-movie folders.", len(nonMovieFolders)) if len(nonMovieFolders) == 0 { log.Success("No non-movie folders found in %s.", directory) return } log.Message("\nFound %d non-movie folder(s) that will be deleted:", len(nonMovieFolders)) // Store folder contents for summary and confirmation type FolderContent struct { Files []string Error string } folderContents := make(map[string]FolderContent) for _, folder := range nonMovieFolders { var files []string walkErr := filepath.WalkDir(folder, func(path string, d os.DirEntry, err error) error { if err != nil { return err } if !d.IsDir() { relPath, err := filepath.Rel(folder, path) if err != nil { return err } files = append(files, relPath) } return nil }) listErrorString := "" if walkErr != nil { errMsg := fmt.Sprintf("Could not list files in folder %s: %s", folder, walkErr) log.Warn(errMsg) listErrorString = "(error listing files)" } folderContents[folder] = FolderContent{Files: files, Error: listErrorString} log.Message(" - %s", folder) if listErrorString != "" { log.Message(" %s", listErrorString) } else if len(files) > 0 { for _, file := range files { displayPath := filepath.Join(filepath.Base(folder), file) log.Message(" - %s", displayPath) } } else { log.Message(" (Contains no files or only empty subdirectories)") } } log.Message("") if !askForConfirmation("Do you want to delete these folders and their contents?") { log.Info("Deletion cancelled by user.") return } log.Start("Deleting non-movie folders...") deletedCount := 0 skippedCount := 0 errorMessages := []string{} for _, folder := range nonMovieFolders { log.Warn("Attempting to delete: %s", folder) if err := os.RemoveAll(folder); err != nil { errMsg := fmt.Sprintf("Error deleting folder %s: %s", folder, err) log.Error(errMsg) errorMessages = append(errorMessages, errMsg) skippedCount++ } else { log.Success("Deleted: %s", folder) deletedCount++ } } if len(errorMessages) > 0 { log.Warn("Encountered %d error(s) during processing.", len(errorMessages)) } log.Success("Processing complete. Deleted %d folder(s), skipped %d due to errors.", deletedCount, skippedCount) }, }
FindNonMovieFoldersCmd defines the cobra command for finding and optionally deleting directories that do not contain common video file types.
View Source
var KillPortCmd = &cobra.Command{ Use: "killPort [port]", Short: "Find and kill the process listening on a specific port", Long: `This command finds the process ID (PID) listening on the specified network port using the 'lsof' command and then terminates that process forcefully using 'kill -9'. Requires 'lsof' and 'kill' commands to be available on the system. Primarily intended for Unix-like systems (Linux, macOS).`, Args: cobra.ExactArgs(1), Run: func(cmd *cobra.Command, args []string) { portStr := args[0] isVerbose := utils.IsVerbose(cmd) if _, err := strconv.Atoi(portStr); err != nil { log.Error("Invalid port number provided: %s. Port must be an integer.", portStr) return } log.Message("Attempting to find process on port %s...", portStr) lsofCmd := exec.Command("lsof", "-ti:"+portStr) log.Verbose(isVerbose, "Executing: %s", lsofCmd.String()) outputBytes, err := lsofCmd.CombinedOutput() output := strings.TrimSpace(string(outputBytes)) if err != nil { log.Verbose(isVerbose, "lsof command finished with error: %v", err) log.Verbose(isVerbose, "lsof output: %s", output) if _, ok := err.(*exec.ExitError); ok && output == "" { log.Warn("No process found listening on port %s.", portStr) } else { log.Error("Failed to execute lsof command: %v", err) log.Error("lsof output (if any): %s", output) } return } if output == "" { log.Warn("lsof ran successfully but found no process ID on port %s.", portStr) return } pids := strings.Fields(output) if len(pids) == 0 { log.Warn("lsof command returned empty output after trimming.") return } killedCount := 0 errorCount := 0 for _, pid := range pids { log.Info("Found process with PID %s on port %s. Attempting to kill...", pid, portStr) killCmd := exec.Command("kill", "-9", pid) log.Verbose(isVerbose, "Executing: %s", killCmd.String()) if err := killCmd.Run(); err != nil { log.Error("Failed to kill process with PID %s: %v", pid, err) errorCount++ } else { log.Success("Successfully sent kill signal to process with PID %s.", pid) killedCount++ } } if killedCount > 0 && errorCount == 0 { log.Success("Finished killing process(es) on port %s.", portStr) } else if killedCount > 0 && errorCount > 0 { log.Warn("Finished attempting to kill process(es) on port %s, but encountered %d error(s).", portStr, errorCount) } else if killedCount == 0 && errorCount > 0 { log.Error("Failed to kill any process found on port %s.", portStr) } }, }
View Source
var ProxyCmd = &cobra.Command{ Use: "proxy", Short: "Show or configure system proxies", Long: `This command displays and manages multiple proxy configurations and allows enabling, disabling, or setting them via subcommands.`, Run: func(cmd *cobra.Command, args []string) { listProxyConfigurations() }, }
View Source
var SetupASDFCmd = &cobra.Command{ Use: "asdf", Short: "Setup asdf plugins from $HOME/.tool-versions", Long: `Reads $HOME/.tool-versions and installs asdf plugins listed there.`, Run: func(cmd *cobra.Command, args []string) { setupASDF() }, }
View Source
var SetupCmd = &cobra.Command{
Use: "setup",
Short: "Setup development tools",
Long: `Setup various development tools. Example: eng system setup asdf`,
}
View Source
var SystemCmd = &cobra.Command{ Use: "system", Short: "A command for managing the system", Long: `This command will help manage various aspects of MacOS and Linux systems.`, Run: func(cmd *cobra.Command, args []string) { err := cmd.Help() cobra.CheckErr(err) }, }
View Source
var UpdateCmd = &cobra.Command{ Use: "update", Aliases: []string{"update", "u"}, Short: "Update the system", Long: `This command updates the system. It supports Ubuntu and WSL Linux systems and logs a message for unsupported systems.`, Run: func(cmd *cobra.Command, args []string) { isVerbose := utils.IsVerbose(cmd) log.Verbose(isVerbose, "Checking system type...") checkCmd := exec.Command("uname", "-a") output, err := checkCmd.Output() if err != nil { log.Error("Error checking system type: %s", err) return } uname := strings.ToLower(string(output)) log.Verbose(isVerbose, "System type detected: %s", strings.TrimSpace(string(output))) if strings.Contains(uname, "ubuntu") || strings.Contains(uname, "linux") { log.Verbose(isVerbose, "Detected Ubuntu/Linux system, running system update...") updateUbuntu(isVerbose) } else if strings.Contains(uname, "darwin") { log.Verbose(isVerbose, "Detected macOS system, running macOS update...") updateMacOS(isVerbose) } else if strings.Contains(uname, "raspberrypi") || strings.Contains(uname, "raspbian") { log.Verbose(isVerbose, "Detected Raspberry Pi system, running Raspberry Pi update...") updateRaspberryPi(isVerbose) } else { log.Warn("This system is not yet supported for updates.") log.Verbose(isVerbose, "Unsupported system type: %s", strings.TrimSpace(string(output))) } }, }
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.