mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-12-14 17:41:33 +03:00
Merge pull request #1429 from urbit/pill-stage-faster
improves pill staging in :lens
This commit is contained in:
commit
cb778c79f0
@ -19,6 +19,7 @@ trap cleanup EXIT
|
||||
#
|
||||
herb ./pier -p hood -d "+hood/mount /=home="
|
||||
|
||||
cp $ARVO/app/lens.hoon ./pier/home/app/
|
||||
cp $ARVO/lib/pill.hoon ./pier/home/lib/
|
||||
chmod -R u+rw ./pier/home/lib/
|
||||
|
||||
|
@ -1,19 +1,25 @@
|
||||
/- lens
|
||||
/+ *server, base64
|
||||
/- lens, *sole
|
||||
/+ base64, *server
|
||||
/= lens-mark /: /===/mar/lens/command
|
||||
/!noun/
|
||||
=, format
|
||||
|%
|
||||
:: +move: output effect
|
||||
:: +lens-out: json or named octet-stream
|
||||
::
|
||||
+$ lens-out
|
||||
$% [%json =json]
|
||||
[%mime =mime]
|
||||
==
|
||||
:: +move: output effect
|
||||
::
|
||||
+$ move [bone card]
|
||||
:: +card: output effect payload
|
||||
:: +card: output effect payload
|
||||
::
|
||||
+$ card
|
||||
$% [%connect wire binding:eyre term]
|
||||
[%http-response =http-event:http]
|
||||
[%peer wire dock path]
|
||||
[%peel wire dock mark path]
|
||||
[%peer wire dock path]
|
||||
[%poke wire dock poke]
|
||||
[%pull wire dock ~]
|
||||
==
|
||||
@ -80,16 +86,74 @@
|
||||
[ost.bow %poke /import [our.bow app.source.com] %import c]~
|
||||
::
|
||||
:_ this(job.state (some [ost.bow com]))
|
||||
[ost.bow %peel /sole [our.bow %dojo] %lens-json /sole]~
|
||||
[ost.bow %peer /sole [our.bow %dojo] /sole]~
|
||||
::
|
||||
++ diff-lens-json
|
||||
|= [=wire jon=json]
|
||||
++ diff-sole-effect
|
||||
|= [=wire fec=sole-effect]
|
||||
^- (quip move _this)
|
||||
?~ jon
|
||||
=/ out
|
||||
|- ^- (unit lens-out)
|
||||
=* loop $
|
||||
?+ -.fec
|
||||
~
|
||||
::
|
||||
%tan
|
||||
%- some
|
||||
:- %json
|
||||
%- wall:enjs:format
|
||||
(turn (flop p.fec) |=(=tank ~(ram re tank)))
|
||||
::
|
||||
%txt
|
||||
(some %json s+(crip p.fec))
|
||||
::
|
||||
%sag
|
||||
%- some
|
||||
[%mime p.fec (as-octs:mimes:html (jam q.fec))]
|
||||
::
|
||||
%sav
|
||||
:: XX use +en:base64 or produce %mime a la %sag
|
||||
::
|
||||
%- some
|
||||
:- %json
|
||||
%- pairs:enjs:format
|
||||
:~ file+s+(crip <`path`p.fec>)
|
||||
data+s+(crip (en-base64:mimes:html q.fec))
|
||||
==
|
||||
::
|
||||
%mor
|
||||
=/ all `(list lens-out)`(murn p.fec |=(a=sole-effect loop(fec a)))
|
||||
?~ all ~
|
||||
~| [%multiple-effects all]
|
||||
?> ?=(~ t.all)
|
||||
(some i.all)
|
||||
==
|
||||
::
|
||||
?~ out
|
||||
[~ this]
|
||||
?> ?=(^ job.state)
|
||||
:_ this(job.state ~)
|
||||
[bone.u.job.state %http-response (json-response:app (json-to-octs jon))]~
|
||||
:_ ~
|
||||
:+ bone.u.job.state
|
||||
%http-response
|
||||
?- -.u.out
|
||||
%json
|
||||
(json-response:app (json-to-octs json.u.out))
|
||||
::
|
||||
%mime
|
||||
:* %start
|
||||
:~ 200
|
||||
['content-type' 'application/octet-stream']
|
||||
?> ?=([@ @ ~] p.mime.u.out)
|
||||
:- 'content-disposition'
|
||||
^- @t
|
||||
%^ cat 3
|
||||
'attachment; filename='
|
||||
(rap 3 '"' i.p.mime.u.out '.' i.t.p.mime.u.out '"' ~)
|
||||
==
|
||||
(some q.mime.u.out)
|
||||
%.y
|
||||
==
|
||||
==
|
||||
::
|
||||
++ diff-export
|
||||
|= [=wire data=*]
|
||||
@ -132,6 +196,8 @@
|
||||
?> ?=(^ job.state)
|
||||
:_ this
|
||||
:~ [ost.bow %poke /sole [our.bow %dojo] %lens-command com.u.job.state]
|
||||
:: XX move to +diff-sole-effect?
|
||||
::
|
||||
[ost.bow %pull /sole [our.bow %dojo] ~]
|
||||
==
|
||||
::
|
||||
|
@ -1,12 +0,0 @@
|
||||
::
|
||||
:::: /hoon/json/lens/mar
|
||||
::
|
||||
/? 310
|
||||
::
|
||||
:::: ~fyr
|
||||
::
|
||||
|_ jon/json
|
||||
++ grab |% ++ noun json
|
||||
--
|
||||
++ grow |% ++ json jon
|
||||
-- --
|
@ -50,27 +50,6 @@
|
||||
++ grow
|
||||
=, enjs
|
||||
|%
|
||||
++ lens-json :: json for cli client
|
||||
^- ?(~ ^json) :: null = ignore
|
||||
?+ -.sef ~
|
||||
$tan (wall (turn (flop p.sef) |=(a/tank ~(ram re a))))
|
||||
$txt s+(crip p.sef)
|
||||
$sag
|
||||
=/ =atom (jam q.sef)
|
||||
=/ =octs [(met 3 atom) atom]
|
||||
=/ enc (en:base64 octs)
|
||||
(pairs file+s+(crip <`path`p.sef>) data+s+enc ~)
|
||||
$sav
|
||||
(pairs file+s+(crip <`path`p.sef>) data+s+(crip (en-base64:mimes:html q.sef)) ~)
|
||||
::
|
||||
$mor
|
||||
=+ all=(turn p.sef |=(a/sole-effect lens-json(sef a)))
|
||||
=. all (skip all |=(a/^json ?=(~ a)))
|
||||
?~ all ~
|
||||
?~ t.all i.all
|
||||
~|(multiple-effects+`(list ^json)`all !!)
|
||||
==
|
||||
::
|
||||
++ json
|
||||
^- ^json
|
||||
?+ -.sef
|
||||
|
@ -425,7 +425,12 @@ url = "http://localhost:%s" % PORT
|
||||
|
||||
r = requests.post(url, data=json.dumps(payload))
|
||||
|
||||
if r.text[0] == '"':
|
||||
if r.headers.get('content-type') == 'application/octet-stream':
|
||||
name = r.headers.get('content-disposition').split('filename=',1)[1][1:-1]
|
||||
with open(name, 'wb') as f:
|
||||
for block in r.iter_content(1024):
|
||||
f.write(block)
|
||||
elif r.text[0] == '"':
|
||||
print r.text[1:-1].encode('utf-8').decode('string_escape')
|
||||
elif r.text[0] == '{':
|
||||
# print r.text
|
||||
|
Loading…
Reference in New Issue
Block a user