29 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
layout_hatch() {
 | 
						|
    if [[ ! -f "pyproject.toml" ]]; then
 | 
						|
        if [[ ! -f "setup.py" ]]; then
 | 
						|
            local tmpdir
 | 
						|
            log_status "No pyproject.toml or setup.py found. Executing \`hatch new\` to create a new project."
 | 
						|
            PROJECT_NAME=$(basename $PWD)
 | 
						|
            tmpdir="$(mktemp -d)"
 | 
						|
            hatch new $PROJECT_NAME $tmpdir > /dev/null
 | 
						|
            cp -a --no-clobber $tmpdir/* . && rm -rf $tmpdir
 | 
						|
        else
 | 
						|
            # I haven't yet seen a case where migrating from an existing `setup.py` works, but I'm sure there are some.
 | 
						|
            log_status "No pyproject.toml found. Executing \`hatch new --init\` to migrate from setuptools."
 | 
						|
            hatch new --init || log_error "Failed to migrate from setuptools. Please fix and run \`hatch new --init\` manually." && return 1
 | 
						|
        fi
 | 
						|
    fi
 | 
						|
 | 
						|
    HATCH_ENV=${HATCH_ENV_ACTIVE:-default}
 | 
						|
    # We need this to error out if the env doesn't exist in the pyproject.toml file.
 | 
						|
    VIRTUAL_ENV=$(hatch env find $HATCH_ENV)
 | 
						|
 | 
						|
    if [[ ! -d $VIRTUAL_ENV ]]; then
 | 
						|
        log_status "No virtual environment exists. Executing \`hatch env create\` to create one."
 | 
						|
        hatch env create $HATCH_ENV
 | 
						|
    fi
 | 
						|
 | 
						|
    PATH_add "$VIRTUAL_ENV/bin"
 | 
						|
    export HATCH_ENV_ACTIVE=$HATCH_ENV
 | 
						|
    export VIRTUAL_ENV
 | 
						|
}
 |