private void FilteForRuntimeSetting(IVuGenScript script, string folder) { IVuGenProjectService projectService = VuGenServiceManager.GetService <IVuGenProjectService>(); //get runtime files List <string> runtimeFiles = new List <string>(); ReadOnlyCollection <string> localFiles = projectService.GetScriptLocalFiles(folder); foreach (string file in localFiles) { runtimeFiles.Add(Path.GetFileName(file)); } //delete all non-runtime files List <string> files = UttFileSystemUtils.GetFileList(folder, "*.*", true); foreach (string file in files) { string fileName = Path.GetFileName(file); if (!runtimeFiles.Contains(fileName)) { File.SetAttributes(file, FileAttributes.Normal); File.Delete(file); } } //delete empty folders string[] directories = Directory.GetDirectories(folder, "*.*", SearchOption.AllDirectories); foreach (string directory in directories) { if (!Directory.EnumerateFileSystemEntries(directory).Any()) { UttFileSystemUtils.DeleteDirectory(directory); } } }
private static void CheckAndUpdateScriptFile(IVuGenScript script) { Logger.InfoFormat("Checking the script '{0}'...", script.FileName); var extraFiles = script.GetExtraFiles(); var isDllReferenced = extraFiles .Any(item => string.Equals(item.FileName, DllName, StringComparison.OrdinalIgnoreCase)); if (isDllReferenced) { Logger.InfoFormat("The library '{0}' is referenced; no update is needed.", DllName); return; } Logger.InfoFormat("The library '{0}' is NOT referenced; updating and reopening the script.", DllName); var dllFilePath = Path.Combine(Path.GetDirectoryName(script.FileName).EnsureNotNull(), DllName); var extraFileScriptItem = script.GenerateManuallyExtraFileScriptItem(dllFilePath); script.AddExtraFile(extraFileScriptItem); script.Save(true); #region Work-around: VuGen UI does not reflect the changes unless the project is reloaded ProjectService.CloseSolution(); ProjectService.LoadSolutionOrProject(script.FileName); #endregion ////Logger.InfoFormat("Checking script file '{0}'", scriptFilePath); ////using (var scriptStream = File.Open(scriptFilePath, FileMode.Open, FileAccess.ReadWrite, FileShare.Read)) ////{ //// var scriptIni = new IniFile(); //// scriptIni.Load(scriptStream); //// var section = scriptIni[DllSectionName]; //// if (section.Contains(DllName) && section[DllName] == string.Empty) //// { //// Logger.InfoFormat("No need to update script file '{0}'", scriptFilePath); //// return; //// } //// section[DllName] = string.Empty; //// var backupScriptFilePath = scriptFilePath + BackupExtension; //// Logger.InfoFormat( //// "Creating backup file '{0}' of script file '{1}'", //// backupScriptFilePath, //// scriptFilePath); //// File.Copy(scriptFilePath, backupScriptFilePath, true); //// Logger.InfoFormat("Updating script file '{0}'", scriptFilePath); //// scriptStream.SetLength(0); //// scriptIni.Save(scriptStream); ////} }
public VuGenZipExportDialog(IVuGenScript script, ZipExportDialogSettings settings) : base(settings) { _script = script; _customControl = new ZipScriptCustomControl(); _customControlViewModel = new ZipScriptCustomControlViewModel(_script); _customControl.DataContext = _customControlViewModel; _customControlViewModel.ExportAllFiles = true; SetUserControl(_customControl); }
public VuGenZipExportDialog(IVuGenScript script, ZipExportDialogSettings settings) : base(settings) { _script = script; _customControl = new ZipScriptCustomControl(); _customControlViewModel = new ZipScriptCustomControlViewModel(_script); _customControl.DataContext = _customControlViewModel; _customControlViewModel.ExportAllFiles = true; SetUserControl(_customControl); }
private void FilterFiles(IVuGenScript script, string tempFolder) { //filter if we only want to zip runtime files if (_customControlViewModel.ZipFiles == ZipFilesEnum.RuntimeFiles) { FilteForRuntimeSetting(_script, tempFolder); } //filter protocol specified excluded folders and files FilteExcludedFiles(_script, tempFolder); }
public static ZipExportDialogSettings GetDefaultExportToZipSettings(IVuGenScript script) { ZipExportDialogSettings settings = new ZipExportDialogSettings(); settings.DialogTitle = "Export to zip"; settings.ExportItemLabel = "Script folder:"; settings.ExportAction = ExportActionEnum.Zip; settings.AllowSwitchExportAction = false; settings.DefaultExportItemPath = script.LocalPath; settings.IsExportItemReadOnly = true; settings.CompressionLevel = Ionic.Zlib.CompressionLevel.BestSpeed; settings.DefaultExportToPath = Path.Combine(Path.GetDirectoryName(script.LocalPath), script.DisplayName + ".zip"); return settings; }
private static void AddTransactionNames(IVuGenScript script, string usrFileName = null) { try { if (script == null) { return; } List <IExtraFileScriptItem> extraFiles = script.GetExtraFiles(); IExtraFileScriptItem dynamicTransacrions = null; foreach (IExtraFileScriptItem extraFile in extraFiles) { if (extraFile.FileName == "dynamic_transactions.txt") //This is not configurable. This is the file name! { dynamicTransacrions = extraFile; break; } } if (dynamicTransacrions == null) { return; } string fileContent = File.ReadAllText(dynamicTransacrions.FullFileName); string[] transactionNames = fileContent.Split(new String[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); IScriptDataObject scriptData = script.GenerateDataObject() as IScriptDataObject; if (scriptData == null) { return; } List <String> transactionsList = scriptData.SpecialSteps.Transactions; transactionsList.AddRange(transactionNames); IniUsrFile usr; if (usrFileName != null) { usr = new IniUsrFile(usrFileName); } else { usr = new IniUsrFile(script.FileName); } usr.WriteTransactions(transactionsList); usr.Save(); } catch { //Don't want to have adverse influence on the regular usage of VuGen. If this fails it does so silently. } }
public static ZipExportDialogSettings GetDefaultExportToZipSettings(IVuGenScript script) { ZipExportDialogSettings settings = new ZipExportDialogSettings(); settings.DialogTitle = "Export to zip"; settings.ExportItemLabel = "Script folder:"; settings.ExportAction = ExportActionEnum.Zip; settings.AllowSwitchExportAction = false; settings.DefaultExportItemPath = script.LocalPath; settings.IsExportItemReadOnly = true; settings.CompressionLevel = Ionic.Zlib.CompressionLevel.BestSpeed; settings.DefaultExportToPath = Path.Combine(Path.GetDirectoryName(script.LocalPath), script.DisplayName + ".zip"); return(settings); }
private IActionScriptItem FindScriptAction(IVuGenScript script, string actionName) { var result = script.GetActionByName(actionName); if (result != null) { return(result); } this.ShowErrorBox( string.Format( CultureInfo.InvariantCulture, "VuGen script action '{0}' is not found.", actionName)); return(null); }
public override void Run() { IVuGenScript script = VuGenServiceManager.GetService <IVuGenProjectService>().GetActiveScript(); if (script == null) { UttDialogMessageService.Instance.ShowWarning("Export to Zip operation is available for the currently loaded script only"); } else { ZipExportDialogSettings settings = GetDefaultExportToZipSettings(script); using (VuGenZipExportDialog dialog = new VuGenZipExportDialog(script, settings)) { if (dialog.ShowDialog() == CustomDialogResult.Ok) { Process.Start("explorer.exe", "/select," + dialog.ExportZipFile); } } } }
private static void AddTransactionNames(IVuGenScript script, string usrFileName=null) { try { if (script == null) return; List<IExtraFileScriptItem> extraFiles = script.GetExtraFiles(); IExtraFileScriptItem dynamicTransacrions = null; foreach (IExtraFileScriptItem extraFile in extraFiles) { if (extraFile.FileName == "dynamic_transactions.txt") //This is not configurable. This is the file name! { dynamicTransacrions = extraFile; break; } } if (dynamicTransacrions == null) return; string fileContent = File.ReadAllText(dynamicTransacrions.FullFileName); string[] transactionNames = fileContent.Split(new String[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); IScriptDataObject scriptData = script.GenerateDataObject() as IScriptDataObject; if (scriptData == null) return; List<String> transactionsList = scriptData.SpecialSteps.Transactions; transactionsList.AddRange(transactionNames); IniUsrFile usr; if (usrFileName != null) { usr = new IniUsrFile(usrFileName); } else { usr = new IniUsrFile(script.FileName); } usr.WriteTransactions(transactionsList); usr.Save(); } catch { //Don't want to have adverse influence on the regular usage of VuGen. If this fails it does so silently. } }
private void FilteExcludedFiles(IVuGenScript script, string folder) { //TODO : This is a very bad candidate for method extension, we should consider other solutions, eg adding virtual properties in BaseProtocol. GetExcludedFilesForZipParameters parameters = new GetExcludedFilesForZipParameters(script); ProtocolExtensionContext context = ProtocolExtensionContext.GetGetExcludedFilesForZipContext(parameters); context.OnBefore(); if (parameters.ExcludedFolders != null && parameters.ExcludedFolders.Count > 0) { foreach (string excludeFolder in parameters.ExcludedFolders) { UttFileSystemUtils.DeleteDirectory(Path.Combine(folder, excludeFolder)); } } if (parameters.ExcludedFiles != null && parameters.ExcludedFiles.Count > 0) { foreach (string excludeFile in parameters.ExcludedFiles) { UttFileSystemUtils.DeleteFile(excludeFile); } } }
public static void SetCurrentStepResponseParameter(IVuGenScript script, string value) { IStepService stepService = ServiceManager.Instance.GetService <IStepService>(); IParametersService parametersService = ServiceManager.Instance.GetService <IParametersService>(); string leftBracket, rightBracket; parametersService.GetParameterBraces(script, out leftBracket, out rightBracket); string actualValue = value; if (actualValue.StartsWith(leftBracket)) { actualValue = actualValue.Substring(leftBracket.Length); } if (actualValue.EndsWith(rightBracket)) { actualValue = actualValue.Substring(0, actualValue.Length - rightBracket.Length); } var step = stepService.CurrentStep; step.SetExtensionProperty("dataposid", actualValue); }
private void FilteExcludedFiles(IVuGenScript script, string folder) { //TODO : This is a very bad candidate for method extension, we should consider other solutions, eg adding virtual properties in BaseProtocol. GetExcludedFilesForZipParameters parameters = new GetExcludedFilesForZipParameters(script); ProtocolExtensionContext context = ProtocolExtensionContext.GetGetExcludedFilesForZipContext(parameters); context.OnBefore(); if (parameters.ExcludedFolders != null && parameters.ExcludedFolders.Count > 0) { foreach (string excludeFolder in parameters.ExcludedFolders) { UttFileSystemUtils.DeleteDirectory(Path.Combine(folder, excludeFolder)); } } if (parameters.ExcludedFiles != null && parameters.ExcludedFiles.Count > 0) { foreach (string excludeFile in parameters.ExcludedFiles) { UttFileSystemUtils.DeleteFile(excludeFile); } } }
public void GenerateAction( IVuGenScript script, IActionScriptItem initActionItem, IActionScriptItem mainActionItem, IActionScriptItem endActionItem) { #region Argument Check if (script == null) { throw new ArgumentNullException("script"); } if (initActionItem == null) { throw new ArgumentNullException("initActionItem"); } if (mainActionItem == null) { throw new ArgumentNullException("mainActionItem"); } if (endActionItem == null) { throw new ArgumentNullException("endActionItem"); } #endregion var scriptFilePath = script.FileName; CopyIdocFiles(scriptFilePath); CheckAndUpdateScriptFile(script); UpdateActionFiles(initActionItem, mainActionItem, endActionItem); }
public ZipScriptCustomControlViewModel(IVuGenScript script) { _script = script; }
private void ExportScript(IVuGenScript script, UttPersistenceToken token) { VuGenServiceManager.GetService <IVuGenProjectService>().Export(script, token); }
public static void SetCurrentStepResponseParameter(IVuGenScript script, string value) { IStepService stepService = ServiceManager.Instance.GetService<IStepService>(); IParametersService parametersService = ServiceManager.Instance.GetService<IParametersService>(); string leftBracket, rightBracket; parametersService.GetParameterBraces(script, out leftBracket, out rightBracket); string actualValue = value; if (actualValue.StartsWith(leftBracket)) { actualValue = actualValue.Substring(leftBracket.Length); } if (actualValue.EndsWith(rightBracket)) { actualValue = actualValue.Substring(0, actualValue.Length - rightBracket.Length); } var step = stepService.CurrentStep; step.SetExtensionProperty("dataposid", actualValue); }
private void FilteForRuntimeSetting(IVuGenScript script, string folder) { IVuGenProjectService projectService = VuGenServiceManager.GetService<IVuGenProjectService>(); //get runtime files List<string> runtimeFiles = new List<string>(); ReadOnlyCollection<string> localFiles = projectService.GetScriptLocalFiles(folder); foreach (string file in localFiles) runtimeFiles.Add(Path.GetFileName(file)); //delete all non-runtime files List<string> files = UttFileSystemUtils.GetFileList(folder, "*.*", true); foreach (string file in files) { string fileName = Path.GetFileName(file); if (!runtimeFiles.Contains(fileName)) { File.SetAttributes(file, FileAttributes.Normal); File.Delete(file); } } //delete empty folders string[] directories = Directory.GetDirectories(folder, "*.*", SearchOption.AllDirectories); foreach (string directory in directories) { if (!Directory.EnumerateFileSystemEntries(directory).Any()) UttFileSystemUtils.DeleteDirectory(directory); } }
private void FilterFiles(IVuGenScript script, string tempFolder) { //filter if we only want to zip runtime files if (_customControlViewModel.ZipFiles == ZipFilesEnum.RuntimeFiles) FilteForRuntimeSetting(_script, tempFolder); //filter protocol specified excluded folders and files FilteExcludedFiles(_script, tempFolder); }
public ZipScriptCustomControlViewModel(IVuGenScript script) { _script = script; }
private void ExportScript(IVuGenScript script, UttPersistenceToken token) { VuGenServiceManager.GetService<IVuGenProjectService>().Export(script, token); }