Fix bug where you weren't able to use both the -q and -j flags at the same time #227

Merged
Vylpes merged 17 commits from feature/181-q-json-flags into develop 2024-12-07 22:21:43 +00:00
2 changed files with 11 additions and 16 deletions
Showing only changes of commit 438884b270 - Show all commits

View file

@ -5,35 +5,30 @@ export default class OutputHelper {
public static GenerateOutput(response: IReturnResult, options: ICliOptions): string { public static GenerateOutput(response: IReturnResult, options: ICliOptions): string {
const result = response.Result!; const result = response.Result!;
let outputObject = {}; let outputObject: any = {};
outputObject = { ...result }; outputObject = { ...result };
Vylpes marked this conversation as resolved Outdated

I feel like there could be a better way to do this? As now we have the output kinda splintered. I suggest maybe we have the json object created in a separate function, and then split to human-readable if -j isn't present

I feel like there could be a better way to do this? As now we have the output kinda splintered. I suggest maybe we have the json object created in a separate function, and then split to human-readable if `-j` isn't present
if (options.queryMetadata) { if (options.queryMetadata) {
this.AppendObject(outputObject, response.Query, "query"); outputObject = { ...outputObject, ...response.Query }
} }
if (options.json) { if (options.json) {
return JSON.stringify(outputObject); return JSON.stringify(outputObject);
} }
return this.GetFriendlyObjectText(outputObject, ""); return this.GetFriendlyObjectText(outputObject);
} }
/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/no-explicit-any */
private static GetFriendlyObjectText(object: any, output: string, prefix: string = ""): string { private static GetFriendlyObjectText(object: any): string {
Vylpes marked this conversation as resolved Outdated

[nitpick] The use of 'any' for the object parameter is not ideal. Consider using a more specific type.

[nitpick] The use of 'any' for the object parameter is not ideal. Consider using a more specific type.
for (const key in object) { let output = "";
Vylpes marked this conversation as resolved Outdated

I don't think I like the way this is done, I think it should be how it was before, but when its actually printed to the terminal it should remove the appended new line

I don't think I like the way this is done, I think it should be how it was before, but when its actually printed to the terminal it should remove the appended new line

Not exactly sure what this means? It appears to be working fine and looks like that to me

Not exactly sure what this means? It appears to be working fine and looks like that to me
if (typeof(object[key]) == "object")
return this.GetFriendlyObjectText(object[key], output, `${key}.`);
output += `${prefix}${key} = ${object[key]}\n`; for (const key in object) {
output += `${key} = ${object[key]}\n`;
Vylpes marked this conversation as resolved Outdated

This will add an additional new line at the end of the output which might not look right

This will add an additional new line at the end of the output which might not look right
} }
return output; return output;
} }
private static AppendObject(a: any, b: any, target: string): any {
a[target] = { ...b };
}
/* eslint-enable @typescript-eslint/no-explicit-any */ /* eslint-enable @typescript-eslint/no-explicit-any */
} }

View file

@ -16,7 +16,7 @@ Url = https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s
exports[`GenerateOutput GIVEN options.json is true, EXPECT output to be returned as JSON 1`] = `"{"Archived":false,"Author":"author","Downs":0,"Hidden":false,"Permalink":"/r/Rabbits/comments/1dj8pbt/this_is_my_ms_bear/","Subreddit":"Rabbits","SubredditSubscribers":654751,"Title":"This is my Ms Bear!","Ups":17,"Url":"https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d"}"`; exports[`GenerateOutput GIVEN options.json is true, EXPECT output to be returned as JSON 1`] = `"{"Archived":false,"Author":"author","Downs":0,"Hidden":false,"Permalink":"/r/Rabbits/comments/1dj8pbt/this_is_my_ms_bear/","Subreddit":"Rabbits","SubredditSubscribers":654751,"Title":"This is my Ms Bear!","Ups":17,"Url":"https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d"}"`;
exports[`GenerateOutput GIVEN options.queryMetadata AND options.json is supplied, EXPECT query metadata to be in JSON format 1`] = `"{"Archived":false,"Author":"author","Downs":0,"Hidden":false,"Permalink":"/r/Rabbits/comments/1dj8pbt/this_is_my_ms_bear/","Subreddit":"Rabbits","SubredditSubscribers":654751,"Title":"This is my Ms Bear!","Ups":17,"Url":"https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d","query":{"subreddit":"rabbits","sortBy":"hot","limit":100}}"`; exports[`GenerateOutput GIVEN options.queryMetadata AND options.json is supplied, EXPECT query metadata to be in JSON format 1`] = `"{"Archived":false,"Author":"author","Downs":0,"Hidden":false,"Permalink":"/r/Rabbits/comments/1dj8pbt/this_is_my_ms_bear/","Subreddit":"Rabbits","SubredditSubscribers":654751,"Title":"This is my Ms Bear!","Ups":17,"Url":"https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d","subreddit":"rabbits","sortBy":"hot","limit":100}"`;
exports[`GenerateOutput GIVEN options.queryMetadata is supplied, EXPECT query metadata to be added 1`] = ` exports[`GenerateOutput GIVEN options.queryMetadata is supplied, EXPECT query metadata to be added 1`] = `
"Archived = false "Archived = false
@ -29,8 +29,8 @@ SubredditSubscribers = 654751
Title = This is my Ms Bear! Title = This is my Ms Bear!
Ups = 17 Ups = 17
Url = https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d Url = https://preview.redd.it/d5yno653zf7d1.jpg?width=640&crop=smart&auto=webp&s=5064d1caec3c12ac2855eb57ff131d0b313d5e9d
query.subreddit = rabbits subreddit = rabbits
query.sortBy = hot sortBy = hot
query.limit = 100 limit = 100
" "
`; `;