This repository contains a Go CLI that performs file merging operations. The CLI merges all JSONL files in a specified directory into a single JSONL file and stores it in an output directory. Additionally, if the --format csv flag is used, the output is a CSV file.
Objective: Create a Go CLI tool named util
that performs file merging operations. The tool should merge all JSONL files in a specified directory into a single JSONL file and store it in an output directory. Additionally, if the --format csv
flag is used, the output should be a CSV file.
-
CLI Flags:
--operation merge
: Specifies the operation to be performed.--input-path ./<any_path>
: Path to the directory containing JSONL files to be merged.--output-path ./<any_path>
: Path to the directory where the merged file will be stored.--format csv
: (Optional) If provided, the output should be a CSV file instead of a JSONL file.
-
Functionality:
- Read all JSONL files from the input directory.
- Merge the content of all JSONL files into a single JSONL file.
- If the
--format csv
flag is detected, convert the merged JSONL content to CSV format. - Save the merged file (in JSONL or CSV format) to the specified output directory.
-
Bonus: Implement the
--format csv
flag to output a CSV file.
-
Setup Go Environment:
- Ensure Go is installed on your machine.
- Create a new Go module.
-
Implement the CLI Tool:
- Use a CLI package like
flag
orcobra
for parsing command-line arguments. - Implement functions to read and merge JSONL files.
- Implement functions to convert JSONL to CSV format (if required).
- Implement the main function to handle CLI arguments and execute the appropriate functions.
- Use a CLI package like
-
Testing:
- Create a few sample JSONL files for testing.
- Test the tool by running the command with different flag combinations.
-
Documentation:
- Provide clear instructions on how to use the tool, including examples.
-
Merge JSONL files into a single JSONL file:
./bin/util --operation merge --input-path ./data/jsonl_files/ --output-path ./output_data
-
Merge JSONL files and output as a CSV file:
./bin/util --operation merge --input-path ./data/jsonl_files/ --output-path ./output_data --format csv
Submit the following:
- The complete Go code.
- Sample input JSONL files for testing.
- A README file with instructions on how to build and run the tool, including example commands.
Good luck with the task!