aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Extensibility/Services/IBackendHelper.cs
blob: 756d0a9760d2a2f7a87fc2068685a21d1d84167b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// 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.

namespace WixToolset.Extensibility.Services
{
    using System;
    using WixToolset.Data;
    using WixToolset.Extensibility.Data;

    /// <summary>
    /// Interface provided to help backend extensions.
    /// </summary>
    public interface IBackendHelper
    {
        /// <summary>
        /// Creates a file transfer and marks it redundant if the source and destination are identical.
        /// </summary>
        /// <param name="source">Source for the file transfer.</param>
        /// <param name="destination">Destiation for the file transfer.</param>
        /// <param name="move">Indicates whether to move or copy the source file.</param>
        IFileTransfer CreateFileTransfer(string source, string destination, bool move, SourceLineNumber sourceLineNumbers = null);

        /// <summary>
        /// Creates a version 3 name-based UUID.
        /// </summary>
        /// <param name="namespaceGuid">The namespace UUID.</param>
        /// <param name="value">The value.</param>
        /// <returns>The generated GUID for the given namespace and value.</returns>
        string CreateGuid(Guid namespaceGuid, string value);

        /// <summary>
        /// Creates a resolved directory.
        /// </summary>
        /// <param name="directoryParent">Directory parent identifier.</param>
        /// <param name="name">Name of directory.</param>
        /// <returns>Resolved directory.</returns>
        IResolvedDirectory CreateResolvedDirectory(string directoryParent, string name);

        /// <summary>
        /// Creates a tracked file.
        /// </summary>
        /// <param name="path">Destination path for the build output.</param>
        /// <param name="type">Type of tracked file to create.</param>
        /// <param name="sourceLineNumbers">Optional source line numbers that requested the tracked file.</param>
        ITrackedFile TrackFile(string path, TrackedFileType type, SourceLineNumber sourceLineNumbers = null);
    }
}