mattly / bork

the Bash-Operated Reconciling Kludge
Other
218 stars 29 forks source link

download type, with http wrapper & tests #51

Closed mattly closed 8 years ago

mattly commented 8 years ago

This replaces #47 as a test against a local file that would be downloaded from a url. Assuming the url is http/s, you can compare the local size against the Content-Length header as well.

I added some indirection around curl the same way there is around md5 -- debian seems to ship with wget instead. the http wrapper doesn't yet support wget but this shouldn't be too hard to add.

frdmn commented 8 years ago

Nice work, Matthew!

Just ran into a little issue as I tried to replace my (now obsolte) download type with yours. Can you try the following assertion:

ok download "${HOME}/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package" https://sublime.wbond.net/Package%20Control.sublime-package
/Users/jonas/.dotfiles/bork/lib/helpers/bake.sh: line 1: [: too many argumentstalled Packages/Package Control.sublime-package https://sublime.wbond.net/Package%20Control.sublime-package
missing: download /Users/jonas/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package https://sublime.wbond.net/Package%20Control.sublime-package
verifying : download /Users/jonas/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package https://sublime.wbond.net/Package%20Control.sublime-package
*  failed
conflict (upgradable)
expected size: 186789 bytes
received size:  bytes

Does this work for you?

mattly commented 8 years ago

It's something to do with the spaces in the file name. I'll take a deeper look this afternoon. In the meantime, if you replace the spaces with %20 it'll work.

frdmn commented 8 years ago

%20 doesn't seem to do the trick for me but it's not that important. I can wait until you took a closer look :)

