diff options
Diffstat (limited to 'scripts/check_urls.vim')
| -rw-r--r-- | scripts/check_urls.vim | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/scripts/check_urls.vim b/scripts/check_urls.vim deleted file mode 100644 index b75dc29c48..0000000000 --- a/scripts/check_urls.vim +++ /dev/null @@ -1,89 +0,0 @@ -" Test for URLs in help documents. -" -" Opens a new window with all found URLS followed by return code from curl -" (anything other than 0 means unreachable) -" -" Written by Christian Brabandt. - -func Test_check_URLs() -"20.10.23, added by Restorer - if has("win32") - let s:outdev = 'nul' - else - let s:outdev = '/dev/null' - endif -" Restorer: For Windows users. If "curl" or "wget" is installed on the system -" but not in %PATH%, add the full path to them to %PATH% environment variable. - if executable('curl') - " Note: does not follow redirects! - let s:command1 = 'curl --silent --max-time 5 --fail --output ' ..s:outdev.. ' --head ' - let s:command2 = "" - elseif executable('wget') - " Note: only allow a couple of redirects - let s:command1 = 'wget --quiet -S --spider --max-redirect=2 --timeout=5 --tries=2 -O ' ..s:outdev.. ' ' - let s:command2 = "" - elseif has("win32") "20.10.23, added by Restorer - if executable('powershell') - if 2 == system('powershell -nologo -noprofile "$psversiontable.psversion.major"') - echoerr 'To work in OS Windows requires the program "PowerShell" version 3.0 or higher' - return - endif - let s:command1 = - \ "powershell -nologo -noprofile \"{[Net.ServicePointManager]::SecurityProtocol = 'Tls12, Tls11, Tls, Ssl3'};try{(Invoke-WebRequest -MaximumRedirection 2 -TimeoutSec 5 -Uri " - let s:command2 = ').StatusCode}catch{exit [int]$Error[0].Exception.Status}"' - endif - else - echoerr 'Only works when "curl" or "wget", or "powershell" is available' - return - endif - - " Do the testing. - set report =999 - set nomore shm +=s - - let pat='\(https\?\|ftp\)://[^\t* ]\+' - exe 'helpgrep' pat - helpclose - - let urls = map(getqflist(), 'v:val.text') - " do not use submatch(1)! - let urls = map(urls, {key, val -> matchstr(val, pat)}) - " remove examples like user@host (invalid urls) - let urls = filter(urls, 'v:val !~ "@"') - " Remove example URLs which are invalid - let urls = filter(urls, {key, val -> val !~ '\<\(\(my\|some\)\?host\|machine\|hostname\|file\)\>'}) - new - put =urls - " remove some more invalid items - " empty lines - "20.10.23, Restorer: '_' is a little faster, see `:h global` - v/./d _ - " remove # anchors - %s/#.*$//e - " remove trailing stuff (parenthesis, dot, comma, quotes), but only for HTTP - " links - g/^h/s#[.),'"`/>][:.,]\?$## - g#^[hf]t\?tp:/\(/\?\.*\)$#d _ - silent! g/ftp://,$/d _ - silent! g/=$/d _ - let a = getline(1,'$') - let a = uniq(sort(a)) - %d _ - call setline(1, a) - - %s/.*/\=TestURL(submatch(0))/ - - " highlight the failures - /.* \([0-9]*[1-9]\|[0-9]\{2,}\)$ -endfunc - -func TestURL(url) - " Relies on the return code to determine whether a page is valid - echom printf("Testing URL: %d/%d %s", line('.'), line('$'), a:url) - call system(s:command1 .. shellescape(a:url) .. s:command2) - return printf("%s %d", a:url, v:shell_error) -endfunc - -call Test_check_URLs() - -" vim: sw=2 sts=2 et |
