Datei: NDOEnhancer/ProjectAssets.cs

Last Commit (3eaf9d3)
1 using System;
2 using System.Collections.Generic;
3 using System.IO;
4 using System.Linq;
5 using System.Text;
6 using System.Text.RegularExpressions;
7 using System.Threading.Tasks;
8 using TinyJSON;
9
10 namespace NDOEnhancer
11 {
12 ····class ProjectAssets
13 ····{
14 ········static ProjectDescription projectDescription;
15 ········static ProjectAssets()
16 ········{
17 ············projectDescription = (ProjectDescription) AppDomain.CurrentDomain.GetData( "ProjectDescription" );
18 ········}
19
20 ········public static string GetPackageDir( string packageName )
21 ········{
22 ············var json = new JSON();
23 ············JSON.Object root;
24 ············var objPath = Path.Combine(projectDescription.ProjPath, "obj");
25 ············var assetsPath = Path.Combine( objPath, "project.assets.json" );
26 ············if (assetsPath == null)
27 ············{
28 ················Console.WriteLine( $"Can't find assets file: {assetsPath}" );
29 ················return null;
30 ············}
31 ············using (TextReader tr = new StreamReader( assetsPath ))
32 ················root = json.Parse( tr ).Value.AsObject();
33
34 ············var targets = root["targets"].AsObject();
35 ············var standardKey = targets.First(o=>o.StartsWith(".NETStandard,Version="));
36 ············var standard = targets[standardKey].AsObject();
37 ············var packageKey = standard.First(o=>o.StartsWith(packageName + '/', StringComparison.OrdinalIgnoreCase));
38 ············var package = standard[packageKey].AsObject();
39 ············var compile = package["compile"].AsObject().First();
40 ············var relPath = packageKey + "/" + compile;
41 ············if (Path.DirectorySeparatorChar != '/')
42 ················relPath = relPath.Replace( '/', Path.DirectorySeparatorChar );
43 ············//Regex regex = new Regex(@"netstandard\d\.\d");
44 ············//relPath = regex.Replace( relPath, "net452" );
45 ············return relPath;
46 ········}
47
48 ········public static IEnumerable<string> GetPackageDirectories( string pattern )
49 ········{
50 ············var json = new JSON();
51 ············JSON.Object root;
52 ············var objPath = Path.Combine(projectDescription.ProjPath, "obj");
53 ············var assetsPath = Path.Combine( objPath, "project.assets.json" );
54 ············if (assetsPath == null)
55 ············{
56 ················Console.WriteLine( $"Can't find assets file: {assetsPath}" );
57 ················return Enumerable.Empty<string>();
58 ············}
59 ············using (TextReader tr = new StreamReader( assetsPath ))
60 ················root = json.Parse( tr ).Value.AsObject();
61
62 ············var targets = root["targets"].AsObject();
63 var standardKey = targets. FirstOrDefault( o=>o. StartsWith( ". NETStandard, Version=") || o. StartsWith( ". NETCoreApp, Version=") ) ;
64 ············if (standardKey == null)
65 ············{
66 ················Console.WriteLine("Can't find any .NETStandard or .NETCoreApp target in the project.assets.json file");
67 ················return Enumerable.Empty<string>();
68 ············}
69 ············var standard = targets[standardKey].AsObject();
70 ············Regex regex = new Regex(pattern + '/');
71 ············var packageKeys = standard.Where(o=>regex.Match(o).Success);
72 ············var paths = packageKeys.Select(packageKey=>
73 ············{
74 ················var package = standard[packageKey].AsObject();
75 ················var compile = package["compile"].AsObject().First();
76 ················var relPath = packageKey + "/" + compile;
77 ················if (Path.DirectorySeparatorChar != '/')
78 ····················relPath = relPath.Replace( '/', Path.DirectorySeparatorChar );
79 ················//Regex regx = new Regex(@"netstandard\d\.\d");
80 ················//relPath = regx.Replace( relPath, "net452" );
81 ················return relPath;
82 ············} );
83 ············return paths;
84 ········}
85 ····}
86 }
87
New Commit (da7ba4c)
1 using System;
2 using System.Collections.Generic;
3 using System.IO;
4 using System.Linq;
5 using System.Text;
6 using System.Text.RegularExpressions;
7 using System.Threading.Tasks;
8 using TinyJSON;
9
10 namespace NDOEnhancer
11 {
12 ····class ProjectAssets
13 ····{
14 ········static ProjectDescription projectDescription;
15 ········static ProjectAssets()
16 ········{
17 ············projectDescription = (ProjectDescription) AppDomain.CurrentDomain.GetData( "ProjectDescription" );
18 ········}
19
20 ········public static string GetPackageDir( string packageName )
21 ········{
22 ············var json = new JSON();
23 ············JSON.Object root;
24 ············var objPath = Path.Combine(projectDescription.ProjPath, "obj");
25 ············var assetsPath = Path.Combine( objPath, "project.assets.json" );
26 ············if (assetsPath == null)
27 ············{
28 ················Console.WriteLine( $"Can't find assets file: {assetsPath}" );
29 ················return null;
30 ············}
31 ············using (TextReader tr = new StreamReader( assetsPath ))
32 ················root = json.Parse( tr ).Value.AsObject();
33
34 ············var targets = root["targets"].AsObject();
35 ············var standardKey = targets.First(o=>o.StartsWith(".NETStandard,Version="));
36 ············var standard = targets[standardKey].AsObject();
37 ············var packageKey = standard.First(o=>o.StartsWith(packageName + '/', StringComparison.OrdinalIgnoreCase));
38 ············var package = standard[packageKey].AsObject();
39 ············var compile = package["compile"].AsObject().First();
40 ············var relPath = packageKey + "/" + compile;
41 ············if (Path.DirectorySeparatorChar != '/')
42 ················relPath = relPath.Replace( '/', Path.DirectorySeparatorChar );
43 ············//Regex regex = new Regex(@"netstandard\d\.\d");
44 ············//relPath = regex.Replace( relPath, "net452" );
45 ············return relPath;
46 ········}
47
48 ········public static IEnumerable<string> GetPackageDirectories( string pattern )
49 ········{
50 ············var json = new JSON();
51 ············JSON.Object root;
52 ············var objPath = Path.Combine(projectDescription.ProjPath, "obj");
53 ············var assetsPath = Path.Combine( objPath, "project.assets.json" );
54 ············if (assetsPath == null)
55 ············{
56 ················Console.WriteLine( $"Can't find assets file: {assetsPath}" );
57 ················return Enumerable.Empty<string>();
58 ············}
59 ············using (TextReader tr = new StreamReader( assetsPath ))
60 ················root = json.Parse( tr ).Value.AsObject();
61
62 ············var targets = root["targets"].AsObject();
63 var standardKey = targets. FirstOrDefault( o => o. StartsWith( ". NETStandard, Version=" ) || o. StartsWith( ". NETCoreApp, Version=" ) || o. StartsWith( "net" ) ) ;
64 ············if (standardKey == null)
65 ············{
66 ················Console.WriteLine("Can't find any .NETStandard or .NETCoreApp target in the project.assets.json file");
67 ················return Enumerable.Empty<string>();
68 ············}
69 ············var standard = targets[standardKey].AsObject();
70 ············Regex regex = new Regex(pattern + '/');
71 ············var packageKeys = standard.Where(o=>regex.Match(o).Success);
72 ············var paths = packageKeys.Select(packageKey=>
73 ············{
74 ················var package = standard[packageKey].AsObject();
75 ················var compile = package["compile"].AsObject().First();
76 ················var relPath = packageKey + "/" + compile;
77 ················if (Path.DirectorySeparatorChar != '/')
78 ····················relPath = relPath.Replace( '/', Path.DirectorySeparatorChar );
79 ················//Regex regx = new Regex(@"netstandard\d\.\d");
80 ················//relPath = regx.Replace( relPath, "net452" );
81 ················return relPath;
82 ············} );
83 ············return paths;
84 ········}
85 ····}
86 }
87