58 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/zsh
 | 
						|
# Create a Django project using a template in .dotfiles/codetemplates/django
 | 
						|
# Eryn Wells <eryn@erynwells.me>
 | 
						|
 | 
						|
 | 
						|
function usage_mkdjango
 | 
						|
{
 | 
						|
    cat <<EOF 
 | 
						|
Usage: $0 template_name project_name [optional destination directory]"
 | 
						|
 | 
						|
    Create a Django project named [project_name] based on the specified template
 | 
						|
    [template_name]. If no [destination directory] is given, the project is
 | 
						|
    created in the current one.
 | 
						|
EOF
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
function mkdjango
 | 
						|
{
 | 
						|
    if [[ ${#@} -lt 2 ]]; then
 | 
						|
        print_error "Need moar arguments" 1>&2
 | 
						|
        usage_mkdjango $0
 | 
						|
        return -1
 | 
						|
    fi
 | 
						|
 | 
						|
    local tname=$1
 | 
						|
    local tdir="$HOME/.codetemplates/django/$tname"
 | 
						|
    local pname=$2
 | 
						|
    local dest=$3
 | 
						|
 | 
						|
    if [[ ! -d "$tdir" ]]; then
 | 
						|
        print_error "Invalid template name: $tname" 1>&2
 | 
						|
        return -2
 | 
						|
    fi
 | 
						|
 | 
						|
    print_info "Making Django project '$pname' with template '$tname'"
 | 
						|
    if [[ -n "$dest" && ! -d "$dest" ]]; then
 | 
						|
        print_info_sub "Destination directory given but does not exist; creating $dest"
 | 
						|
        mkdir -p "$dest"
 | 
						|
    fi
 | 
						|
 | 
						|
    # Determine what files might not be rendered by django-admin.py
 | 
						|
    local names=()
 | 
						|
    for f in `ls -A "$tdir"`; do
 | 
						|
        # Pick up dotfiles
 | 
						|
        if [[ -e "$f" && "$f" =~ "^\." ]]; then
 | 
						|
            names+=("$f")
 | 
						|
        fi
 | 
						|
    done
 | 
						|
 | 
						|
    print_info_sub "Calling django-admin.py"
 | 
						|
    django-admin.py startproject --template="$tdir" --name=${(j.,.)names} "$pname" "$dest"
 | 
						|
    exitcode=$?
 | 
						|
 | 
						|
    return $exitcode
 | 
						|
}
 | 
						|
 | 
						|
mkdjango $@
 |