fn chrome_args()

in focus/tracing/src/chrome/mod.rs [468:708]


    fn chrome_args(gev: &GitEvent) -> serde_json::Value {
        use JsonField::*;

        impl From<JsonField> for String {
            fn from(jf: JsonField) -> Self {
                format!("{}", heck::AsSnakeCase(jf.to_string()))
            }
        }

        let mut args = match gev {
            GitEvent::Version(gevent::Version {
                common: _,
                evt,
                exe,
            }) => json!({
                StatsVersion: evt,
                GitVersion: exe,
            }),
            GitEvent::TooManyFiles(_) => json!({}),
            GitEvent::Start(gevent::Start {
                common: _,
                t_abs,
                argv,
            }) => json!({
                TAbs: t_abs,
                Argv: argv,
            }),
            GitEvent::Exit(gevent::Exit {
                common: _,
                t_abs,
                code,
            }) => json!({
                TAbs: t_abs,
                Code: code,
            }),
            GitEvent::Atexit(gevent::Atexit {
                common: _,
                t_abs,
                code,
            }) => json!({
                TAbs: t_abs,
                Code: code,
            }),
            GitEvent::Signal(gevent::Signal {
                common: _,
                t_abs,
                signo,
            }) => json!({
                TAbs: t_abs,
                Signo: signo,
            }),
            GitEvent::Error(gevent::Error {
                common: _,
                msg,
                fmt,
            }) => json!({
                Msg: msg,
                Fmt: fmt,
            }),
            GitEvent::CmdPath(gevent::CmdPath { common: _, path }) => json!({
                Path: path,
            }),
            GitEvent::CmdAncestry(gevent::CmdAncestry {
                common: _,
                ancestry,
            }) => json!({
                Ancestry: ancestry,
            }),
            GitEvent::CmdName(gevent::CmdName {
                common: _,
                name,
                hierarchy,
            }) => json!({
                Name: name,
                Hierarchy: hierarchy,
            }),
            GitEvent::CmdMode(gevent::CmdMode { common: _, name }) => json!({
                Name: name,
            }),
            GitEvent::Alias(gevent::Alias {
                common: _,
                alias,
                argv,
            }) => json!({
                Alias: alias,
                Argv: argv,
            }),
            GitEvent::ChildStart(gevent::ChildStart {
                common: _,
                child_id,
                child_class,
                use_shell,
                argv,
                hook_name,
                cd,
            }) => json!({
                ChildId: child_id,
                ChildClass: child_class,
                UseShell: use_shell,
                HookName: hook_name,
                Argv: argv,
                Cd: cd,
            }),
            GitEvent::ChildExit(gevent::ChildExit {
                common: _,
                child_id,
                pid,
                code,
                t_rel,
            }) => json!({
                ChildId: child_id,
                Pid: pid,
                Code: code,
                TRel: t_rel,
            }),
            GitEvent::ChildReady(gevent::ChildReady {
                common: _,
                child_id,
                pid,
                ready,
                t_rel,
            }) => json!({
                ChildId: child_id,
                Pid: pid,
                Ready: ready,
                TRel: t_rel,
            }),
            GitEvent::Exec(gevent::Exec {
                common: _,
                exec_id,
                exe,
                argv,
            }) => json!({
                ExecId: exec_id,
                Exe: exe,
                Argv: argv,
            }),
            GitEvent::ExecResult(gevent::ExecResult {
                common: _,
                exec_id,
                code,
            }) => json!({
                ExecId: exec_id,
                Code: code,
            }),
            GitEvent::ThreadStart(gevent::ThreadStart {
                common: _,
                thread_name,
            }) => json!({
                ThreadName: thread_name,
            }),
            GitEvent::ThreadExit(gevent::ThreadExit {
                common: _,
                thread_name,
                t_rel,
            }) => json!({
                ThreadName: thread_name,
                TRel: t_rel,
            }),
            GitEvent::DefParam(gevent::DefParam {
                common: _,
                param,
                value,
            }) => json!({
                Param: param,
                Value: value,
            }),
            GitEvent::DefRepo(gevent::DefRepo {
                common: _,
                worktree,
            }) => json!({
                Worktree: worktree ,
            }),
            GitEvent::RegionEnter(gevent::RegionEnter {
                common: _,
                nesting,
                category,
                label,
                msg,
            }) => json!({
                Nesting: nesting,
                Category: category,
                Label: label,
                Msg: msg,
            }),
            GitEvent::RegionLeave(gevent::RegionLeave {
                common: _,
                t_rel,
                nesting,
                category,
                label,
                msg,
            }) => json!({
                Nesting: nesting,
                Category: category,
                Label: label,
                Msg: msg,
                TRel: t_rel,
            }),
            GitEvent::Data(gevent::Data {
                common: _,
                t_abs,
                t_rel,
                nesting,
                category,
                key,
                value,
            }) => json!({
                Nesting: nesting,
                Category: category,
                TRel: t_rel,
                TAbs: t_abs,
                Key: key,
                Value: value,
            }),
            GitEvent::DataJson(gevent::DataJson {
                common: _,
                t_abs,
                t_rel,
                nesting,
                category,
                key,
                value,
            }) => json!({
                Nesting: nesting,
                Category: category,
                TRel: t_rel,
                TAbs: t_abs,
                Key: key,
                Value: value,
            }),
        };

        {
            let map = args.as_object_mut().unwrap();
            map.insert(GitEventName.into(), gev.event_name().into());
            map.insert(FileLineThread.into(), gev.file_line_thread().into());
        }

        args
    } // chrome_args