public Runner()
        {
            var workingFolder = AppDomain.CurrentDomain.BaseDirectory;
            var tsGeneratorJson = Path.Combine(workingFolder, TsgeneratorJson);

            var text = File.ReadAllText(tsGeneratorJson);
            _options = JsonConvert.DeserializeObject<TypeScriptGeneratorOptions>(text);
        }
        private static int Init()
        {
            if (ExistsTsGeneratorJson())
            {
                Console.WriteLine("File {0} already exists", _tsGeneratorJson);
                return 0;
            }

            Console.WriteLine("Writing {0}", _tsGeneratorJson);

            var options = new TypeScriptGeneratorOptions();
            try
            {
                options.Init(_workingFolder);
                options.Save(_tsGeneratorJson);
            }
            catch (Exception ex)
            {
                DumpError(ex);
                return -1;
            }
            return 1;
        }
        private bool ProcessAssembly(string pathToAssembly, TypeScriptGeneratorOptions options)
        {
            if (!File.Exists(pathToAssembly))
            {
                Console.WriteLine("File {0} not found", pathToAssembly);
                return false;
            }

            Console.WriteLine("Processing {0}", pathToAssembly);

            try
            {
                var controllers = LoadControllers(pathToAssembly);

                if (!controllers.Any())
                {
                    Console.WriteLine("No controllers found");
                    return false;
                }

                foreach (var controller in controllers)
                {
                    Console.WriteLine("...analyzing {0}", controller.FullName);
                    try
                    {
                        var builder = new TypeScriptBuilder(options.DestFolder, options.NgModule);
                        foreach (var reference in options.References)
                        {
                            builder.AddReference(reference);
                        }

                        var pathToTs = builder.GenerateClientApi(controller, options.Namespace, options.ApiRoot);
                        Console.WriteLine("...written {0}", pathToTs);
                    }
                    catch (Exception ex)
                    {
                        DumpError(ex);
                    }
                }
            }
            catch (Exception ex)
            {
                if (ex is ReflectionTypeLoadException)
                {
                    var typeLoadException = ex as ReflectionTypeLoadException;
                    var loaderExceptions = typeLoadException.LoaderExceptions;
                    foreach (var le in loaderExceptions)
                    {
                        DumpError(le);
                    }
                }
                else
                {
                    DumpError(ex);
                }
                return false;
            }

            return true;
        }