private static void MakeRefasm()

in src/RefasmerExe/Program.cs [273:327]


    private static void MakeRefasm((string Path, string RelativeForOutput) input)
    {
        IImportFilter? filter = null;

        if (_public)
            filter = new AllowPublic(_omitNonApiMembers ?? throw new Exception("--omit-non-api-members should be specified for the passed filter type."));
        else if (_internals)
            filter = new AllowPublicAndInternals(_omitNonApiMembers ?? throw new Exception("--omit-non-api-members should be specified for the passed filter type."));
        else if (_all)
            filter = new AllowAll();

        byte[] result;
        using (var peReader = ReadAssembly(input.Path, out var metaReader))
        {
            result = MetadataImporter.MakeRefasm(
                metaReader,
                peReader,
                _logger,
                filter,
                _omitNonApiMembers,
                _makeMock,
                _omitReferenceAssemblyAttr);
        }

        string output;

        if (!string.IsNullOrEmpty(_outputFile))
        {
            output = _outputFile;
        }
        else if (!string.IsNullOrEmpty(_outputDir))
        {
            output = Path.Combine(_outputDir, input.RelativeForOutput);
        }
        else if (_overwrite)
        {
            output = input.Path;
        }
        else
        {
            output = $"{input.Path}.{(_makeMock ? "mock" : "refasm")}.dll";
        }

        _logger.Debug?.Invoke($"Writing result to {output}");

        if (File.Exists(output))
            File.Delete(output);

        var outdir = Path.GetDirectoryName(output);

        if (!string.IsNullOrEmpty(outdir))
            Directory.CreateDirectory(outdir);

        File.WriteAllBytes(output, result);
    }