! Copyright (C) 2018 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. USING: accessors assocs calendar combinators environment escape-strings fry io io.pathnames io.streams.string kernel math math.parser namespaces prettyprint prettyprint.config sequences tools.deploy.backend tools.time unix.groups unix.users uuid ; IN: ci.run-process TUPLE: process-autopsy timestamp os-envs cwd uid euid gid egid out elapsed os-envs-after process ; : ci-run-process ( process -- timestamp os-envs cwd uid euid gid egid out elapsed os-envs' process ) [ [ gmt os-envs current-directory get real-user-id effective-user-id real-group-id effective-group-id ] dip [ '[ _ run-with-output ] with-string-writer ] benchmark os-envs ] keep ; : ci-run-process>autopsy ( process -- autopsy ) ci-run-process process-autopsy boa ; : unparse-full ( obj -- str ) [ unparse ] without-limits ; : autopsy. ( autopsy -- ) { [ drop "> timestamp>unix-time >float number>string "unix-time" tag-payload print nl ] [ bl bl elapsed>> number>string "elapsed-nanos" tag-payload print nl ] [ bl bl cwd>> "cwd" tag-payload print nl ] [ bl bl uid>> number>string "uid" tag-payload print nl ] [ bl bl euid>> number>string "euid" tag-payload print nl ] [ bl bl gid>> number>string "gid" tag-payload print nl ] [ bl bl egid>> number>string "egid" tag-payload print nl ] [ bl bl os-envs>> unparse-full "os-envs" tag-payload print nl ] [ bl bl os-envs>> unparse-full "os-envs-after" tag-payload print nl ] [ bl bl [ os-envs-after>> ] [ os-envs>> ] bi assoc-diff unparse-full "os-envs-diff" tag-payload print nl ] [ bl bl [ os-envs>> ] [ os-envs-after>> ] bi assoc-diff unparse-full "os-envs-swap-diff" tag-payload print nl ] [ bl bl process>> unparse-full "process" tag-payload print nl ] [ bl bl out>> "out" tag-payload print nl ] [ drop ";AUTOPSY>" print ] } cleave ;