/commandeer

testing some command things

Primary LanguageNixMIT LicenseMIT

commandeer

testing some command things

=========================== test script ===================================
───────┬────────────────────────────────────────────────────────────────────────
       │ File: ./pstree_egrep_xargs_echo.sh
───────┼────────────────────────────────────────────────────────────────────────
   1 ~ │ #!/nix/store/2jysm3dfsgby5sw5jgj43qjrb5v79ms9-bash-4.4-p23/bin/bash
   2   │ # pstree -p $$ | egrep -o "[0-9]+" | xargs
   3   │ processes(){
   4   │     pstree -p $$ >/dev/null
   5   │ }
   6   │
   7   │ flarf(){
   8   │     # just echo some weird stuff
   9   │     echo just saying
  10   │     echo some weird
  11   │     echo stuff in
  12   │     echo this function
  13   │ }
  14   │
  15   │ filter(){
  16   │     grep "f"
  17   │ }
  18   │
  19   │ processes | flarf | filter | xargs
───────┴────────────────────────────────────────────────────────────────────────
============================= red demo ===============================
running: /nix/store/5rizfpmbajncslp4s6i3az99chxvhiz2-red-unreleased/bin/red -o /dev/fd/1 ./pstree_egrep_xargs_echo.sh
Note: red is built on Bear and wants to write to compile_commands.json by default.
stuff in this function
[
    {
        "kind": "exit",
        "pid": "283",
        "ppid": "282",
        "return_code": "0"
    },
    {
        "kind": "exit",
        "pid": "284",
        "ppid": "283",
        "return_code": "0"
    },
    {
        "kind": "exit",
        "pid": "285",
        "ppid": "283",
        "return_code": "0"
    },
    {
        "kind": "exit",
        "pid": "286",
        "ppid": "283",
        "return_code": "0"
    },
    {
        "command": [
            "pstree",
            "-p",
            "283"
        ],
        "directory": "/build/commandeer",
        "function": "execve",
        "kind": "exec",
        "pid": "287",
        "ppid": "284",
        "timestamp": "1602196413563"
    },
    {
        "command": [
            "xargs"
        ],
        "directory": "/build/commandeer",
        "function": "execve",
        "kind": "exec",
        "pid": "288",
        "ppid": "283",
        "timestamp": "1602196413563"
    },
    {
        "command": [
            "grep",
            "f"
        ],
        "directory": "/build/commandeer",
        "function": "execve",
        "kind": "exec",
        "pid": "289",
        "ppid": "286",
        "timestamp": "1602196413563"
    },
    {
        "command": [
            "/nix/store/w9wc0d31p4z93cbgxijws03j5s2c4gyf-coreutils-8.31/bin/echo",
            "stuff",
            "in",
            "this",
            "function"
        ],
        "directory": "/build/commandeer",
        "function": "execvp",
        "kind": "exec",
        "pid": "290",
        "ppid": "288",
        "timestamp": "1602196413565"
    },
    {
        "kind": "exit",
        "pid": "290",
        "ppid": "288",
        "return_code": "0"
    }
]

============================= clade demo ===============================
running: /nix/store/qprzcjj7dpslnj0c6gh2945c8cbxdm4z-python3.8-clade-3.2.12/bin/clade -i -f ./pstree_egrep_xargs_echo.sh
Note: clade writes to clade/cmds.txt. It recommands consuming the format via it's python processor API since it might change...
22:33:33 clade: Starting build
stuff in this function
22:33:33 clade: Build completed successfully
22:33:33 clade: Path to the file with intercepted commands: 'clade/cmds.txt'
───────┬────────────────────────────────────────────────────────────────────────
       │ File: clade/cmds.txt
───────┼────────────────────────────────────────────────────────────────────────
   1   │ /build/commandeer||0||./pstree_egrep_xargs_echo.sh||./pstree_egrep_xargs_echo.sh
   2   │ /build/commandeer||1||/nix/store/aja0dimyn0sg5b9zf1cav4k43p8h5xqc-findutils-4.7.0/bin/xargs||xargs
   3   │ /build/commandeer||1||/nix/store/xzwa0lw0yxyjcbbbrnyhv7whvy6lksvr-pstree-2.39/bin/pstree||pstree||-p||293
   4   │ /build/commandeer||1||/nix/store/xhvk95cjr2dk339airqxqfk04c0zras6-gnugrep-3.4/bin/grep||grep||f
   5   │ /build/commandeer||2||/nix/store/w9wc0d31p4z93cbgxijws03j5s2c4gyf-coreutils-8.31/bin/echo||/nix/store/w9wc0d31p4z93cbgxijws03j5s2c4gyf-coreutils-8.31/bin/echo||stuff||in||this||function
───────┴────────────────────────────────────────────────────────────────────────

============================= cmdcat demo ===================================
running: /nix/store/667vwd9lrhdzqdvcyinr1ig822xpard0-cmdcat-unreleased/bin/cmdcat ./pstree_egrep_xargs_echo.sh
bad SERVER_DOMAIN, should be 'AF_INET' or 'AF_UNIX' or 'AF_LOCAL'
{
    "args": {
        "0": "./pstree_egrep_xargs_echo.sh"
    },
    "children": [],
    "cmd": "./pstree_egrep_xargs_echo.sh",
    "cwd": "",
    "envs": {},
    "history": {},
    "nchild": 0,
    "pid": 303,
    "ppid": 0,
    "uid": 2
}

Cmdcat obviously doesn't work correctly here, but I'm not sure if I'm building/holding it wrong, or if it's just not yet fully functional. In any case, it's not a huge program--I assume the Nix community could help get it on the right track.

The sizes of these on my NixOS box as reported by nix path-info -Sh are:

  • cmdcat: 43.0M
  • red: 99.3M
  • clade 176.7M