87 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| #
 | |
| # check args
 | |
| #
 | |
| 
 | |
| if [[ $# -ne 3 ]]
 | |
| then
 | |
|    echo "usage: $0 year day"
 | |
|    exit 1
 | |
| fi
 | |
| 
 | |
| #
 | |
| # check year and day
 | |
| #
 | |
| 
 | |
| year=$(($2))
 | |
| 
 | |
| if [[ $year -lt 2015 ]]
 | |
| then
 | |
|     echo "invalid year: $2"
 | |
|     echo "must be 2015 or later"
 | |
|     exit 2
 | |
| fi
 | |
| 
 | |
| day=$(($3))
 | |
| 
 | |
| if [[ $day -lt 1 ]] || [[ $day -gt 25 ]]
 | |
| then
 | |
|     echo "invalid day: $3"
 | |
|     echo "must be between 1 and 25"
 | |
|     exit 2
 | |
| fi
 | |
| 
 | |
| #
 | |
| # fetch input
 | |
| #
 | |
| 
 | |
| input_directory="../data/$year/$day"
 | |
| input_path="$input_directory/input.txt"
 | |
| 
 | |
| if ! [[ -f $input_path ]]
 | |
| then
 | |
|     mkdir -p $input_directory
 | |
|     input_url="https://adventofcode.com/$year/day/$day/input"
 | |
| 
 | |
|     cookie_path="../cookie"
 | |
|     if ! [[ -f $cookie_path ]]
 | |
|     then
 | |
| 	echo "can't fetch input from $input_url without a \`cookie\` file at \`$cookie_path\`"
 | |
| 	echo "create this file with \`$ touch $cookie_path\`, then fill it with the \`session\` cookie from your browser"
 | |
| 	exit 3
 | |
|     fi
 | |
|        
 | |
|     curl -s -b "$(cat ../cookie)" $input_url > $input_path
 | |
| fi
 | |
| 
 | |
| language=$1
 | |
| valid_languages=""
 | |
| valid_language="false"
 | |
| 
 | |
| cd ..
 | |
| for directory in $(ls .)
 | |
| do
 | |
|     if [[ -d $directory ]] && [[ -f $directory/bin/run ]]
 | |
|     then
 | |
| 	valid_languages="$valid_languages, $directory"
 | |
| 	if [[ $language == $directory ]]; then
 | |
| 	    valid_language="true"
 | |
| 	fi
 | |
|     fi
 | |
| done
 | |
| 
 | |
| if ! $valid_language ; then
 | |
|     echo "unsupported language $language"
 | |
|     echo "supported languages are ${valid_languages:2}"
 | |
|     exit 4
 | |
| fi
 | |
| 
 | |
| #
 | |
| # delegate language
 | |
| #
 | |
| 
 | |
| cd $language
 | |
| echo "Running problem $day from year $year in $language"
 | |
| ./bin/run $year $day
 |