#!/bin/bash set -e kw_prog_name="$(basename $0)" kw_config_dir="${XDG_CONFIG_HOME:-$HOME/.config}/intel-linux-gfx-mirror-docs" # These vars are set in ~/.config/intel-linux-docs/config. DOCDIR= PREHOOK= POSTHOOK= function kw_print_help() { echo "NAME" echo " $kw_prog_name" echo "" echo "SYNOPSIS" echo " $kw_prog_name [-h|--help] " echo "" echo "DESCRIPTION" echo " Download the Intel OpenSource HD Graphics Programmer's Reference" echo " Manuals from http://intellinuxgraphics.org." } function kw_fatal_error() { echo "error: $kw_prog_name: $@" exit 1 } function kw_usage_error() { echo "usage error: $kw_prog_name" echo kw_print_help exit 1 } function kw_load_config() { local conf_file="$kw_config_dir/conf" local example_file="$conf_file.example" # Write out example file. mkdir -p "$kw_config_dir" cat > "$example_file" <<-EOF #DOCDIR="\$HOME/doc/intel-linux-gfx/prm" #PREHOOK= #POSTHOOK= EOF if [[ -r "$conf_file" ]]; then source "$conf_file" fi # Set defaults for config vars. DOCDIR="${DOCDIR:-$HOME/doc/intel-linux-gfx/prm}" } function kw_run_prehook() { if [[ "$PREHOOK" ]]; then cd "$kw_config_dir" "$PREHOOK" "$@" fi } function kw_run_posthook() { if [[ "$POSTHOOK" ]]; then cd "$kw_config_dir" "$POSTHOOK" "$@" fi } function kw_download_files() { local outdir="$DOCDIR/$1" shift local cutdirs=$(echo $1 | sed 's@[^/]@@g' | wc -c) for x in "$@"; do wget \ "--mirror" \ "--no-parent" \ "--directory-prefix=$outdir" \ "--no-host-directories" \ "--cut-dirs=$cutdirs" \ "http://intellinuxgraphics.org/$x" done } function kw_mirror_ivb() { kw_run_prehook ivb kw_download_files 'ivb' \ \ 'documentation/IVB/IHD_OS_Vol1_Part1.pdf' \ 'documentation/IVB/IHD_OS_Vol1_Part2.pdf' \ 'documentation/IVB/IHD_OS_Vol1_Part3.pdf' \ 'documentation/IVB/IHD_OS_Vol1_Part4.pdf' \ 'documentation/IVB/IHD_OS_Vol1_Part5.pdf' \ 'documentation/IVB/IHD_OS_Vol1_Part6.pdf' \ 'documentation/IVB/IHD_OS_Vol1_Part7.pdf' \ \ 'documentation/IVB/IHD_OS_Vol2_Part1.pdf' \ 'documentation/IVB/IHD_OS_Vol2_Part2.pdf' \ 'documentation/IVB/IHD_OS_Vol2_Part3.pdf' \ \ 'documentation/IVB/IHD_OS_Vol3_Part1.pdf' \ 'documentation/IVB/IHD_OS_Vol3_Part2.pdf' \ 'documentation/IVB/IHD_OS_Vol3_Part3.pdf' \ 'documentation/IVB/IHD_OS_Vol3_Part4.pdf' \ \ 'documentation/IVB/IHD_OS_Vol4_Part1.pdf' \ 'documentation/IVB/IHD_OS_Vol4_Part2.pdf' \ 'documentation/IVB/IHD_OS_Vol4_Part3.pdf' \ kw_run_posthook ivb } function kw_mirror_snb() { kw_run_prehook snb kw_download_files 'snb' \ \ 'documentation/SNB/IHD_OS_Vol1_Part1.pdf' \ 'documentation/SNB/IHD_OS_Vol1_Part2.pdf' \ 'documentation/SNB/IHD_OS_Vol1_Part3.pdf' \ 'documentation/SNB/IHD_OS_Vol1_Part4.pdf' \ 'documentation/SNB/IHD_OS_Vol1_Part5.pdf' \ \ 'documentation/SNB/IHD_OS_Vol2_Part1.pdf' \ 'documentation/SNB/IHD_OS_Vol2_Part2.pdf' \ \ 'documentation/SNB/IHD_OS_Vol3_Part1.pdf' \ 'documentation/SNB/IHD_OS_Vol3_Part2.pdf' \ 'documentation/SNB/IHD_OS_Vol3_Part3.pdf' \ \ 'documentation/SNB/IHD_OS_Vol4_Part1.pdf' \ 'documentation/SNB/IHD_OS_Vol4_Part2.pdf' \ kw_run_posthook snb } function kw_mirror_ilk() { kw_run_prehook ilk kw_download_files 'ilk' \ \ 'IHD_OS_Vol1_Part1.pdf' \ 'IHD_OS_Vol1_Part2.pdf' \ 'IHD_OS_Vol1_Part3.pdf' \ 'IHD_OS_Vol1_Part4.pdf' \ 'IHD_OS_Vol1_Part5.pdf' \ \ 'IHD_OS_Vol2_Part1.pdf' \ 'IHD_OS_Vol2_Part2.pdf' \ \ 'IHD_OS_Vol3_Part1.pdf' \ 'IHD_OS_Vol3_Part2.pdf' \ 'IHD_OS_Vol3_Part3.pdf' \ \ 'IHD_OS_Vol4_Part1.pdf' \ 'IHD_OS_Vol4_Part2.pdf' \ kw_run_posthook ilk } function kw_mirror_g45() { kw_run_prehook g45 kw_download_files 'g45' \ 'Vol_1a_G45_core_updated.pdf' \ 'Vol_2_G45_3dmedia.pdf' \ 'Vol_3_G45_register.pdf' \ 'Vol_4_G45_subsystem.pdf' \ kw_run_posthook g45 } function kw_mirror_g35() { kw_run_prehook g35 kw_download_files 'g35' \ 'VOL_1_graphics_core.pdf' \ 'VOL_2_3D_media_web_updated.pdf' \ 'VOL_3_display_registers_updated.pdf' \ 'VOL_4_subsystem_core.pdf' \ kw_run_posthook g35 } # ---------------------------------------------- # main # ---------------------------------------------- if [[ $# -eq 0 ]]; then kw_usage_error fi if [[ "$1" = "-h" ]] || [[ "$1" = "--help" ]]; then kw_print_help exit fi for x in "$@"; do case "$x" in "all"|"ivb"|"snb"|"ilk"|"g45"|"g35") ;; *) kw_usage_error ;; esac done kw_load_config for api in "$@"; do case "$1" in "ivb") kw_mirror_ivb ;; "snb") kw_mirror_snb ;; "ilk") kw_mirror_ilk ;; "g45") kw_mirror_g45 ;; "g35") kw_mirror_g35 ;; "all") kw_mirror_ivb kw_mirror_snb kw_mirror_ilk kw_mirror_g45 kw_mirror_g35 ;; *) kw_usage_error ;; esac done