Commit c973982c authored by Grant, Josh's avatar Grant, Josh
Browse files

Merge branch 'feature/generate-csv' into 'develop'

rename the entrypoints and add a json

See merge request !44
parents 26d19a9d d78b27ff
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -25,9 +25,9 @@ from common.cli.docker_cli import docker
from common.cli.python_cli import python_cli
from common.cli.gen_cli import gen_cli

of_cli.add_command(docker)
of_cli.add_command(python_cli)
of_cli.add_command(gen_cli)
of_cli.add_command(docker, name="docker")
of_cli.add_command(python_cli, name="py")
of_cli.add_command(gen_cli, name="gen")

if __name__ == "__main__":
    of_cli()
+18 −2
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@

import click

from common.gen import generate_csv, convert_size_to_bytes
from common.gen import generate_csv, convert_size_to_bytes, generate_json


@click.group()
@@ -15,7 +15,7 @@ def gen_cli():
@click.option('--col', '-c', type=int, required=True, help="Number of columns in the CSV.")
@click.option('--row', '-r', type=int, help="Number of rows in the CSV.")
@click.option('--size', '-s', type=str, help="Target file size (e.g., 512MB or 1GB).")
def generate(col, row, size):
def csv(col, row, size):
    """Generate a CSV file with the specified number of columns and rows or file size."""
    target_file_size = None
    if size:
@@ -34,5 +34,21 @@ def generate(col, row, size):
    )


@gen_cli.command()
@click.option('--size', '-s', type=str, required=True, help="Target file size (e.g., 512MB or 1GB).")
def json(size):
    """Create a JSON file with the specified target size."""
    try:
        target_file_size = convert_size_to_bytes(size)
    except ValueError as e:
        click.echo(f"Error: {e}")
        return

    generate_json(
        file_path='output.json',
        target_file_size=target_file_size
    )


if __name__ == '__main__':
    gen_cli()
+19 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@ import csv
import random
import string
import os
import json
import argparse


@@ -71,6 +72,24 @@ def generate_csv(file_path, n_columns=5, target_file_size=None, target_row_count
    print(f"CSV file generated at {file_path} with {row_count} rows.")


def generate_json(file_path, target_file_size):
    """Generates a JSON file with a target size."""
    data = {"data": []}

    current_file_size = 0
    with open(file_path, 'w') as file:
        while current_file_size < target_file_size:
            row = {}
            for _ in range(5):
                row[generate_gibberish()] = generate_gibberish()

            data["data"].append(row)
            json.dump(data, file)
            current_file_size = os.path.getsize(file_path)

    print(f"JSON file generated at {file_path}.")


def main():
    parser = argparse.ArgumentParser(description="Generate a large CSV file with random data.")