# Copyright (c) 2018, Vanessa Sochat All rights reserved.
# See the LICENSE in the main repository at:
#    https://www.github.com/openschemas/openschemas-python
from openschemas.main.map2model.parser import FrontMatterParser
import sys
import os
[docs]def main(config_yml=None,
         folder=None,
         output=None,
         template=None,
         repo=None):
    '''entrypoint function for map2model, when used by the openschemas client.
       Parameters
       ==========
       config: The configuration.yml. If not defined, defaults to that in PWD.
       folder: the input folder where specification subfolders are expected. 
       If not defined, defaults to "specifications"
       output: the output folder for specification files. If not defined, 
       defaults to "spec files"
       template: the template to use for the specification. Defaults to
       "template.html" provided by the module
       repo: the repository where the specification will be published.
       defaults to openschemas/specifications
    '''
    # Set the default specifications folder and configuration
    if not folder:
        folder = 'specifications'
    # Inputs and outputs, defaults to docs/spec_files
    outfolder = output or 'spec_files'
    outfolder = os.path.abspath(outfolder)
    folder = os.path.abspath(folder)
    config = config_yml or 'configuration.yml'
        
    # Output folder we may need to make
    if not os.path.exists(outfolder):
        os.mkdir(outfolder)
    print('Configuration file set to %s' % config)
    print('Output folder set to %s' % outfolder)
    print('Input folder set to %s\n' % folder)
    # Both must exist
    for path in [config, folder]:
        if not os.path.exists(path):
            print('Error, %s not found.' % path)
            sys.exit(1)
    spec_parser = FrontMatterParser(input_folder=folder,
                                    output_folder=outfolder,
                                    config_file_path=config,
                                    template=template,
                                    repo=repo)
    spec_parser.parse_front_matter()
    return spec_parser