2025-01-12 19:54:41 -06:00

61 lines
1.6 KiB
Python

import os
import subprocess
from .branch import branch_details
from utils.format import format_branch
from utils.git_commands import (
git_add_worktree,
git_remove_worktree,
)
from utils.messages import (
title,
instructions,
worktree_instructions,
)
def add_worktree(worktree=None, auto_install=False):
# Check for bare repo
try:
with open('config') as git_config:
content = ' '.join(git_config.readlines())
if 'bare = true' in content:
# Ask for worktree folder name
if worktree is None:
title('Create Worktree')
instructions(worktree_instructions)
worktree = input('Worktree Directory Name: ')
# Get branch details
branch_type, branch_id = branch_details()
# Format branch name
branch_name = format_branch(
branch_type,
branch_id,
worktree,
)
# Create worktree
git_add_worktree(worktree, branch_name)
# Install NPM packages after worktree creation
if auto_install:
os.chdir(f"./{worktree}")
subprocess.run(['/bin/bash', '-i', '-c', 'nvm use'])
subprocess.run(['npm', 'i'])
exit(0)
except Exception:
print('No worktree found')
exit(1)
def remove_worktree(worktree):
worktree_name = worktree if worktree else input('Worktree to remove: ')
git_remove_worktree(worktree_name)