46    description = (
   47        'Command line utility to export ARI documentation to markdown'
   48    )
   49 
   50    parser = ArgParser(description=description)
   51    parser.add_argument('--resources', type=str, default="rest-api/resources.json",
   52                        help="resources.json file to process", required=False)
   53    parser.add_argument('--source-dir', type=str, default=".",
   54                        help="Asterisk source directory", required=False)
   55    parser.add_argument('--dest-dir', type=str, default="doc/rest-api",
   56                        help="Destination directory", required=False)
   57    parser.add_argument('--docs-prefix', type=str, default="../",
   58                        help="Prefix to apply to links", required=False)
   59 
   60    args = parser.parse_args()
   61    if not args:
   62        return
   63 
   64    renderer = pystache.Renderer(search_dirs=[TOPDIR], missing_tags='strict')
   65    processor = AsteriskProcessor(wiki_prefix=args.docs_prefix)
   66 
   67    API_TRANSFORMS = [
   68        Transform(rel('api.wiki.mustache'),
   69                  '%s/{{name_title}}_REST_API.md' % args.dest_dir),
   70        Transform(rel('res_ari_resource.c.mustache'),
   71                  'res/res_ari_{{c_name}}.c'),
   72        Transform(rel('ari_resource.h.mustache'),
   73                  'res/ari/resource_{{c_name}}.h'),
   74        Transform(rel('ari_resource.c.mustache'),
   75                  'res/ari/resource_{{c_name}}.c', overwrite=False),
   76    ]
   77 
   78    RESOURCES_TRANSFORMS = [
   79        Transform(rel('models.wiki.mustache'),
   80                  '%s/Asterisk_REST_Data_Models.md' % args.dest_dir),
   81        Transform(rel('ari.make.mustache'), 'res/ari.make'),
   82        Transform(rel('ari_model_validators.h.mustache'),
   83                  'res/ari/ari_model_validators.h'),
   84        Transform(rel('ari_model_validators.c.mustache'),
   85                  'res/ari/ari_model_validators.c'),
   86    ]
   87 
   88    
   89    base_dir = os.path.dirname(args.resources)
   90    resources = ResourceListing().
load_file(args.resources, processor)
 
   91    for api in resources.apis:
   92        api.load_api_declaration(base_dir, processor)
   93 
   94    
   95    for api in resources.apis:
   96        for transform in API_TRANSFORMS:
   97            transform.render(renderer, api, args.source_dir)
   98    for transform in RESOURCES_TRANSFORMS:
   99        transform.render(renderer, resources, args.source_dir)
  100 
static int load_file(const char *filename, char **ret)
Read a TEXT file into a string and return the length.