A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/signumsoftware/framework/commit/a6d3c795b0c88146c90ec490d3b6400cb6cc4b25 below:

update to Signum.TSGEnerator 2.2.2 · signumsoftware/framework@a6d3c79 · GitHub

@@ -13,37 +13,20 @@ namespace Signum.TSGenerator

13 13

{

14 14

public static class Program

15 15

{

16 + 17 + 16 18

public static int Main(string[] args)

17 19

{

20 +

var log = Console.Out;

21 + 18 22

Stopwatch sw = Stopwatch.StartNew();

19 23 20 24

string intermediateAssembly = args[0];

21 25

string[] references = File.ReadAllLines(args[1]);

22 26

string[] content = File.ReadAllLines(args[2]);

23 27 24 -

var log = Console.Out;

25 - 26 28

log.WriteLine("Starting SignumTSGenerator");

27 29 28 -

bool hasPdb = File.Exists(Path.ChangeExtension(intermediateAssembly, ".pdb"));

29 - 30 -

AssemblyDefinition reactAssembly = AssemblyDefinition.ReadAssembly(intermediateAssembly, new ReaderParameters

31 -

{

32 -

ReadingMode = ReadingMode.Deferred,

33 -

ReadSymbols = hasPdb,

34 -

InMemory = true,

35 -

SymbolReaderProvider = hasPdb ? new PdbReaderProvider() : null

36 -

});

37 - 38 - 39 -

if (AlreadyProcessed(reactAssembly))

40 -

{

41 -

log.WriteLine("SignumTSGenerator already processed: {0}", intermediateAssembly);

42 -

return 0;

43 -

}

44 - 45 -

PreloadingAssemblyResolver resolver = new PreloadingAssemblyResolver(references);

46 - 47 30

var assemblyReferences = (from r in references

48 31

where r.Contains(".Entities")

49 32

let reactDirectory = FindReactDirectory(r)

@@ -57,23 +40,42 @@ where r.Contains(".Entities")

57 40 58 41

var entitiesAssembly = Path.GetFileNameWithoutExtension(intermediateAssembly).Replace(".React", ".Entities");

59 42

var entitiesAssemblyReference = assemblyReferences.GetOrThrow(entitiesAssembly);

60 -

var entitiesModule = ModuleDefinition.ReadModule(entitiesAssemblyReference.AssemblyFullPath, new ReaderParameters { AssemblyResolver = resolver });

43 + 44 +

var currentDir = Directory.GetCurrentDirectory();

45 +

var files = content

46 +

.Where(file => Path.GetExtension(file) == ".t4s")

47 +

.Select(file => Path.Combine(currentDir, file))

48 +

.ToList();

49 + 50 +

var upToDateContent = string.Join("\r\n",

51 +

new[] { entitiesAssemblyReference.AssemblyFullPath }

52 +

.Concat(files)

53 +

.OrderBy(a => a)

54 +

.Select(f => File.GetLastWriteTimeUtc(f).ToString("o") + " " + Path.GetFileName(f)));

55 + 56 +

var signumUpToDatePath = Path.Combine(Path.GetDirectoryName(args[1]), "SignumUpToDate.txt");

57 + 58 +

if(File.Exists(signumUpToDatePath) && File.ReadAllText(signumUpToDatePath) == upToDateContent)

59 +

{

60 +

log.WriteLine($"SignumTSGenerator already processed ({sw.ElapsedMilliseconds.ToString()}ms)");

61 +

return 0;

62 +

}

63 + 64 +

var entityResolver = new PreloadingAssemblyResolver(references);

65 +

var entitiesModule = ModuleDefinition.ReadModule(entitiesAssemblyReference.AssemblyFullPath, new ReaderParameters

66 +

{

67 +

AssemblyResolver = entityResolver

68 +

});

69 + 61 70

var options = new AssemblyOptions

62 71

{

63 72

CurrentAssembly = entitiesAssembly,

64 73

AssemblyReferences = assemblyReferences,

65 74

AllReferences = references.ToDictionary(a => Path.GetFileNameWithoutExtension(a)),

66 75

ModuleDefinition = entitiesModule,

67 -

Resolver = resolver,

76 +

Resolver = entityResolver,

68 77

};

69 78 70 - 71 -

var currentDir = Directory.GetCurrentDirectory();

72 -

var files = content

73 -

.Where(file => Path.GetExtension(file) == ".t4s")

74 -

.Select(file => Path.Combine(currentDir, file))

75 -

.ToList();

76 - 77 79

bool hasErrors = false;

78 80

foreach (var file in files)

79 81

{

@@ -95,52 +97,26 @@ where r.Contains(".Entities")

95 97

catch (Exception ex)

96 98

{

97 99

hasErrors = true;

98 -

log.WriteLine($"Error in {file}");

100 +

log.WriteLine($"{file}:error STSG0001:{ex.Message}");

99 101

log.WriteLine(ex.Message);

100 102

}

101 103

}

102 104 103 -

MarkAsProcessed(reactAssembly, resolver);

104 - 105 -

reactAssembly.Write(intermediateAssembly, new WriterParameters

105 +

if (hasErrors)

106 106

{

107 -

WriteSymbols = hasPdb,

108 -

SymbolWriterProvider = hasPdb ? new PdbWriterProvider() : null

109 -

});

110 - 111 -

log.WriteLine($"SignumTSGenerator finished in {sw.ElapsedMilliseconds.ToString()}ms");

112 - 113 -

Console.WriteLine();

114 - 115 -

return hasErrors ? -1 : 0;

116 -

}

117 - 118 -

static bool AlreadyProcessed(AssemblyDefinition assembly)

119 -

{

120 -

var nameof = typeof(GeneratedCodeAttribute).FullName;

121 -

var attr = assembly.CustomAttributes

122 -

.Any(a => a.AttributeType.FullName == nameof && ((string)a.ConstructorArguments[0].Value) == "SignumTask");

123 - 124 -

return attr;

125 -

}

126 - 127 -

static void MarkAsProcessed(AssemblyDefinition assembly, IAssemblyResolver resolver)

128 -

{

129 -

TypeDefinition generatedCodeAttribute = resolver.Resolve(AssemblyNameReference.Parse(typeof(GeneratedCodeAttribute).Assembly.GetName().Name)).MainModule.GetType(typeof(GeneratedCodeAttribute).FullName);

130 -

MethodDefinition constructor = generatedCodeAttribute.Methods.Single(a => a.IsConstructor && a.Parameters.Count == 2);

131 - 132 -

TypeReference stringType = assembly.MainModule.TypeSystem.String;

133 -

assembly.CustomAttributes.Add(new CustomAttribute(assembly.MainModule.ImportReference(constructor))

107 +

log.WriteLine($"SignumTSGenerator finished with errors ({sw.ElapsedMilliseconds.ToString()}ms)");

108 +

Console.WriteLine();

109 +

return 0;

110 +

}

111 +

else

134 112

{

135 -

ConstructorArguments =

136 -

{

137 -

new CustomAttributeArgument(stringType, "SignumTask"),

138 -

new CustomAttributeArgument(stringType, typeof(Program).Assembly.GetName().Version.ToString()),

139 -

}

140 -

});

113 +

File.WriteAllText(signumUpToDatePath, upToDateContent);

114 +

log.WriteLine($"SignumTSGenerator finished ({sw.ElapsedMilliseconds.ToString()}ms)");

115 +

Console.WriteLine();

116 +

return 0;

117 +

}

141 118

}

142 119 143 - 144 120

static string FindReactDirectory(string absoluteFilePath)

145 121

{

146 122

var prefix = absoluteFilePath;


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4