aboutsummaryrefslogtreecommitdiff
path: root/src/api
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2022-03-19 22:53:06 -0700
committerRob Mensching <rob@firegiant.com>2022-03-20 09:00:57 -0700
commitba4bb7b2080d74918d6d856fba6f86caa410149b (patch)
treedf15e170b01ad2cff63405e347bd8276229b5321 /src/api
parentf481f3bfd0b6196dee0034801e4d8768f1fbea63 (diff)
downloadwix-ba4bb7b2080d74918d6d856fba6f86caa410149b.tar.gz
wix-ba4bb7b2080d74918d6d856fba6f86caa410149b.tar.bz2
wix-ba4bb7b2080d74918d6d856fba6f86caa410149b.zip
Centralize cache locations in IExtensionManager
This removes the duplication of cache location definitions between IExtensionManager and extension cache command. Also, adds an extension cache test. Fixes 6536
Diffstat (limited to 'src/api')
-rw-r--r--src/api/wix/WixToolset.Extensibility/Data/IExtensionCacheLocation.cs41
-rw-r--r--src/api/wix/WixToolset.Extensibility/Services/IExtensionManager.cs7
2 files changed, 48 insertions, 0 deletions
diff --git a/src/api/wix/WixToolset.Extensibility/Data/IExtensionCacheLocation.cs b/src/api/wix/WixToolset.Extensibility/Data/IExtensionCacheLocation.cs
new file mode 100644
index 00000000..53158875
--- /dev/null
+++ b/src/api/wix/WixToolset.Extensibility/Data/IExtensionCacheLocation.cs
@@ -0,0 +1,41 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.Extensibility.Data
4{
5 /// <summary>
6 /// Extension cache location scope.
7 /// </summary>
8 public enum ExtensionCacheLocationScope
9 {
10 /// <summary>
11 /// Project extension cache location.
12 /// </summary>
13 Project,
14
15 /// <summary>
16 /// User extension cache location.
17 /// </summary>
18 User,
19
20 /// <summary>
21 /// Machine extension cache location.
22 /// </summary>
23 Machine,
24 }
25
26 /// <summary>
27 /// Location where extensions may be cached.
28 /// </summary>
29 public interface IExtensionCacheLocation
30 {
31 /// <summary>
32 /// Path for the extension cache location.
33 /// </summary>
34 string Path { get; }
35
36 /// <summary>
37 /// Scope for the extension cache location.
38 /// </summary>
39 ExtensionCacheLocationScope Scope { get; }
40 }
41}
diff --git a/src/api/wix/WixToolset.Extensibility/Services/IExtensionManager.cs b/src/api/wix/WixToolset.Extensibility/Services/IExtensionManager.cs
index 8e49c38d..fe939a59 100644
--- a/src/api/wix/WixToolset.Extensibility/Services/IExtensionManager.cs
+++ b/src/api/wix/WixToolset.Extensibility/Services/IExtensionManager.cs
@@ -4,6 +4,7 @@ namespace WixToolset.Extensibility.Services
4{ 4{
5 using System.Collections.Generic; 5 using System.Collections.Generic;
6 using System.Reflection; 6 using System.Reflection;
7 using WixToolset.Extensibility.Data;
7 8
8 /// <summary> 9 /// <summary>
9 /// Loads extensions and uses the extensions' factories to provide services. 10 /// Loads extensions and uses the extensions' factories to provide services.
@@ -33,6 +34,12 @@ namespace WixToolset.Extensibility.Services
33 void Load(string extensionReference); 34 void Load(string extensionReference);
34 35
35 /// <summary> 36 /// <summary>
37 /// Gets extensions cache locations.
38 /// </summary>
39 /// <returns>List of cache locations where extensions may be found.</returns>
40 IReadOnlyCollection<IExtensionCacheLocation> GetCacheLocations();
41
42 /// <summary>
36 /// Gets extensions of specified type from factories loaded into the extension manager. 43 /// Gets extensions of specified type from factories loaded into the extension manager.
37 /// </summary> 44 /// </summary>
38 /// <typeparam name="T">Type of extension to get.</typeparam> 45 /// <typeparam name="T">Type of extension to get.</typeparam>