public void CopyOrMove(DirectoryOperationsShared.ActionType action, string sourceDirectoryPath, string targetDirectoryPath, DirectoryOperationsShared.ExistsOption existsOption, bool replaceExistingFile) { if (string.IsNullOrEmpty(sourceDirectoryPath)) { throw new Exception("Source directory path cannot be null or empty."); } if (string.IsNullOrEmpty(targetDirectoryPath)) { throw new Exception("Target directory path cannot be null or empty."); } if (!Directory.Exists(sourceDirectoryPath)) { throw new DirectoryNotFoundException(string.Format("Source directory [{0}] does not exist.", sourceDirectoryPath)); } sourceDirectoryPath = sourceDirectoryPath.TrimEnd('\\'); targetDirectoryPath = targetDirectoryPath.TrimEnd('\\'); PerformAction((action == DirectoryOperationsShared.ActionType.Copy), sourceDirectoryPath, targetDirectoryPath, existsOption, replaceExistingFile); }
public override void GenerateCode(Plugin.Common.CodeGeneration.IFunctionBuilder functionBuilder) { functionBuilder.AddCode( string.Format(@"var executor = new Twenty57.Linx.Components.File.V1.DirectoryOperationsX(); executor.LogEvent += message => {0}.Log(message);" , functionBuilder.ContextParamName)); DirectoryOperationsShared.ActionType actionType = FunctionData.Properties[DirectoryOperationsShared.ActionPropertyName].GetValue <DirectoryOperationsShared.ActionType>(); switch (actionType) { case DirectoryOperationsShared.ActionType.DirectoryExists: functionBuilder.AddCode(string.Format("return executor.DirectoryExists({0});", functionBuilder.GetParamName(DirectoryOperationsShared.DirectoryPropertyName))); break; case DirectoryOperationsShared.ActionType.Create: functionBuilder.AddCode(string.Format("return executor.CreateDirectory({0}, {1});", functionBuilder.GetParamName(DirectoryOperationsShared.DirectoryPropertyName), CSharpUtilities.EnumAsString(FunctionData.Properties[DirectoryOperationsShared.CreateDirectoryExistsPropertyName].GetValue <DirectoryOperationsShared.CreateExistsOption>()))); break; case DirectoryOperationsShared.ActionType.Delete: functionBuilder.AddCode(string.Format("executor.DeleteDirectory({0});", functionBuilder.GetParamName(DirectoryOperationsShared.DirectoryPropertyName))); break; case DirectoryOperationsShared.ActionType.Copy: case DirectoryOperationsShared.ActionType.Move: functionBuilder.AddCode(string.Format(@"executor.CopyOrMove({0}, {1}, {2}, {3}, {4});", CSharpUtilities.EnumAsString(actionType), functionBuilder.GetParamName(DirectoryOperationsShared.SourceDirectoryPropertyName), functionBuilder.GetParamName(DirectoryOperationsShared.TargetDirectoryPropertyName), CSharpUtilities.EnumAsString(FunctionData.Properties[DirectoryOperationsShared.DirectoryExistsPropertyName].GetValue <DirectoryOperationsShared.ExistsOption>()), CSharpUtilities.BoolAsString(FunctionData.Properties[DirectoryOperationsShared.ReplaceExistingFilePropertyName].GetValue <bool>()))); break; default: throw new Exception(string.Format("Invalid action type [{0}] specified.", actionType)); } functionBuilder.AddAssemblyReference(typeof(DirectoryOperations)); }