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