File tree Expand file tree Collapse file tree 5 files changed +126
-0
lines changed
CodeQLToolkit.Features/Query/Commands/Targets
test/CodeQLToolkit.Shared.Tests/Utils Expand file tree Collapse file tree 5 files changed +126
-0
lines changed Original file line number Diff line number Diff line change 11using CodeQLToolkit . Shared . CodeQL ;
2+ using CodeQLToolkit . Shared . Utils ;
23using Microsoft . VisualBasic ;
34using System ;
45using System . Collections . Generic ;
@@ -26,7 +27,35 @@ public override void Run()
2627
2728 installation . EnableCustomCodeQLBundles = UseBundle ;
2829
30+ //
2931 installation . IsInstalledOrDie ( ) ;
32+ //
33+
34+
35+ // filter the packs that are part of a custom bundle if we are using bundles.
36+ if ( UseBundle )
37+ {
38+ // load the config
39+ var config = QLTConfig . LoadFromFile ( Base ) ;
40+
41+ Log < InstallQueryPacksCommandTarget > . G ( ) . LogInformation ( "In bundle mode so filtering bundled packs..." ) ;
42+
43+
44+ foreach ( var pack in config . ExportedCustomizationPacks )
45+ {
46+ Log < InstallQueryPacksCommandTarget > . G ( ) . LogInformation ( $ "Pack { pack } will NOT installed because it is part of the bundle...") ;
47+ }
48+
49+ files = files . Where ( f => ! config . ExportedCustomizationPacks . Any ( p => CodeQLPackReader . read ( f ) . Name == p ) ) . ToArray ( ) ;
50+
51+ Log < InstallQueryPacksCommandTarget > . G ( ) . LogInformation ( $ "Got { files . Length } packs after filtering...") ;
52+
53+ foreach ( var file in files )
54+ {
55+ Log < InstallQueryPacksCommandTarget > . G ( ) . LogInformation ( $ "Pack { CodeQLPackReader . read ( file ) . Name } in { file } will installed because it is not part of the bundle...") ;
56+ }
57+ }
58+
3059
3160 foreach ( string file in files )
3261 {
Original file line number Diff line number Diff line change 1313 <PackageReference Include =" NLog.Extensions.Logging" Version =" 5.3.2" />
1414 <PackageReference Include =" Scriban" Version =" 5.7.0" />
1515 <PackageReference Include =" System.CommandLine" Version =" 2.0.0-beta4.22272.1" />
16+ <PackageReference Include =" YamlDotNet" Version =" 15.1.2" />
1617 </ItemGroup >
1718
1819</Project >
Original file line number Diff line number Diff line change 1+ using System ;
2+ using System . Collections . Generic ;
3+ using System . Linq ;
4+ using System . Text ;
5+ using System . Threading . Tasks ;
6+ using YamlDotNet . RepresentationModel ;
7+
8+ namespace CodeQLToolkit . Shared . Utils
9+ {
10+ public class CodeQLPack
11+ {
12+ public string Name { get ; set ; }
13+ }
14+ public class CodeQLPackReader
15+ {
16+ public static CodeQLPack read ( string path )
17+ {
18+ var pack = new CodeQLPack ( ) ;
19+
20+ using ( var reader = new StreamReader ( path ) )
21+ {
22+ var yaml = new YamlStream ( ) ;
23+ yaml . Load ( reader ) ;
24+
25+ var root = ( YamlMappingNode ) yaml . Documents [ 0 ] . RootNode ;
26+
27+ foreach ( var e in root . Children )
28+ {
29+ if ( e . Key . ToString ( ) == "name" )
30+ {
31+ pack . Name = e . Value . ToString ( ) ;
32+ }
33+ }
34+
35+
36+
37+ }
38+
39+ return pack ;
40+ }
41+ }
42+ }
Original file line number Diff line number Diff line change @@ -52,5 +52,21 @@ public void ToFile()
5252 var data = JsonConvert . SerializeObject ( this , Formatting . Indented ) ;
5353 File . WriteAllText ( CodeQLConfigFilePath , data ) ;
5454 }
55+
56+ public static QLTConfig ? LoadFromFile ( string baseDir )
57+ {
58+ var config = new QLTConfig ( )
59+ {
60+ Base = baseDir
61+ } ;
62+
63+
64+ if ( File . Exists ( config . CodeQLConfigFilePath ) )
65+ {
66+ return config . FromFile ( ) ;
67+ }
68+
69+ return null ;
70+ }
5571 }
5672}
Original file line number Diff line number Diff line change 1+ using System ;
2+ using System . Collections . Generic ;
3+ using System . Linq ;
4+ using System . Text ;
5+ using System . Threading . Tasks ;
6+
7+ namespace CodeQLToolkit . Shared . Tests . Utils
8+ {
9+ public class PackReaderTests
10+ {
11+ public string TestFile { get ; set ; }
12+ [ SetUp ]
13+ public void Setup ( )
14+ {
15+ var doc = @"
16+ ---
17+ library: true
18+ name: qlt2/stuff2
19+ version: 0.0.1
20+ description: Default description
21+ suites:
22+ license:
23+ dependencies:
24+ codeql/cpp-all: ""0.12.2""
25+ " ;
26+
27+ TestFile = Path . Combine ( Path . GetTempPath ( ) , "qlpack.yml" ) ;
28+
29+ File . WriteAllText ( TestFile , doc ) ;
30+ }
31+
32+ [ Test ]
33+ public void TestReadPackName ( )
34+ {
35+ Assert . AreEqual ( "qlt2/stuff2" , CodeQLPackReader . read ( TestFile ) . Name ) ;
36+ }
37+ }
38+ }
You can’t perform that action at this time.
0 commit comments