ok download "${HOME}/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package" https://sublime.wbond.net/Package%20Control.sublime-package
++ ok download /Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package https://sublime.wbond.net/Package%20Control.sublime-package
++ assertion=download
++ shift
++ _bork_check_failed=0
++ _changes_reset
++ bork_performed_install=0
++ bork_performed_upgrade=0
++ bork_performed_error=0
++ last_change_type=
+++ _lookup_type download
+++ assertion=download
+++ is_compiled
+++ return 1
++++ bag get bork_assertion_types download
++++ action=get
++++ varname=bork_assertion_types
++++ shift 2
++++ '[' get '!=' init ']'
+++++ eval 'echo ${#bork_assertion_types[*]}'
++++++ echo 0
++++ length=0
++++ last=-1
++++ case "$action" in
+++++ bag filter bork_assertion_types '^download=' 1
+++++ action=filter
+++++ varname=bork_assertion_types
+++++ shift 2
+++++ '[' filter '!=' init ']'
++++++ eval 'echo ${#bork_assertion_types[*]}'
+++++++ echo 0
+++++ length=0
+++++ last=-1
+++++ case "$action" in
+++++ index=0
+++++ ((  limit=1  ))
+++++ '[' 1 -eq 0 ']'
+++++ '[' 0 -lt 0 ']'
++++ line=
++++ echo ''
+++ fn=
+++ '[' -n '' ']'
++++ echo download
+++ bork_official=/Users/jonas/.dotfiles/bork/types/download.sh
+++ '[' -e /Users/jonas/.dotfiles/bork/types/download.sh ']'
+++ echo /Users/jonas/.dotfiles/bork/types/download.sh
+++ return
++ fn=/Users/jonas/.dotfiles/bork/types/download.sh
++ '[' -z /Users/jonas/.dotfiles/bork/types/download.sh ']'
++ argstr='/Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package https://sublime.wbond.net/Package%20Control.sublime-package'
++ quoted_argstr=
++ '[' -n /Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package ']'
+++ echo ' "/Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package"'
++ quoted_argstr=' "/Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package"'
++ shift
++ '[' -n https://sublime.wbond.net/Package%20Control.sublime-package ']'
+++ echo ' "/Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package" "https://sublime.wbond.net/Package%20Control.sublime-package"'
++ quoted_argstr=' "/Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package" "https://sublime.wbond.net/Package%20Control.sublime-package"'
++ shift
++ '[' -n '' ']'
++ case $operation in
++ _checking checking download /Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package https://sublime.wbond.net/Package%20Control.sublime-package
++ type=checking
++ shift
++ check_str='checking: download /Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package https://sublime.wbond.net/Package%20Control.sublime-package'
++ _checked_len=195
++ echo -n 'checking: download /Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package https://sublime'wbond.net/Package%20Control.sublime-package
checking: download /Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package https://sublime.wbond.net/P++++ _source_runner /Users/jonas/.dotfiles/bork/types/download.sh
++++ is_compiled
++++ return 1
++++ echo 'cd /Users/jonas/.dotfiles; . /Users/jonas/.dotfiles/bork/types/download.sh'
+++ eval 'cd /Users/jonas/.dotfiles; . /Users/jonas/.dotfiles/bork/types/download.sh status  "/Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package" "https://sublime.wbond.net/Package%20Control.sublime-package"'
++++ cd /Users/jonas/.dotfiles
++++ . /Users/jonas/.dotfiles/bork/types/download.sh status /Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package https://sublime.wbond.net/Package%20Control.sublime-package
+++++ action=status
+++++ targetfile=/Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package
+++++ sourceurl=https://sublime.wbond.net/Package%20Control.sublime-package
+++++ shift 3
+++++ case "$action" in
+++++ bake '[' -f /Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package ']'
+++++ eval '[ -f /Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package ]'
++++++ '[' -f /Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package ']'
+++++ return 10
++ status_output=
++ status=10
+++ _status_for 10
+++ case "$1" in
+++ echo missing
++ _checked 'missing: download /Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package https://sublime.wbond.net/Package%20Control.sublime-package'
++ report='missing: download /Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package https://sublime.wbond.net/Package%20Control.sublime-package'
++ ((  pad=195 - 194  ))
++ i=1
++ '[' 1 -le 1 ']'
++ report+=' '
++ ((  i++  ))
++ '[' 2 -le 1 ']'
++ echo 'missing: download /Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package https://sublime.wbond.net/Package%20Control.sublime-package '
missing: download /Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package https://sublime.wbond.net/Package%20Control.sublime-package
++ case $status in
+++ _source_runner /Users/jonas/.dotfiles/bork/types/download.sh
+++ is_compiled
+++ return 1
+++ echo 'cd /Users/jonas/.dotfiles; . /Users/jonas/.dotfiles/bork/types/download.sh'
++ eval 'cd /Users/jonas/.dotfiles; . /Users/jonas/.dotfiles/bork/types/download.sh install  "/Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package" "https://sublime.wbond.net/Package%20Control.sublime-package"'
+++ cd /Users/jonas/.dotfiles
+++ . /Users/jonas/.dotfiles/bork/types/download.sh install /Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package https://sublime.wbond.net/Package%20Control.sublime-package
++++ action=install
++++ targetfile=/Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package
++++ sourceurl=https://sublime.wbond.net/Package%20Control.sublime-package
++++ shift 3
++++ case "$action" in
+++++ http_get_cmd https://sublime.wbond.net/Package%20Control.sublime-package /Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package
+++++ url=https://sublime.wbond.net/Package%20Control.sublime-package
+++++ target=/Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package
+++++ has_curl
+++++ needs_exec curl
+++++ '[' -z curl ']'
+++++ '[' -z '' ']'
+++++ running_status=0
++++++ bake 'which curl'
++++++ eval 'which curl'
+++++++ which curl
+++++ path=/usr/bin/curl
+++++ '[' 0 -gt 0 ']'
+++++ return 0
+++++ '[' 0 -eq 0 ']'
+++++ echo 'curl -so /Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package "https://sublime.wbond.net/Package%20Control.sublime-package" &> /dev/null'
++++ bake curl -so /Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package '"https://sublime.wbond.net/Package%20Control.sublime-package"' '&>' /dev/null
++++ eval 'curl -so /Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package "https://sublime.wbond.net/Package%20Control.sublime-package" &> /dev/null'
+++++ curl -so /Users/jonas/Library/Application%20Support/Sublime%20Text%203/Installed%20Packages/Package%20Control.sublime-package https://sublime.wbond.net/Package%20Control.sublime-package
mattly commented 8 years ago

OK, I think I got it now. I wasn't quoting the filename properly when passing it around. ...One of those times I really hate bash.

frdmn commented 8 years ago

Works like a charm now.