CLI tool for running Playbooks
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

75 lines
2.6 KiB

using System;
using TrustedUninstaller.Shared.Actions;
using TrustedUninstaller.Shared.Tasks;
using YamlDotNet.Core.Events;
using YamlDotNet.Serialization;
namespace TrustedUninstaller.Shared.Parser
{
internal class TaskActionResolver : INodeTypeResolver
{
public bool Resolve(NodeEvent? nodeEvent, ref Type currentType)
{
if (!currentType.IsInterface || currentType != typeof(ITaskAction))
{
return false;
}
switch (nodeEvent?.Tag.Value)
{
case "!file:":
currentType = typeof(FileAction);
return true;
case "!service:":
currentType = typeof(ServiceAction);
return true;
case "!user:":
currentType = typeof(UserAction);
return true;
case "!run:":
currentType = typeof(RunAction);
return true;
case "!powerShell:":
currentType = typeof(PowerShellAction);
return true;
case "!shortcut:":
currentType = typeof(ShortcutAction);
return true;
case "!cmd:":
currentType = typeof(CmdAction);
return true;
case "!scheduledTask:":
currentType = typeof(ScheduledTaskAction);
return true;
case "!lineInFile:":
currentType = typeof(LineInFileAction);
return true;
case "!registryKey:":
currentType = typeof(RegistryKeyAction);
return true;
case "!registryValue:":
currentType = typeof(RegistryValueAction);
return true;
case "!appx:":
currentType = typeof(AppxAction);
return true;
case "!systemPackage:":
currentType = typeof(SystemPackageAction);
return true;
case "!taskKill:":
currentType = typeof(TaskKillAction);
return true;
case "!update:":
currentType = typeof(UpdateAction);
return true;
case "!writeStatus:":
currentType = typeof(WriteStatusAction);
return true;
default:
return false;
}
}
}
}