self:
with self; ''
  # Copyright (c) 2014-2015 Bruno Bierbaumer, Andreas Heider

  readonly sysfs_efi_vars='/sys/firmware/efi/efivars'
  readonly efi_gpu='gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9'

  usage(){
    cat <<EOF
  Usage:
    $(basename $0) --integrated   # Switch to the integrated GPU
    $(basename $0) --dedicated    # Switch to the dedicated GPU
    $(basename $0) --help         # Show this message

  Switches between the integrated and dedicated graphics cards of a dual-GPU
  MacBook Pro for the next reboot.

  Arguments:
    -i, --integrated
    -d, --dedicated
    -h, --help

  Tested hardware:
    MacBook Pro 5,2  (Early 2009, Non-Retina)
    MacBook Pro 5,3  (Mid   2009, Non-Retina)
    MacBook Pro 8,2  (Late  2011, Non-Retina)
    MacBook Pro 9,1  (Mid   2012, Non-Retina)
    MacBook Pro 10,1 (Mid   2012, Retina)
    MacBook Pro 11,3 (Late  2013, Retina)
    MacBook Pro 11,5 (Mid   2015, Retina)
  EOF
  }

  switch_gpu(){
    if ! [ -d /sys/firmware/efi ]; then
      printf "Fatal: $(basename $0) has to be run in EFI mode.\n" 1>&2
      exit 1
    fi

    if ! mount | grep -q $sysfs_efi_vars; then
      if ! mount -t efivarfs none $sysfs_efi_vars; then
        printf "Fatal: Couldn't mount ''${sysfs_efi_vars}.\n" 1>&2
        exit 1
      fi
    fi
    chattr -i "''${sysfs_efi_vars}/''${efi_gpu}" 2> /dev/null
    printf "\x07\x00\x00\x00\x''${1}\x00\x00\x00" > "''${sysfs_efi_vars}/''${efi_gpu}"
  }

  if [ $# -ne 1 ]; then
    usage 1>&2
    exit 1
  fi

  case "$1" in
    -i|--integrated)
      switch_gpu 1
    ;;
    -d|--dedicated)
      switch_gpu 0
    ;;
    -h|--help)
      usage
    ;;
    *)
      usage 1>&2
      exit 1
    ;;
  esac
''