protected virtual IActionName OnResolveActionName(string actionFullName) { IActionName actionName = this.actionNameResolveService.ResolverName(actionFullName); if (actionName == null) { throw Errors.ResolveNullActionName(actionFullName); } return(actionName); }
public void ShouldParseSuccess(string input, string provider, string pack, string name, string version) { IActionNameResolveService actionNameResolveService = this.GetRequiredService <IActionNameResolveService>(); IActionName actionName = actionNameResolveService.ResolverName(input); actionName.Provider.Should().Be(provider); actionName.Pack.Should().Be(pack); actionName.Name.Should().Be(name); actionName.Version.Should().Be(version); }
protected virtual IActionMeta OnGetActionMeta(IActionName actionName) { _ = actionName ?? throw new ArgumentNullException(nameof(actionName)); var actionMeta = this.metaService.GetActionMeta(actionName); if (actionMeta == null) { throw Errors.GetNullMetaInfo(actionName.ToString()); } return(metaService.GetActionMeta(actionName)); }
protected virtual IActionRuntime OnGetActionRuntime(IActionName actionName) { _ = actionName ?? throw new ArgumentNullException(nameof(actionName)); var actionRuntime = runtimeService.GetRunTime(actionName); if (actionRuntime == null) { throw Errors.GetNullRuntimeInfo(actionName.ToString()); } return(actionRuntime); }
public void ShouldThrowActionException(string input) { IActionNameResolveService actionNameResolveService = this.GetRequiredService <IActionNameResolveService>(); Action action = () => { actionNameResolveService.ResolverName(input); }; var exp = Assert.ThrowsException <ActionException>(() => { IActionName actionName = actionNameResolveService.ResolverName(input); }); action.Should().Throw <ActionException>() .And.ErrorCode.Should().Be(nameof(ErrorCodes.InvalidActionName)); }
public IActionMeta GetActionMeta(IActionName actionName) { try { string metaFile = this.OnGetMetaFile(actionName); var metaInfo = fileStoreService.GetObject <MetaInfo>(metaFile); return(ConvertToActionMeta(metaInfo)); } catch (System.Exception ex) { throw Errors.GetMetaInfoError(ex, actionName); } }
protected virtual string OnGetMetaFile(IActionName actionName) { _ = actionName ?? throw new ArgumentNullException(nameof(actionName)); List <string> paths = new List <string>() { packOption.Value.RootDir, actionName.Provider, actionName.Pack, actionName.Version, $"{actionName.Name}.action" }; return(Path.Combine(paths.ToArray())); }
public IActionRuntime GetRunTime(IActionName actionName) { _ = actionName ?? throw new ArgumentNullException(nameof(actionName)); try { string packDir = Path.Combine(this.packOption.Value.RootDir, actionName.Provider, actionName.Pack, actionName.Version); return(new ActionRuntime() { WorkingDirectory = Path.GetFullPath(packDir), OSPlatForm = GetCurrentOSPlatform() }); } catch (Exception ex) { throw Errors.GetRuntimeInfoError(ex, actionName); } }
public void PreparePack(IActionName actionName, IActionRuntime actionRuntime) { _ = actionName ?? throw new ArgumentNullException(nameof(actionName)); string lockFile = System.IO.Path.Combine(actionRuntime.WorkingDirectory, LOCK_FILENAME); string readyFile = System.IO.Path.Combine(actionRuntime.WorkingDirectory, READY_FILENAME); if (File.Exists(readyFile)) { // package is download already; return; } else if (File.Exists(lockFile)) { // other thread or process download the package this.WaitForDownLoadReady(readyFile).Wait(TimeSpan.FromMinutes(15)); } else { // begin download files this.DownLoadPackage(actionName, actionRuntime.WorkingDirectory, lockFile, readyFile); } }
private void DownLoadPackage(IActionName actionName, string WorkingDirectory, string lockFile, string readyFile) { try { Directory.CreateDirectory(Path.GetDirectoryName(lockFile)); using (new FileStream(lockFile, FileMode.CreateNew)) { }; var packFiles = packageProviderService.GetAllPackageFiles(actionName.Provider, actionName.Pack, actionName.Version); var downLoadInfos = packFiles.Select(p => new DownloadInfo { FileSize = p.FileSize, FileHash = p.FileHash, FileUrl = p.FileUrl, LocalFilePath = Path.Combine(WorkingDirectory, p.Path) }).ToArray(); downloadService.DownLoadFiles(downLoadInfos).Wait(); File.WriteAllText(readyFile, "download ready."); } finally { //remove lockFile File.Delete(lockFile); } }
public static ActionException GetMetaInfoError(Exception exception, IActionName actionName) { return(FromErrorMessage(nameof(ErrorCodes.E10002), exception, ToText(actionName))); }
protected virtual IActionContext OnCreateActionContext(IExecuteContext executeContext, IActionName actionName, IActionRuntime actionRuntime, IActionMeta actionMeta) { _ = executeContext ?? throw new ArgumentNullException(nameof(executeContext)); return(new ActionContext() { ExecutePath = executeContext.ExecutePath, Token = executeContext.Token, MetaInfo = actionMeta, RuntimeInfo = actionRuntime, ExecuteName = executeContext.ExecuteName, ServiceProvider = this.serviceProvider, Parameters = this.ConvertParameter(actionMeta, executeContext.ExecuteParameter), Logger = new ActionLogger(), Name = actionName }); }
protected virtual void OnPrepareAction(IActionName actionName, IActionRuntime actionRuntime) { this.preparePackService.PreparePack(actionName, actionRuntime); }