{"id":43056257,"url":"https://github.com/berquerant/cmdcomp","last_synced_at":"2026-04-10T12:05:35.624Z","repository":{"id":323946985,"uuid":"1095355567","full_name":"berquerant/cmdcomp","owner":"berquerant","description":"compare the output of two commands with optional preprocessing and customizable diff","archived":false,"fork":false,"pushed_at":"2026-01-31T09:57:18.000Z","size":59,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-31T22:31:41.541Z","etag":null,"topics":["diff","go"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/berquerant.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-13T00:05:37.000Z","updated_at":"2026-01-31T09:55:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/berquerant/cmdcomp","commit_stats":null,"previous_names":["berquerant/cmdcomp"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/berquerant/cmdcomp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/berquerant%2Fcmdcomp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/berquerant%2Fcmdcomp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/berquerant%2Fcmdcomp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/berquerant%2Fcmdcomp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/berquerant","download_url":"https://codeload.github.com/berquerant/cmdcomp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/berquerant%2Fcmdcomp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29720292,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T15:10:41.462Z","status":"ssl_error","status_checked_at":"2026-02-22T15:10:04.636Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["diff","go"],"created_at":"2026-01-31T11:07:45.426Z","updated_at":"2026-02-22T17:19:44.389Z","avatar_url":"https://github.com/berquerant.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cmdcomp\n\n```\n❯ cmdcomp --help\ncmdcomp -- compare the output of two commands with optional preprocessing and customizable diff\n\n# Usage\n\ncmdcomp [flags] -- COMMON_ARGS [-- LEFT_ARGS [-- RIGHT_ARGS]]\n\n# Examples\n\n// echo a \u003e leftfile\n// echo b \u003e rightfile\n// diff leftfile rightfile\ncmdcomp -- echo -- a -- b\n\n// echo a \u003e leftfile\n// echo b \u003e rightfile\n// diff -u leftfile rightfile\ncmdcomp -x 'diff -u' -- echo -- a -- b\n\n// echo a \u003e leftfile\n// echo b \u003e rightfile\n// diff -u leftfile rightfile --label echo___a --label echo___b\ncmdcomp -x 'diff -u' -l -- echo -- a -- b\n\n// echo a | sed 's|a|c|' \u003e leftfile\n// echo b | sed 's|a|c|' \u003e rightfile\n// diff leftfile rightfile\ncmdcomp -p 'sed \"s|a|c|\"' -- echo -- a -- b\n\n// helm template datadog/datadog --version 3.68.0 | yq 'select(.kind==\"Secret\")' \u003e leftfile\n// helm template datadog/datadog --version 3.69.3 --set datadog.logLevel=debug | yq 'select(.kind==\"Secret\")' \u003e rightfile\n// objdiff -c leftfile rightfile\ncmdcomp -p \"yq 'select(.kind==\\\"Secret\\\")'\" -x 'objdiff -c' -- helm template datadog/datadog -- --version 3.68.0 -- --version 3.69.3 --set datadog.logLevel=debug\n\n// helm template datadog/datadog --version 3.68.0 | yq 'select(.kind==\"Deployment\" and .metadata.name==\"release-name-datadog-cluster-agent\")' -o json \u003e leftfile\n// helm template datadog/datadog --version 3.69.3 --set datadog.logLevel=debug | yq 'select(.kind==\"Deployment\" and .metadata.name==\"release-name-datadog-cluster-agent\")' -o json \u003e rightfile\n// npx jsondiffpatch --format=jsonpatch leftfile rightfile\ncmdcomp -p \"yq 'select(.kind==\\\"Deployment\\\" and .metadata.name==\\\"release-name-datadog-cluster-agent\\\")' -o json\" -x 'npx jsondiffpatch --format=jsonpatch' -- helm template datadog/datadog -- --version 3.68.0 -- --version 3.69.3 --set datadog.logLevel=debug\n\n// helm template datadog/datadog --version 3.68.0 | yq 'select(.kind==\"Deployment\" and .metadata.name==\"release-name-datadog-cluster-agent\")' -o json | gron \u003e leftfile\n// helm template datadog/datadog --version 3.69.3 --set datadog.logLevel=debug | yq 'select(.kind==\"Deployment\" and .metadata.name==\"release-name-datadog-cluster-agent\")' -o json | gron \u003e rightfile\n// diff -u --color leftfile rightfile\ncmdcomp -p \"yq 'select(.kind==\\\"Deployment\\\" and .metadata.name==\\\"release-name-datadog-cluster-agent\\\")' -o json\" -p 'gron' -x 'diff -u --color' -- helm template datadog/datadog -- --version 3.68.0 -- --version 3.69.3 --set datadog.logLevel=debug\n\n// helm template ./charts/datadog \u003e leftfile\n// git checkout datadog-3.69.3\n// helm template ./charts/datadog \u003e rightfile\n// objdiff -c leftfile rightfile\ncmdcomp -i 'git checkout datadog-3.69.3' -x 'objdiff -c' -- helm template ./charts/datadog\n\n// echo echo -- a \u003e leftfile\n// echo echo -- b \u003e rightfile\n// diff leftfile rightfile\ncmdcomp -d '---' -- echo --- echo -- a --- echo -- b\n\n// cmdcomp --success -- echo -- a -- b \u003e leftfile\n// cmdcomp --success -- echo -- a -- c \u003e rightfile\n// diff leftfile rightfile\ncmdcomp -d '---' -- cmdcomp --success -- echo -- a -- --- b --- c\n\n// helm show values datadog/datadog --version 3.69.3 | yq -o json | gron \u003e leftfile\n// helm show values datadog/datadog --version 3.164.1 | yq -o json | gron \u003e rightfile\n// diff -u --color leftfile rightfile\ncmdcomp -x 'diff -u --color' -p 'yq -o json' -p 'gron' -- helm show values datadog/datadog --version -- 3.69.3 -- 3.164.1\n\n# Flags\n\n      --debug                     enable debug logs\n  -d, --delimiter string          arguments delimiter;\n                                  change the '--' separating COMMON_ARGS, LEFT_ARGS, and RIGHT_ARGS in this (default \"--\")\n  -x, --diff string               diff command; invoked like 'diff LEFT_FILE RIGHT_FILE' (default \"diff\")\n  -i, --interceptor stringArray   process after left command and before right command; invoked like 'interceptor'\n  -l, --label                     use '--label' option of diff command\n  -p, --preprocess stringArray    process before diff; invoked like 'preprocess'; should read input from stdin; should output result to stdout\n  -s, --shell string              shell command to be executed (default \"bash\")\n      --showCmdLog                show command logs\n      --success                   exit successfully even if there are diffs;\n                                  in other words, succeed even if the diff command returns exit status 1\n      --version                   display version\n  -w, --workDir string            working directory; keep temporary files\n```\n\n## Install\n\n``` shell\ngo install github.com/berquerant/cmdcomp/cmd/cmdcomp@latest\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fberquerant%2Fcmdcomp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fberquerant%2Fcmdcomp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fberquerant%2Fcmdcomp/lists"}