55 lines
2.4 KiB
C#
55 lines
2.4 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.CommandLine;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace CFUtils.Commands
|
|
{
|
|
internal class Install : Command
|
|
{
|
|
const string NAME = "install";
|
|
const string DESC = "Install the profile described by the manifest.";
|
|
public Install(DirectoryInfo workspaceDir) : base(NAME, DESC)
|
|
{
|
|
Argument<FileInfo> profileFile = new Argument<FileInfo>("profile", "The .zip file describing the profile to install.");
|
|
Add(profileFile);
|
|
|
|
Option<DirectoryInfo?> destination = new Option<DirectoryInfo?>("--destination", "Where to install the profile.");
|
|
destination.AddAlias("-d");
|
|
Add(destination);
|
|
|
|
Option<bool> server = new Option<bool>("--server", "Install server files.");
|
|
server.AddAlias("-s");
|
|
Add(server);
|
|
|
|
Option<DirectoryInfo?> client = new Option<DirectoryInfo?>("--client", "Install files in local client.");
|
|
client.AddAlias("-c");
|
|
Add(client);
|
|
|
|
Option<FileInfo?> fileExclude = new Option<FileInfo?>("--exclude-file", "Excludes files with IDs listed in a given file.");
|
|
fileExclude.AddAlias("-E");
|
|
Add(fileExclude);
|
|
|
|
Option<FileInfo?> fileInclude = new Option<FileInfo?>("--include-file", "Includes files with IDs listed in a given file.");
|
|
fileInclude.AddAlias("-I");
|
|
Add(fileInclude);
|
|
|
|
Option<IEnumerable<FileInfo>> excludeIds = new Option<IEnumerable<FileInfo>>
|
|
("--exclude-id", "Excludes the files with the given IDs.");
|
|
excludeIds.AllowMultipleArgumentsPerToken = true;
|
|
excludeIds.AddAlias("-e");
|
|
Add(excludeIds);
|
|
|
|
Option<IEnumerable<FileInfo>> includeIds = new Option<IEnumerable<FileInfo>>("--include-id", "Include the files with the given IDs");
|
|
includeIds.AllowMultipleArgumentsPerToken = true;
|
|
includeIds.AddAlias("-i");
|
|
Add(includeIds);
|
|
|
|
this.SetHandler(async (FileInfo profileFile, DirectoryInfo? dest, bool server, bool client, FileInfo? fileExclude, FileInfo? fileInclude, IEnumerable<FileInfo> excludeIds, IEnumerable<FileInfo> includeIds) =>
|
|
{
|
|
|
|
}, profileFile, destination, client, fileExclude, fileInclude, excludeIds, includeIds);
|
|
}
|
|
}
|
|
} |