aboutsummaryrefslogtreecommitdiff
path: root/internal/configure.zsh
blob: c75484a857183cbea184fe96c5523057d4fab0a4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
typeset -gr __p9k_wizard_columns=70
typeset -gr __p9k_wizard_lines=28
typeset -gr __p9k_zd=${${ZDOTDIR:-$HOME}:A}
typeset -gr __p9k_zd_u=${${(q-)__p9k_zd}/#(#b)$HOME(|\/*)/'~'$match[1]}
typeset -gr __p9k_cfg_basename=.p10k.zsh
typeset -gr __p9k_cfg_path=$__p9k_zd/$__p9k_cfg_basename
typeset -gr __p9k_cfg_path_u=$__p9k_zd_u/$__p9k_cfg_basename
typeset -gr __p9k_zshrc=$__p9k_zd/.zshrc
typeset -gr __p9k_zshrc_u=$__p9k_zd_u/.zshrc
typeset -gr __p9k_root_dir_u=${${(q-)__p9k_root_dir}/#(#b)$HOME(|\/*)/'~'$match[1]}

function _p9k_can_configure() {
  emulate -L zsh
  setopt err_return
  [[ $1 == '-q' ]] && local -i q=1 || local -i q=0
  function $0_error() {
    (( q )) || print -P "%1F[ERROR]%f %Bp9k_configure%b: $1" >&2
    return 1
  }
  {
    [[ -t 0 && -t 1 ]]                                || $0_error "no TTY"
    [[ -o multibyte ]]                                || $0_error "multibyte option is not set"
    [[ "${#$(print -P '\u276F' 2>/dev/null)}" == 1 ]] || $0_error "shell doesn't support unicode"
    [[ -w $__p9k_zd ]]                                || $0_error "$__p9k_zd_u is not writable"
    [[ ! -d $__p9k_cfg_path ]]                        || $0_error "$__p9k_cfg_path_u is a directory"
    [[ ! -d $__p9k_zshrc ]]                           || $0_error "$__p9k_zshrc_u is a directory"

    [[ ! -e $__p9k_cfg_path || -f $__p9k_cfg_path || -h $__p9k_cfg_path ]] ||
      $0_error "$__p9k_cfg_path_u is a special file"
    [[ -r $__p9k_root_dir/config/p10k-lean.zsh ]]                          ||
      $0_error "cannot read $__p9k_root_dir_u/config/p10k-lean.zsh"
    [[ -r $__p9k_root_dir/config/p10k-classic.zsh ]]                       ||
      $0_error "cannot read $__p9k_root_dir_u/config/p10k-classic.zsh"
    [[ ! -e $__p9k_zshrc || -f $__p9k_zshrc || -h $__p9k_zshrc ]]          ||
      $0_error "$__p9k_zshrc_u a special file"
    [[ ! -e $__p9k_zshrc || -r $__p9k_zshrc ]]                             ||
      $0_error "$__p9k_zshrc_u is not readable"
    [[ ! -e $__p9k_zshrc || -w $__p9k_zshrc ]]                             ||
      $0_error "$__p9k_zshrc_u is not writable"
    (( LINES >= __p9k_wizard_lines && COLUMNS >= __p9k_wizard_columns ))   ||
      $0_error "terminal size too small"
  } always {
    unfunction $0_error
  }
}