61 lines
1.6 KiB
Python
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)
|