Skip to content

Commit 20ef8d0

Browse files
Move api compare script to its own folder; add readme; update command in package.json
1 parent 61a7c22 commit 20ef8d0

File tree

4 files changed

+518
-5
lines changed

4 files changed

+518
-5
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"content-dev": "make",
2020
"content-dev:clean": "make clean",
2121
"broken-link": "node ./scripts/broken-link.mjs",
22-
"api-compare": "node scripts/api-compare.mjs"
22+
"compare-api-responses": "node scripts/compare-api-responses/index.mjs"
2323
},
2424
"dependencies": {
2525
"@mdx-js/util": "^1.6.22",
Lines changed: 268 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,268 @@
1+
# Tool to compare API responses
2+
3+
> Note: As of March 2025, this script is set up for comparing version-metadata between endpoints
4+
5+
This script is a utility for comparing API responses between two endpoints, typically the UDR API and Content API. It supports multiple API types and provides options for filtering, saving output, and customizing the comparison.
6+
7+
## Options:
8+
9+
-n, --new-api-url <url>: The base URL of the new API to compare.
10+
-o, --old-api-url <url>: The base URL of the old API to compare against.
11+
-v, --version <version>: The version of the product to compare.
12+
-p, --product <product>: The product name to compare.
13+
-a, --api <api>: The API type to compare. Options: content, nav-data, version-metadata, content-versions. Default: version-metadata.
14+
-r, --drop-keys <keys>: Comma-separated list of keys to exclude from the comparison.
15+
-s, --save-output: Save the comparison output to a file. Disabled by default.
16+
17+
### Example
18+
19+
To compare version metadata between APIs for a specific product:
20+
21+
```bash
22+
npm run compare-api-responses -- -n localhost:8080 -o https://content.hashicorp.com -p terraform-docs-agents
23+
```
24+
25+
### Example output:
26+
27+
```bash
28+
@@ -2,11 +2,4 @@
29+
{
30+
- "created_at": "2025-03-18T19:47:18.641Z",
31+
- "display": "v1.21.0",
32+
"isLatest": true,
33+
- "pk": "terraform-docs-agents#version-metadata",
34+
- "product": "terraform-docs-agents",
35+
- "ref": "v1.21.0",
36+
"releaseStage": "stable",
37+
- "sha": "54ed38c9bafb5c437c294a6b7238e08915188332",
38+
- "sk": "version-metadata/v1.21.x",
39+
"version": "v1.21.x"
40+
@@ -14,11 +7,4 @@
41+
{
42+
- "created_at": "2025-03-18T19:47:18.605Z",
43+
- "display": "v1.20.x",
44+
"isLatest": false,
45+
- "pk": "terraform-docs-agents#version-metadata",
46+
- "product": "terraform-docs-agents",
47+
- "ref": "v1.20.2",
48+
"releaseStage": "stable",
49+
- "sha": "3265ff727b24d97f94e2e272ab6ea77dad2418ea",
50+
- "sk": "version-metadata/v1.20.x",
51+
"version": "v1.20.x"
52+
@@ -26,11 +12,4 @@
53+
{
54+
- "created_at": "2025-02-06T19:43:18.538Z",
55+
- "display": "v1.19.x",
56+
"isLatest": false,
57+
- "pk": "terraform-docs-agents#version-metadata",
58+
- "product": "terraform-docs-agents",
59+
- "ref": "v1.19.0",
60+
"releaseStage": "stable",
61+
- "sha": "9d02bf677d6dd085b9a65be4d01fad77fb432f18",
62+
- "sk": "version-metadata/v1.19.x",
63+
"version": "v1.19.x"
64+
@@ -38,11 +17,4 @@
65+
{
66+
- "created_at": "2025-02-05T22:00:28.858Z",
67+
- "display": "v1.18.x",
68+
"isLatest": false,
69+
- "pk": "terraform-docs-agents#version-metadata",
70+
- "product": "terraform-docs-agents",
71+
- "ref": "v1.18.0",
72+
"releaseStage": "stable",
73+
- "sha": "4942ebb1cd931e7a6e0e2259054c1e8389a3a8e5",
74+
- "sk": "version-metadata/v1.18.x",
75+
"version": "v1.18.x"
76+
@@ -50,11 +22,4 @@
77+
{
78+
- "created_at": "2025-01-29T21:12:08.164Z",
79+
- "display": "v1.17.x",
80+
"isLatest": false,
81+
- "pk": "terraform-docs-agents#version-metadata",
82+
- "product": "terraform-docs-agents",
83+
- "ref": "v1.17.6",
84+
"releaseStage": "stable",
85+
- "sha": "f0c5b93087310a9a7a12889502af1bfab1c993ad",
86+
- "sk": "version-metadata/v1.17.x",
87+
"version": "v1.17.x"
88+
@@ -62,11 +27,4 @@
89+
{
90+
- "created_at": "2024-10-30T16:30:46.593Z",
91+
- "display": "v1.16.x",
92+
"isLatest": false,
93+
- "pk": "terraform-docs-agents#version-metadata",
94+
- "product": "terraform-docs-agents",
95+
- "ref": "v1.16.0",
96+
"releaseStage": "stable",
97+
- "sha": "dbb7940356646d601c99e9e8948248e9e33cf9c8",
98+
- "sk": "version-metadata/v1.16.x",
99+
"version": "v1.16.x"
100+
@@ -74,11 +32,4 @@
101+
{
102+
- "created_at": "2024-10-02T22:12:01.626Z",
103+
- "display": "v1.15.x",
104+
"isLatest": false,
105+
- "pk": "terraform-docs-agents#version-metadata",
106+
- "product": "terraform-docs-agents",
107+
- "ref": "v1.15.5",
108+
"releaseStage": "stable",
109+
- "sha": "b769d6a97887ef4b80e3960c10696865c04b3484",
110+
- "sk": "version-metadata/v1.15.x",
111+
"version": "v1.15.x"
112+
@@ -86,11 +37,4 @@
113+
{
114+
- "created_at": "2024-03-13T23:02:57.057Z",
115+
- "display": "v1.14.x",
116+
"isLatest": false,
117+
- "pk": "terraform-docs-agents#version-metadata",
118+
- "product": "terraform-docs-agents",
119+
- "ref": "v1.14.5",
120+
"releaseStage": "stable",
121+
- "sha": "b9eabad236ba4cc8054e3addd262b597654c44b1",
122+
- "sk": "version-metadata/v1.14.x",
123+
"version": "v1.14.x"
124+
@@ -98,11 +42,4 @@
125+
{
126+
- "created_at": "2023-11-09T22:33:57.325Z",
127+
- "display": "v1.13.x",
128+
"isLatest": false,
129+
- "pk": "terraform-docs-agents#version-metadata",
130+
- "product": "terraform-docs-agents",
131+
- "ref": "v1.13.1",
132+
"releaseStage": "stable",
133+
- "sha": "7d5d48cae15b6b1bf840cabff0ce19dfe68204cf",
134+
- "sk": "version-metadata/v1.13.x",
135+
"version": "v1.13.x"
136+
@@ -110,11 +47,4 @@
137+
{
138+
- "created_at": "2023-09-28T18:47:10.933Z",
139+
- "display": "v1.12.x",
140+
"isLatest": false,
141+
- "pk": "terraform-docs-agents#version-metadata",
142+
- "product": "terraform-docs-agents",
143+
- "ref": "v1.12.1",
144+
"releaseStage": "stable",
145+
- "sha": "0a742ad934ed7de22487fadcafde6c3363a134f5",
146+
- "sk": "version-metadata/v1.12.x",
147+
"version": "v1.12.x"
148+
@@ -122,11 +52,4 @@
149+
{
150+
- "created_at": "2023-07-26T21:28:58.478Z",
151+
- "display": "v1.11.x",
152+
"isLatest": false,
153+
- "pk": "terraform-docs-agents#version-metadata",
154+
- "product": "terraform-docs-agents",
155+
- "ref": "v1.11.0",
156+
"releaseStage": "stable",
157+
- "sha": "9348221ded1edcce0b4e3d39a026262ea4bce439",
158+
- "sk": "version-metadata/v1.11.x",
159+
"version": "v1.11.x"
160+
@@ -134,11 +57,4 @@
161+
{
162+
- "created_at": "2023-07-24T15:52:56.786Z",
163+
- "display": "v1.10.x",
164+
"isLatest": false,
165+
- "pk": "terraform-docs-agents#version-metadata",
166+
- "product": "terraform-docs-agents",
167+
- "ref": "v1.10.1",
168+
"releaseStage": "stable",
169+
- "sha": "ebb223ea6ed2d732805b1fa2ade3832f11f7097a",
170+
- "sk": "version-metadata/v1.10.x",
171+
"version": "v1.10.x"
172+
@@ -146,11 +62,4 @@
173+
{
174+
- "created_at": "2023-06-09T18:05:22.217Z",
175+
- "display": "v1.9.x",
176+
"isLatest": false,
177+
- "pk": "terraform-docs-agents#version-metadata",
178+
- "product": "terraform-docs-agents",
179+
- "ref": "v1.9.0",
180+
"releaseStage": "stable",
181+
- "sha": "489f89391a5ac0c13fda07d149291c970d7e22ed",
182+
- "sk": "version-metadata/v1.9.x",
183+
"version": "v1.9.x"
184+
@@ -158,11 +67,4 @@
185+
{
186+
- "created_at": "2023-05-04T19:28:15.890Z",
187+
- "display": "v1.8.x",
188+
"isLatest": false,
189+
- "pk": "terraform-docs-agents#version-metadata",
190+
- "product": "terraform-docs-agents",
191+
- "ref": "v1.8.0",
192+
"releaseStage": "stable",
193+
- "sha": "d4f90d4d3ea1ae1c049cd13dbbc93b75f43d846e",
194+
- "sk": "version-metadata/v1.8.x",
195+
"version": "v1.8.x"
196+
@@ -170,11 +72,4 @@
197+
{
198+
- "created_at": "2023-04-19T18:39:28.873Z",
199+
- "display": "v1.7.x",
200+
"isLatest": false,
201+
- "pk": "terraform-docs-agents#version-metadata",
202+
- "product": "terraform-docs-agents",
203+
- "ref": "v1.7.1",
204+
"releaseStage": "stable",
205+
- "sha": "5b9d3fbefa48b778a62109029080a4dfd62a3c9b",
206+
- "sk": "version-metadata/v1.7.x",
207+
"version": "v1.7.x"
208+
@@ -182,11 +77,4 @@
209+
{
210+
- "created_at": "2023-03-02T19:55:23.974Z",
211+
- "display": "v1.6.x",
212+
"isLatest": false,
213+
- "pk": "terraform-docs-agents#version-metadata",
214+
- "product": "terraform-docs-agents",
215+
- "ref": "v1.6.1",
216+
"releaseStage": "stable",
217+
- "sha": "f30be9cfc170e87628d1b781ef0e495056eac68f",
218+
- "sk": "version-metadata/v1.6.x",
219+
"version": "v1.6.x"
220+
@@ -194,11 +82,4 @@
221+
{
222+
- "created_at": "2022-12-20T19:15:19.433Z",
223+
- "display": "v1.5.x",
224+
"isLatest": false,
225+
- "pk": "terraform-docs-agents#version-metadata",
226+
- "product": "terraform-docs-agents",
227+
- "ref": "v1.5.0",
228+
"releaseStage": "stable",
229+
- "sha": "891e2fcd94f0f11c284e6a76cf213173c9ee6349",
230+
- "sk": "version-metadata/v1.5.x",
231+
"version": "v1.5.x"
232+
@@ -206,11 +87,4 @@
233+
{
234+
- "created_at": "2022-12-14T21:26:37.395Z",
235+
- "display": "v1.4.x",
236+
"isLatest": false,
237+
- "pk": "terraform-docs-agents#version-metadata",
238+
- "product": "terraform-docs-agents",
239+
- "ref": "v1.4.0",
240+
"releaseStage": "stable",
241+
- "sha": "f43efce2bb6e69797aeaf39964adcef1de62152c",
242+
- "sk": "version-metadata/v1.4.x",
243+
"version": "v1.4.x"
244+
@@ -218,11 +92,4 @@
245+
{
246+
- "created_at": "2022-10-07T13:43:33.436Z",
247+
- "display": "v1.3.x",
248+
"isLatest": false,
249+
- "pk": "terraform-docs-agents#version-metadata",
250+
- "product": "terraform-docs-agents",
251+
- "ref": "v1.3.1",
252+
"releaseStage": "stable",
253+
- "sha": "0ececfe1b2647e861018488072f6b9e5ad90e46d",
254+
- "sk": "version-metadata/v1.3.x",
255+
"version": "v1.3.x"
256+
@@ -230,11 +97,4 @@
257+
{
258+
- "created_at": "2022-08-05T17:39:34.922Z",
259+
- "display": "v1.2.x",
260+
"isLatest": false,
261+
- "pk": "terraform-docs-agents#version-metadata",
262+
- "product": "terraform-docs-agents",
263+
- "ref": "v1.2.7",
264+
"releaseStage": "stable",
265+
- "sha": "ca7f01d769c2f4ec0c955ef5d5ac9ef24b106eb2",
266+
- "sk": "version-metadata/v1.2.x",
267+
"version": "v1.2.x"
268+
```

scripts/api-compare.mjs renamed to scripts/compare-api-responses/index.mjs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import { Command } from 'commander'
77
import { diffLinesUnified } from 'jest-diff'
8-
import { PRODUCT_CONFIG as contentDirMap } from '../app/utils/productConfig.mjs'
8+
import { PRODUCT_CONFIG as contentDirMap } from '../../app/utils/productConfig.mjs'
99
import stripAnsi from 'strip-ansi'
1010
import fs from 'node:fs'
1111
import path from 'node:path'
@@ -16,15 +16,15 @@ const __dirname = path.dirname(__filename) // get the name of the directory
1616

1717
const versionMetadataPath = path.resolve(
1818
__dirname,
19-
'../app/api/versionMetadata.json',
19+
'../../app/api/versionMetadata.json',
2020
)
2121
const versionMetadata = JSON.parse(
2222
fs.readFileSync(versionMetadataPath, 'utf-8'),
2323
)
2424

2525
const docsPathsAllVersionsPaths = path.resolve(
2626
__dirname,
27-
'../app/api/docsPathsAllVersions.json',
27+
'../../app/api/docsPathsAllVersions.json',
2828
)
2929
const apiPaths = JSON.parse(fs.readFileSync(docsPathsAllVersionsPaths, 'utf-8'))
3030

@@ -45,7 +45,7 @@ program
4545
return key.trim()
4646
})
4747
})
48-
.option('-s, --save-output', 'Save output', true)
48+
.option('-s, --save-output', 'Save output', false)
4949

5050
program.parse(process.argv)
5151
const options = program.opts()

0 commit comments

Comments
 (0)