ducaale / xh

Friendly and fast tool for sending HTTP requests
MIT License
5.49k stars 96 forks source link

Install fails on MacOS 13.6.1 #337

Closed k3n closed 11 months ago

k3n commented 11 months ago

Greetings! I know it's just provided for convenience, but the one-liner to install on MacOS fails:

❯ curl -sfL https://raw.githubusercontent.com/ducaale/xh/master/install.sh | sh
Detected target: x86_64-apple-darwin
sh: line 37: tac: command not found
sh: line 37: tac: command not found
Could not find release info
❯ 

Apparently, MacOS doesn't ship with tac.

blyxxyz commented 11 months ago

Hm. I think we only use tac to buffer the response before grepping it, but there are other ways to do that.

I've written a fix (https://github.com/ducaale/xh/pull/338). Can you test it?

curl -sfL https://raw.githubusercontent.com/blyxxyz/xh/install-no-tac/install.sh | sh
ducaale commented 11 months ago

I can confirm the updated script works for a macOS machine that doesn't have coreutils installed.

k3n commented 10 months ago
❯ curl -sfL https://raw.githubusercontent.com/blyxxyz/xh/install-no-tac/install.sh | sh
❯ xh
zsh: command not found: xh
k3n commented 10 months ago

With set -x:

❯ set -x
❯ curl -sfL https://raw.githubusercontent.com/blyxxyz/xh/install-no-tac/install.sh | sh
+omz_termsupport_preexec:1> [[ '' != true ]]
+omz_termsupport_preexec:3> emulate -L zsh
+omz_termsupport_preexec:4> setopt extended_glob
+omz_termsupport_preexec:7> local -a cmdargs
+omz_termsupport_preexec:8> cmdargs=( curl -sfL '|' sh )
+omz_termsupport_preexec:10> [[ curl = fg ]]
+omz_termsupport_preexec:44> local CMD=curl
+omz_termsupport_preexec:45> local LINE='curl -sfL  | sh'
+omz_termsupport_preexec:47> title curl '%100>...>curl -sfL  | sh%<<'
+title:1> setopt localoptions nopromptsubst
+title:4> [[ -n '' ]]
+title:8> : '%100>...>curl -sfL  | sh%<<'
+title:10> case xterm-256color (cygwin | xterm*)
+title:12> print -Pn '\e]2;%100\>...\>curl\ -sfL\ \ \|\ sh%\<\<\a'
+title:13> print -Pn '\e]1;curl\a'
+preexec_update_git_vars:1> case curl -sfL  | sh (git* | hub* | gh* | stg*)
+prompt_starship_preexec:1> __starship_get_time
+__starship_get_time:1> ((  STARSHIP_CAPTURED_TIME = int(rint(EPOCHREALTIME * 1000))  ))
+prompt_starship_preexec:1> STARSHIP_START_TIME=1700581852743
+-zsh:7> curl -sfL https://raw.githubusercontent.com/blyxxyz/xh/install-no-tac/install.sh
+-zsh:7> sh
+_direnv_hook:1> trap -- '' SIGINT
+_direnv_hook:2> /usr/local/bin/direnv export zsh
+_direnv_hook:2> eval ''
+_direnv_hook:3> trap - SIGINT
+omz_termsupport_precmd:1> [[ '' != true ]]
+omz_termsupport_precmd:2> title '%15<..<%~%<<' '%n@%m:%~'
+title:1> setopt localoptions nopromptsubst
+title:4> [[ -n '' ]]
+title:8> : '%n@%m:%~'
+title:10> case xterm-256color (cygwin | xterm*)
+title:12> print -Pn '\e]2;%n@%m:%~\a'
+title:13> print -Pn '\e]1;%15\<..\<%~%\<\<\a'
+omz_termsupport_cwd:2> local URL_HOST URL_PATH
+omz_termsupport_cwd:3> URL_HOST=+omz_termsupport_cwd:3> omz_urlencode -P k3n-MBP
+omz_urlencode:1> emulate -L zsh
+omz_urlencode:2> local -a opts
+omz_urlencode:3> zparseopts -D -E -a opts r m P
+omz_urlencode:5> local in_str=k3n-MBP
+omz_urlencode:6> local url_str=''
+omz_urlencode:7> local spaces_as_plus
+omz_urlencode:8> [[ -z -P ]]
+omz_urlencode:9> local str=k3n-MBP
+omz_urlencode:12> local encoding=UTF-8
+omz_urlencode:13> local safe_encodings
+omz_urlencode:14> safe_encodings=( UTF-8 utf8 US-ASCII )
+omz_urlencode:15> [[ -z UTF-8 ]]
+omz_urlencode:24> local i byte ord LC_ALL=C
+omz_urlencode:25> export LC_ALL
+omz_urlencode:26> local reserved=';/?:@&=+$,'
+omz_urlencode:27> local mark='_.!~*()-'
+omz_urlencode:28> local dont_escape='[A-Za-z0-9'
+omz_urlencode:29> [[ -z '' ]]
+omz_urlencode:30> dont_escape+=';/?:@&=+$,'
+omz_urlencode:33> [[ -z '' ]]
+omz_urlencode:34> dont_escape+='_.!~*()-'
+omz_urlencode:36> dont_escape+=']'
+omz_urlencode:40> local url_str=''
+omz_urlencode:41> i = 1
+omz_urlencode:41> i <= 12
+omz_urlencode:42> byte=k
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=k
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 12
+omz_urlencode:42> byte=k
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=k
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 12
+omz_urlencode:42> byte=e
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=e
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 12
+omz_urlencode:42> byte=n
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=n
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 12
+omz_urlencode:42> byte=d
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=d
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 12
+omz_urlencode:42> byte=a
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=a
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 12
+omz_urlencode:42> byte=l
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=l
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 12
+omz_urlencode:42> byte=l
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=l
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 12
+omz_urlencode:42> byte=-
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=-
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 12
+omz_urlencode:42> byte=M
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=M
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 12
+omz_urlencode:42> byte=B
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=B
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 12
+omz_urlencode:42> byte=P
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=P
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 12
+omz_urlencode:54> echo -E k3n-MBP
+omz_termsupport_cwd:3> URL_HOST=k3n-MBP
+omz_termsupport_cwd:4> URL_PATH=+omz_termsupport_cwd:4> omz_urlencode -P /Users/k3n/
+omz_urlencode:1> emulate -L zsh
+omz_urlencode:2> local -a opts
+omz_urlencode:3> zparseopts -D -E -a opts r m P
+omz_urlencode:5> local in_str=/Users/k3n/
+omz_urlencode:6> local url_str=''
+omz_urlencode:7> local spaces_as_plus
+omz_urlencode:8> [[ -z -P ]]
+omz_urlencode:9> local str=/Users/k3n/
+omz_urlencode:12> local encoding=UTF-8
+omz_urlencode:13> local safe_encodings
+omz_urlencode:14> safe_encodings=( UTF-8 utf8 US-ASCII )
+omz_urlencode:15> [[ -z UTF-8 ]]
+omz_urlencode:24> local i byte ord LC_ALL=C
+omz_urlencode:25> export LC_ALL
+omz_urlencode:26> local reserved=';/?:@&=+$,'
+omz_urlencode:27> local mark='_.!~*()-'
+omz_urlencode:28> local dont_escape='[A-Za-z0-9'
+omz_urlencode:29> [[ -z '' ]]
+omz_urlencode:30> dont_escape+=';/?:@&=+$,'
+omz_urlencode:33> [[ -z '' ]]
+omz_urlencode:34> dont_escape+='_.!~*()-'
+omz_urlencode:36> dont_escape+=']'
+omz_urlencode:40> local url_str=''
+omz_urlencode:41> i = 1
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=/
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=/
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=U
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=U
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=s
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=s
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=e
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=e
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=r
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=r
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=s
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=s
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=/
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=/
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=k
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=k
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=k
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=k
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=e
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=e
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=n
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=n
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=d
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=d
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=a
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=a
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=l
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=l
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=l
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=l
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=/
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=/
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=c
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=c
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=o
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=o
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=d
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=d
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=e
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=e
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=/
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=/
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=Q
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=Q
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=2
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=2
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=N
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=N
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=P
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=P
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=M
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=M
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=/
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=/
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=a
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=a
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=r
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=r
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=d
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=d
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=e
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=e
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=n
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=n
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=t
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=t
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=-
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=-
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=b
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=b
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=a
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=a
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=n
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=n
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=k
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=k
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=i
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=i
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=n
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=n
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=g
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=g
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=-
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=-
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=a
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=a
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=p
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=p
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:42> byte=i
+omz_urlencode:43> [[ "$byte" -regex-match "$dont_escape" ]]
+omz_urlencode:44> url_str+=i
+omz_urlencode:41> ++i
+omz_urlencode:41> i <= 45
+omz_urlencode:54> echo -E /Users/k3n/
+omz_termsupport_cwd:4> URL_PATH=/Users/k3n/
+omz_termsupport_cwd:7> printf '\e]7;%s\a' file://k3n-MBP/Users/k3n/
+precmd_update_git_vars:1> [ -n '' ']'
+precmd_update_git_vars:1> [ '!' -n '' ']'
+precmd_update_git_vars:2> update_current_git_vars
+update_current_git_vars:1> unset __CURRENT_GIT_STATUS
+update_current_git_vars:3> local gitstatus=/Users/k3n/.oh-my-zsh/plugins/git-prompt/gitstatus.py
+update_current_git_vars:4> _GIT_STATUS=+update_current_git_vars:4> python3 /Users/k3n/.oh-my-zsh/plugins/git-prompt/gitstatus.py
+update_current_git_vars:4> _GIT_STATUS='develop 0 0 0 0 0 0 5 1 0'
+update_current_git_vars:5> __CURRENT_GIT_STATUS=( develop 0 0 0 0 0 0 5 1 0 )
+update_current_git_vars:6> GIT_BRANCH=develop
+update_current_git_vars:7> GIT_AHEAD=0
+update_current_git_vars:8> GIT_BEHIND=0
+update_current_git_vars:9> GIT_STAGED=0
+update_current_git_vars:10> GIT_CONFLICTS=0
+update_current_git_vars:11> GIT_CHANGED=0
+update_current_git_vars:12> GIT_UNTRACKED=0
+update_current_git_vars:13> GIT_STASHED=5
+update_current_git_vars:14> GIT_CLEAN=1
+update_current_git_vars:15> GIT_DELETED=0
+update_current_git_vars:17> [ -z ']'
+update_current_git_vars:18> GIT_UPSTREAM=''
+precmd_update_git_vars:3> unset __EXECUTED_GIT_COMMAND
+prompt_starship_precmd:2> STARSHIP_CMD_STATUS=0 STARSHIP_PIPE_STATUS=( 22 0 )
+prompt_starship_precmd:6> ((  1  ))
+prompt_starship_precmd:7> __starship_get_time
+__starship_get_time:1> ((  STARSHIP_CAPTURED_TIME = int(rint(EPOCHREALTIME * 1000))  ))
+prompt_starship_precmd:7> ((  STARSHIP_DURATION = STARSHIP_CAPTURED_TIME - STARSHIP_START_TIME  ))
+prompt_starship_precmd:8> unset STARSHIP_START_TIME
+prompt_starship_precmd:15> STARSHIP_JOBS_COUNT=0
+-zsh:8> /usr/local/bin/starship prompt '--terminal-width=128' '--keymap=' '--status=0' '--pipestatus=22 0' '--cmd-duration=414' '--jobs=0'
+-zsh:8> /usr/local/bin/starship prompt --right '--terminal-width=128' '--keymap=' '--status=0' '--pipestatus=22 0' '--cmd-duration=414' '--jobs=0'
❯
blyxxyz commented 10 months ago

@k3n The fix is already merged, so I deleted the branch, that's why it doesn't work. Could you try the command from the README?

curl -sfL https://raw.githubusercontent.com/ducaale/xh/master/install.sh | sh
k3n commented 10 months ago

Oh, heh, embarrassing! It's working now, thank you!