top | item 45343596 (no title) 0x008 | 5 months ago care to share? discuss order hn newest tcoff91|5 months ago #!ruby if ARGV.size < 1 puts "Usage: wz path" exit end # Get current working directory current_dir = "#{Dir.pwd}/" # puts "Current directory: #{current_dir}" # Run git worktree list and capture the output worktree_output = `git worktree list` # Split output into lines and process worktrees = worktree_output.split("\n") # Extract all worktree paths worktree_paths = worktrees.map { |wt| "#{wt.split.first}/" } # puts "Worktree paths: #{worktree_paths}" # First path is always the root worktree root_wt_path = worktree_paths[0] # Find current worktree by comparing with pwd current_wt_path = worktree_paths.find do |path| # puts "Path: #{path}" current_dir.start_with?(path) end if current_wt_path == root_wt_path zoxide_destination = `zoxide query --exclude "#{Dir.pwd}" "#{ARGV[0]}"`.strip puts zoxide_destination exit 0 end current_dir_in_root_wt = current_dir.sub(current_wt_path, root_wt_path) Dir.chdir(current_dir_in_root_wt) current_dir = "#{Dir.pwd}/" # puts "Current directory: #{current_dir}" # puts "Querying zoxide for #{ARGV[0]}" zoxide_destination = `zoxide query --exclude "#{Dir.pwd}" "#{ARGV[0]}"`.strip # puts "zoxide destination: #{zoxide_destination}" Dir.chdir(zoxide_destination) current_dir = "#{Dir.pwd}/" if current_dir.start_with?(root_wt_path) target_dir = current_dir.sub(root_wt_path, current_wt_path) puts target_dir exit 0 end puts Dir.pwd exit 0 Then put this function in your .zshrc: # Worktree aware form of zoxide's z command. function w() { cd $(wz $@) }
tcoff91|5 months ago #!ruby if ARGV.size < 1 puts "Usage: wz path" exit end # Get current working directory current_dir = "#{Dir.pwd}/" # puts "Current directory: #{current_dir}" # Run git worktree list and capture the output worktree_output = `git worktree list` # Split output into lines and process worktrees = worktree_output.split("\n") # Extract all worktree paths worktree_paths = worktrees.map { |wt| "#{wt.split.first}/" } # puts "Worktree paths: #{worktree_paths}" # First path is always the root worktree root_wt_path = worktree_paths[0] # Find current worktree by comparing with pwd current_wt_path = worktree_paths.find do |path| # puts "Path: #{path}" current_dir.start_with?(path) end if current_wt_path == root_wt_path zoxide_destination = `zoxide query --exclude "#{Dir.pwd}" "#{ARGV[0]}"`.strip puts zoxide_destination exit 0 end current_dir_in_root_wt = current_dir.sub(current_wt_path, root_wt_path) Dir.chdir(current_dir_in_root_wt) current_dir = "#{Dir.pwd}/" # puts "Current directory: #{current_dir}" # puts "Querying zoxide for #{ARGV[0]}" zoxide_destination = `zoxide query --exclude "#{Dir.pwd}" "#{ARGV[0]}"`.strip # puts "zoxide destination: #{zoxide_destination}" Dir.chdir(zoxide_destination) current_dir = "#{Dir.pwd}/" if current_dir.start_with?(root_wt_path) target_dir = current_dir.sub(root_wt_path, current_wt_path) puts target_dir exit 0 end puts Dir.pwd exit 0 Then put this function in your .zshrc: # Worktree aware form of zoxide's z command. function w() { cd $(wz $@) }
tcoff91|5 months ago