Skip to content

Commit 4288d95

Browse files
committed
added feature to init ql workspace
1 parent db2f1ad commit 4288d95

File tree

5 files changed

+92
-0
lines changed

5 files changed

+92
-0
lines changed

src/CodeQLToolkit.Features.Query/CodeQLToolkit.Features.Query.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@
2828
</ItemGroup>
2929

3030
<ItemGroup>
31+
<None Update="Templates\Query\codeql-workspace.liquid">
32+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
33+
</None>
3134
<None Update="Templates\Query\cpp\expected.liquid">
3235
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
3336
</None>
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
using CodeQLToolkit.Features.Query.Lifecycle.Targets;
2+
using CodeQLToolkit.Shared.Feature;
3+
using CodeQLToolkit.Shared.Options;
4+
using CodeQLToolkit.Shared.Types;
5+
using System;
6+
using System.Collections.Generic;
7+
using System.CommandLine;
8+
using System.Linq;
9+
using System.Text;
10+
using System.Threading.Tasks;
11+
12+
namespace CodeQLToolkit.Features.Query.Lifecycle
13+
{
14+
public class QueryLifecycleFeature : FeatureBase, IToolkitLifecycleFeature
15+
{
16+
public QueryLifecycleFeature()
17+
{
18+
FeatureName = "Query";
19+
}
20+
21+
public void Register(Command parentCommand)
22+
{
23+
Log<QueryLifecycleFeature>.G().LogInformation("Registering lifecycle submodule.");
24+
25+
var initCommand = new Command("init", "Initialize query support in this repository.");
26+
27+
var overwriteExistingOption = new Option<bool>("--overwrite-existing", () => false, "Overwrite exiting files (if they exist).");
28+
29+
initCommand.AddOption(overwriteExistingOption);
30+
31+
parentCommand.Add(initCommand);
32+
33+
initCommand.SetHandler((basePath, overwriteExisting) =>
34+
{
35+
Log<QueryLifecycleFeature>.G().LogInformation("Executing init command...");
36+
37+
38+
new InitLifecycleTarget()
39+
{
40+
FeatureName = FeatureName,
41+
Base = basePath,
42+
OverwriteExisting = overwriteExisting
43+
44+
}.Run();
45+
46+
47+
}, Globals.BasePathOption, overwriteExistingOption);
48+
49+
}
50+
51+
public int Run()
52+
{
53+
throw new NotImplementedException();
54+
}
55+
}
56+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
using CodeQLToolkit.Features.Query.Scaffolding.Targets;
2+
using CodeQLToolkit.Shared.Feature;
3+
using System;
4+
using System.Collections.Generic;
5+
using System.CommandLine;
6+
using System.Linq;
7+
using System.Text;
8+
using System.Threading.Tasks;
9+
10+
namespace CodeQLToolkit.Features.Query.Lifecycle.Targets
11+
{
12+
public class InitLifecycleTarget : ILifecycleTarget
13+
{
14+
public override void Run()
15+
{
16+
Log<InitLifecycleTarget>.G().LogInformation("Initializing new query development workspace...");
17+
18+
Directory.CreateDirectory(Base);
19+
20+
var workspaceLocation = Path.Combine(Base, "codeql-workspace.yml");
21+
22+
WriteTemplateIfOverwriteOrNotExists("codeql-workspace", workspaceLocation, "CodeQL Workspace");
23+
}
24+
}
25+
}

src/CodeQLToolkit.Features.Query/QueryFeatureMain.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using CodeQLToolkit.Features.Query.Commands;
2+
using CodeQLToolkit.Features.Query.Lifecycle;
23
using CodeQLToolkit.Features.Query.Scaffolding;
34
using CodeQLToolkit.Shared.Feature;
45
using CodeQLToolkit.Shared.Logging;
@@ -12,6 +13,8 @@ public class QueryFeatureMain : IToolkitFeature
1213
{
1314
readonly QueryScaffoldFeature scaffoldFeature;
1415
readonly QueryCommandFeature commandFeature;
16+
readonly QueryLifecycleFeature lifecycleFeature;
17+
1518

1619
readonly static QueryFeatureMain instance;
1720

@@ -22,6 +25,7 @@ private QueryFeatureMain()
2225
{
2326
scaffoldFeature = new QueryScaffoldFeature();
2427
commandFeature = new QueryCommandFeature();
28+
lifecycleFeature = new QueryLifecycleFeature();
2529
}
2630

2731
public static QueryFeatureMain Instance { get { return instance; } }
@@ -41,6 +45,7 @@ public void Register(Command parentCommand)
4145

4246
scaffoldFeature.Register(queryCommand);
4347
commandFeature.Register(queryCommand);
48+
lifecycleFeature.Register(queryCommand);
4449

4550
}
4651
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
provide:
2+
- '**/qlpack.yml'
3+
- '**/codeql-workspace.yml'

0 commit comments

Comments
 (0)