Update File activities

This commit is contained in:
Sipke Schoorstra 2021-06-19 10:59:40 +02:00
parent c907bf994d
commit 0b334a54d1
11 changed files with 49 additions and 45 deletions

View file

@ -12,7 +12,7 @@ namespace Elsa.Activities.File
public class DeleteFile : Activity
{
[ActivityInput(Hint = "Path of the file to delete.")]
public string Path { get; set; }
public string Path { get; set; } = default!;
protected override IActivityExecutionResult OnExecute(ActivityExecutionContext context)
{

View file

@ -14,10 +14,10 @@ namespace Elsa.Activities.File
public class EnumerateFiles : Activity
{
[ActivityInput(Hint = "Path of the folder to enumerate files.")]
public string Path { get; set; }
public string Path { get; set; } = default!;
[ActivityInput(Hint = "Pattern for files to return.")]
public string Pattern { get; set; }
public string? Pattern { get; set; }
[ActivityInput(Hint = "Ignore inaccessible files.", Label = "Ignore Inaccessible")]
public bool IgnoreInaccessible { get; set; } = true;
@ -29,12 +29,12 @@ namespace Elsa.Activities.File
public bool SubDirectories { get; set; } = false;
[ActivityOutput(Hint = "List of files.")]
public IEnumerable<string> Files { get; set; }
public IEnumerable<string>? Files { get; set; }
protected override IActivityExecutionResult OnExecute(ActivityExecutionContext context)
{
if (string.IsNullOrWhiteSpace(Pattern))
return Done(Directory.EnumerateFiles(Path));
return Done(Directory.EnumerateFiles(Path!));
var options = new EnumerationOptions()
{

View file

@ -12,7 +12,7 @@ namespace Elsa.Activities.File
public class FileExists : Activity
{
[ActivityInput(Hint = "Path of the file to delete.")]
public string Path { get; set; }
public string Path { get; set; } = default!;
protected override IActivityExecutionResult OnExecute(ActivityExecutionContext context)
{

View file

@ -12,25 +12,25 @@ namespace Elsa.Activities.File
{
public static IActivityBuilder FileExists(this IActivityBuilder builder, Action<ISetupActivity<FileExists>> setup, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) => builder.Then(setup, null, lineNumber, sourceFile);
public static IActivityBuilder FileExists(this IActivityBuilder builder, Func<ActivityExecutionContext, string> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
public static IActivityBuilder FileExists(this IActivityBuilder builder, Func<ActivityExecutionContext, string?> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
builder.FileExists(activity => activity
.Set(x => x.Path, path),
lineNumber,
sourceFile);
public static IActivityBuilder FileExists(this IActivityBuilder builder, Func<ActivityExecutionContext, ValueTask<string>> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
public static IActivityBuilder FileExists(this IActivityBuilder builder, Func<ActivityExecutionContext, ValueTask<string?>> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
builder.FileExists(activity => activity
.Set(x => x.Path, path),
lineNumber,
sourceFile);
public static IActivityBuilder FileExists(this IActivityBuilder builder, Func<string> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
public static IActivityBuilder FileExists(this IActivityBuilder builder, Func<string?> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
builder.FileExists(activity => activity
.Set(x => x.Path, path),
lineNumber,
sourceFile);
public static IActivityBuilder FileExists(this IActivityBuilder builder, Func<ValueTask<string>> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
public static IActivityBuilder FileExists(this IActivityBuilder builder, Func<ValueTask<string?>> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
builder.FileExists(activity => activity
.Set(x => x.Path, path),
lineNumber,

View file

@ -17,10 +17,10 @@ namespace Elsa.Activities.File
public class OutFile : Activity
{
[ActivityInput(Hint = "Bytes to write to file.", SupportedSyntaxes = new[] { SyntaxNames.JavaScript }, DefaultSyntax = SyntaxNames.JavaScript)]
public byte[] Bytes { get; set; }
public byte[] Bytes { get; set; } = default!;
[ActivityInput(Hint = "Path to create file at.", UIHint = ActivityInputUIHints.SingleLine, SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid })]
public string Path { get; set; }
public string Path { get; set; } = default!;
[ActivityInput(Hint = "How the output file should be written to.", UIHint = ActivityInputUIHints.Dropdown)]
public CopyMode Mode { get; set; } = CopyMode.CreateNew;

View file

@ -12,7 +12,7 @@ namespace Elsa.Activities.File
{
public static IActivityBuilder OutFile(this IBuilder builder, Action<ISetupActivity<OutFile>> setup, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) => builder.Then(setup, null, lineNumber, sourceFile);
public static IActivityBuilder OutFile(this IBuilder builder, Func<ActivityExecutionContext, byte[]> bytes, Func<ActivityExecutionContext, string> path, Func<ActivityExecutionContext, CopyMode> mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
public static IActivityBuilder OutFile(this IBuilder builder, Func<ActivityExecutionContext, byte[]?> bytes, Func<ActivityExecutionContext, string?> path, Func<ActivityExecutionContext, CopyMode> mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
builder.OutFile(activity => activity
.Set(x => x.Bytes, bytes)
.Set(x => x.Path, path)
@ -20,7 +20,7 @@ namespace Elsa.Activities.File
lineNumber,
sourceFile);
public static IActivityBuilder OutFile(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<byte[]>> bytes, Func<ActivityExecutionContext, ValueTask<string>> path, Func<ActivityExecutionContext, ValueTask<CopyMode>> mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
public static IActivityBuilder OutFile(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<byte[]?>> bytes, Func<ActivityExecutionContext, ValueTask<string?>> path, Func<ActivityExecutionContext, ValueTask<CopyMode>> mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
builder.OutFile(activity => activity
.Set(x => x.Bytes, bytes)
.Set(x => x.Path, path)
@ -28,7 +28,7 @@ namespace Elsa.Activities.File
lineNumber,
sourceFile);
public static IActivityBuilder OutFile(this IBuilder builder, Func<byte[]> bytes, Func<string> path, Func<CopyMode> mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
public static IActivityBuilder OutFile(this IBuilder builder, Func<byte[]?> bytes, Func<string?> path, Func<CopyMode> mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
builder.OutFile(activity => activity
.Set(x => x.Bytes, bytes)
.Set(x => x.Path, path)
@ -36,7 +36,7 @@ namespace Elsa.Activities.File
lineNumber,
sourceFile);
public static IActivityBuilder OutFile(this IBuilder builder, Func<ValueTask<byte[]>> bytes, Func<ValueTask<string>> path, Func<ValueTask<CopyMode>> mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
public static IActivityBuilder OutFile(this IBuilder builder, Func<ValueTask<byte[]?>> bytes, Func<ValueTask<string?>> path, Func<ValueTask<CopyMode>> mode, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
builder.OutFile(activity => activity
.Set(x => x.Bytes, bytes)
.Set(x => x.Path, path)

View file

@ -6,6 +6,7 @@ using Elsa.Services;
using Elsa.Services.Models;
using System.Threading.Tasks;
// ReSharper disable once CheckNamespace
namespace Elsa.Activities.File
{
[Action(Category = "File",
@ -14,14 +15,14 @@ namespace Elsa.Activities.File
public class ReadFile : Activity
{
[ActivityInput(Hint = "Path to read content from.", UIHint = ActivityInputUIHints.SingleLine, SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid })]
public string Path { get; set; }
public string Path { get; set; } = default!;
[ActivityOutput(Hint = "Bytes of the file read.")]
public byte[] Bytes { get; set; }
public byte[]? Bytes { get; set; }
public async override ValueTask<IActivityExecutionResult> ExecuteAsync(ActivityExecutionContext context)
public override async ValueTask<IActivityExecutionResult> ExecuteAsync(ActivityExecutionContext context)
{
var Bytes = await System.IO.File.ReadAllBytesAsync(Path);
Bytes = await System.IO.File.ReadAllBytesAsync(Path);
return Done();
}
}

View file

@ -4,40 +4,42 @@ using System;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
// ReSharper disable ExplicitCallerInfoArgument
// ReSharper disable once CheckNamespace
namespace Elsa.Activities.File
{
public static class ReadFileBuilderExtensions
{
public static IActivityBuilder ReadFile(this IBuilder builder, Action<ISetupActivity<OutFile>> setup, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) => builder.Then(setup, null, lineNumber, sourceFile);
public static IActivityBuilder ReadFile(this IBuilder builder, Func<ActivityExecutionContext, string> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
builder.OutFile(activity => activity
.Set(x => x.Path, path),
lineNumber,
sourceFile);
public static IActivityBuilder ReadFile(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<string>> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
public static IActivityBuilder ReadFile(this IBuilder builder, Func<ActivityExecutionContext, string?> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
builder.OutFile(activity => activity
.Set(x => x.Path, path),
lineNumber,
sourceFile);
public static IActivityBuilder ReadFile(this IBuilder builder, Func<string> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
public static IActivityBuilder ReadFile(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<string?>> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
builder.OutFile(activity => activity
.Set(x => x.Path, path),
lineNumber,
sourceFile);
public static IActivityBuilder ReadFile(this IBuilder builder, Func<ValueTask<string>> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
public static IActivityBuilder ReadFile(this IBuilder builder, Func<string?> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
builder.OutFile(activity => activity
.Set(x => x.Path, path),
lineNumber,
sourceFile);
public static IActivityBuilder ReadFile(this IBuilder builder, string path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
public static IActivityBuilder ReadFile(this IBuilder builder, Func<ValueTask<string?>> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
builder.OutFile(activity => activity
.Set(x => x.Path, path),
lineNumber,
sourceFile);
public static IActivityBuilder ReadFile(this IBuilder builder, string? path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
builder.OutFile(activity => activity
.Set(x => x.Path, path),
lineNumber,
sourceFile);
}
}
}

View file

@ -3,14 +3,15 @@ using Elsa.Services.Models;
using System;
using System.Threading.Tasks;
// ReSharper disable once CheckNamespace
namespace Elsa.Activities.File
{
public static class ReadFileExtensions
{
public static ISetupActivity<ReadFile> WithPath(this ISetupActivity<ReadFile> setup, Func<ActivityExecutionContext, ValueTask<string>> path) => setup.Set(x => x.Path, path);
public static ISetupActivity<ReadFile> WithPath(this ISetupActivity<ReadFile> setup, Func<ActivityExecutionContext, string> path) => setup.Set(x => x.Path, path);
public static ISetupActivity<ReadFile> WithPath(this ISetupActivity<ReadFile> setup, Func<ValueTask<string>> path) => setup.Set(x => x.Path, path);
public static ISetupActivity<ReadFile> WithPath(this ISetupActivity<ReadFile> setup, Func<string> path) => setup.Set(x => x.Path, path);
public static ISetupActivity<ReadFile> WithPath(this ISetupActivity<ReadFile> setup, string path) => setup.Set(x => x.Path, path);
public static ISetupActivity<ReadFile> WithPath(this ISetupActivity<ReadFile> setup, Func<ActivityExecutionContext, ValueTask<string?>> path) => setup.Set(x => x.Path, path);
public static ISetupActivity<ReadFile> WithPath(this ISetupActivity<ReadFile> setup, Func<ActivityExecutionContext, string?> path) => setup.Set(x => x.Path, path);
public static ISetupActivity<ReadFile> WithPath(this ISetupActivity<ReadFile> setup, Func<ValueTask<string?>> path) => setup.Set(x => x.Path, path);
public static ISetupActivity<ReadFile> WithPath(this ISetupActivity<ReadFile> setup, Func<string?> path) => setup.Set(x => x.Path, path);
public static ISetupActivity<ReadFile> WithPath(this ISetupActivity<ReadFile> setup, string? path) => setup.Set(x => x.Path, path);
}
}

View file

@ -2,6 +2,7 @@ using Elsa.ActivityResults;
using Elsa.Attributes;
using Elsa.Services;
// ReSharper disable once CheckNamespace
namespace Elsa.Activities.File
{
[Action(Category = "File",
@ -10,7 +11,7 @@ namespace Elsa.Activities.File
public class TempFile : Activity
{
[ActivityOutput(Hint = "Path of the created temporary file.")]
public string Path { get; set; }
public string Path { get; set; } = default!;
protected override IActivityExecutionResult OnExecute()
{

View file

@ -6,7 +6,8 @@ namespace Elsa.Activities.File.Models
public class FileSystemChanged
{
public FileSystemChanged()
{ }
{
}
public FileSystemChanged(WatcherChangeTypes changeType, string directory, string fileName, string fullPath)
{
@ -19,14 +20,12 @@ namespace Elsa.Activities.File.Models
public WatcherChangeTypes ChangeType { get; set; }
public string Directory { get; set; }
public string Directory { get; set; } = default!;
public string FileName { get; set; }
public string FileName { get; set; } = default!;
public string FullPath { get; set; }
public string FullPath { get; set; } = default!;
public string Pattern { get; set; }
public DateTime TimeStamp { get; set; }
public DateTime TimeStamp { get; set; } = default!;
}
}
}