Source code for CatMatcher.shell_helper

import os
import stat
import subprocess


[docs] def spawn_shell_script(destination_path: str, name: str, content: str): """ Creates and saves a shell script file to the specified destination with executable permissions. If no content is provided, a default zsh (korn-shell, standard for macOS systems) script is written that: - Sources `~/.zshrc` - Prints the current working directory (cwd) (currently used only as fail-save for verification purposes) - Loops over `.txt` files at the cwd and executes them if executable Args: destination_path (str): Path where the script will be saved. name (str): Name of the script file to create. content (str): The content of the shell script. If None, the default script is used. Returns: None """ script_name = name file_path = destination_path + script_name if content is None: script_content = '''#!/bin/zsh # Source the ~/.zshrc file source ~/.zshrc # Print the current working directory echo "Current directory: $(pwd)" # Loop through all .txt files and execute them if they are executable for file in *.txt; do if [ -x "$file" ]; then ./"$file" else echo "$file is not executable" fi done ''' else: script_content = content # Save the shell script to the directory with open(file_path, 'w') as script_file: script_file.write(script_content) # Make the script executable os.chmod(file_path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)
[docs] def execute_shell_script(destination_path: str, name: str = "stilts_execute.sh", content: str = None, shell="zsh", return_output: bool = False): """ Creates and executes a shell script in a specified directory. This function first generates a shell script by calling the `spawn_shell_script` function, then runs it using the specified shell (default is `zsh`). Optionally, the output and errors of the script execution can be printed. Args: destination_path (str): Directory where the script will be created and executed. name (str, optional): Name of the shell script file. (Default: "stilts_execute.sh") content (str, optional): Custom content for the shell script. If None, a default is used. See `spawn_shell_script` for details on the default script content. shell (str, optional): Shell to use for execution (e.g., "zsh", "bash"). Defaults to "zsh". return_output (bool, optional): Whether to print stdout, stderr, and return code. Defaults to False. Returns: None """ spawn_shell_script(destination_path, name, content) result = subprocess.run([shell, name], cwd=destination_path, capture_output=True, text=True) if return_output: print('Output:', result.stdout) print('Error:', result.stderr) print('Return code:', result.returncode)