public int Decompile(ILogger logger, DecompileArguments arguments) { logger.LogWarning( "WARNING: Decompilation is a best-effort process, as there is no guaranteed mapping from ARM JSON to Bicep.\n" + "You may need to fix warnings and errors in the generated bicep file(s), or decompilation may fail entirely if an accurate conversion is not possible.\n" + "If you would like to report any issues or inaccurate conversions, please see https://github.com/Azure/bicep/issues."); var diagnosticLogger = new BicepDiagnosticLogger(logger); var jsonPath = PathHelper.ResolvePath(arguments.InputFile); try { var(bicepUri, filesToSave) = TemplateDecompiler.DecompileFileWithModules(resourceTypeProvider, new FileResolver(), PathHelper.FilePathToFileUrl(jsonPath)); foreach (var(fileUri, bicepOutput) in filesToSave) { File.WriteAllText(fileUri.LocalPath, bicepOutput); } var syntaxTreeGrouping = SyntaxTreeGroupingBuilder.Build(new FileResolver(), new Workspace(), bicepUri); var compilation = new Compilation(resourceTypeProvider, syntaxTreeGrouping); return(LogDiagnosticsAndCheckSuccess(diagnosticLogger, compilation) ? 0 : 1); } catch (Exception exception) { this.errorWriter.WriteLine($"{jsonPath}: Decompilation failed with fatal error \"{exception.Message}\""); return(1); } }
public int Decompile(ILogger logger, DecompileArguments arguments) { logger.LogWarning( "WARNING: Decompilation is a best-effort process, as there is no guaranteed mapping from ARM JSON to Bicep.\n" + "You may need to fix warnings and errors in the generated bicep file(s), or decompilation may fail entirely if an accurate conversion is not possible.\n" + "If you would like to report any issues or inaccurate conversions, please see https://github.com/Azure/bicep/issues."); var diagnosticLogger = new BicepDiagnosticLogger(logger); var hadErrors = false; var jsonPaths = arguments.Files.Select(f => PathHelper.ResolvePath(f)).ToArray(); foreach (var jsonPath in jsonPaths) { hadErrors |= !DecompileSingleFile(diagnosticLogger, jsonPath); } return(hadErrors ? 1 : 0); }
public async Task <int> RunAsync(DecompileArguments args) { logger.LogWarning(CliResources.DecompilerDisclaimerMessage); var inputPath = PathHelper.ResolvePath(args.InputFile);