public int run()

in schema-induction/src/main/java/aws/json/schema/induction/Cli.java [62:124]


    public int run(String[] args) throws Exception {
        Options opt = new Options();
        CommandLine cmd = new CommandLine(opt);
        CommandLine.ParseResult parseResult = cmd.parseArgs(args);
        if (!parseResult.errors().isEmpty()) {
            System.err.println(parseResult.errors());
            return -1;
        }
        if (cmd.isUsageHelpRequested()) {
            cmd.usage(System.out);
            return 0;
        }
        InputStreamReader inStream;
        if (opt.inputFile.startsWith("s3:")) {
            AmazonS3 s3;
            if (opt.s3.compareToIgnoreCase("profile") == 0) {
                s3 = AmazonS3Client.builder().withCredentials(new ProfileCredentialsProvider())
                        .withRegion(opt.region).build();
            } else {
                s3 = AmazonS3Client.builder().withCredentials(new EC2ContainerCredentialsProviderWrapper()).build();
            }
            final AmazonS3URI inputUri = new AmazonS3URI(opt.inputFile);
            String bucket_name = inputUri.getBucket();
            String key_name = inputUri.getKey();
            try {
                final S3Object s3Object = s3.getObject(bucket_name, key_name);
                final S3ObjectInputStream objectInputStream = s3Object.getObjectContent();
                inStream = new InputStreamReader(objectInputStream);
            } catch (Exception e) {
                throw new RuntimeException("Error reading input file " + opt.inputFile,e);
            }

        } else {
            File dataFile = new File(opt.inputFile);
            if (!dataFile.exists()) {
                throw new RuntimeException("Error reading input file " + opt.inputFile);
            }

            inStream = new InputStreamReader(new FileInputStream(dataFile), "UTF-8");
        }

        JsonStructureBuilder builder = new JsonStructureBuilder(opt.isArray);

        JsonPathsReader reader = new JsonPathsReader(builder);

        reader.readStream(inStream, opt.isArray);
        logger.info("total number of unique paths: " + builder.getPaths().size());
        if (opt.outSchemaFile != null) {
            JsonSchemaGenerator schemaGenerator = new JsonSchemaGenerator();
            ObjectNode schema = schemaGenerator.generateSchemaTree(builder.getRoot(), opt.rootDefinition);
            PrintWriter sWriter = new PrintWriter(new FileWriter(opt.outSchemaFile));
            sWriter.print(schemaGenerator.prettyPrintJsonString(schema));
            sWriter.close();
        }

        if (opt.outDdlFile != null) {
            PrintWriter ddlWriter = new PrintWriter(new FileWriter(opt.outDdlFile));
            RedshiftDDLGenerator redshiftDDLGenerator = new RedshiftDDLGenerator();
            redshiftDDLGenerator.writeDDL(builder.getRoot(), opt.tableName, opt.tableLocation, opt.isArray,ddlWriter);
            ddlWriter.close();
        }
        return 0;
    }