/// Execute action public override object Execute() { DirectoryInfo d = new DirectoryInfo(Context.TransformStr(To, Transform)); d.Create(); if (Clean) { Delete del = new Delete { From = d.ToString(), Recursive = true, ReadOnly = true }; Context.Execute(del); } var zip = Context.Transform(From, Transform); var nf = new FileNameOnlyFilter(Syntax, Context.TransformStr(Filter, Transform)); var df = new StringFilter(Syntax, Context.TransformStr(DirectoryFilter, Transform)); var ret = extractZip(zip, d.FullName, nf, df); if (ReturnValue.IsBreak(ret)) { return(null); } ReturnValue.RethrowIfException(ret); return(ret); }
/// Execute action public override object Execute() { downloadPackagesInfo(); RowSet rs=new RowSet(); Context.Initialize(rs); List<Package> toUpdate = new List<Package>(); var filter = new StringFilter(Syntax, Context.TransformStr(Filter, Transform)); //VerboseMessage("Filter: {0} {1}", Syntax, Dump.ToDump( Context.TransformStr(Filter, Transform))); foreach (var c in Items) { var rv=c.CheckVersion(); Version currentVersion = null; string str = (rv==null?null:(ReturnValue.Unwrap(rv)??string.Empty).ToString()); if (!string.IsNullOrEmpty(str)) currentVersion = new Version(str); var pinfo = GetPackage(c.Name); Version newVersion =(pinfo != null) ?pinfo.Version:null; rs.AddRow(new Vars(){ {"Package",c.FriendlyName}, {"Installed",(currentVersion==null)?"not installed":currentVersion.ToString()}, {"Available",(newVersion == null) ? "n/a" : newVersion.ToString()}} ); bool update = false; if (currentVersion != null && ((newVersion > currentVersion) || ForceUpdate) && filter.IsMatch(c.Name)) { toUpdate.Add(c); update = true; } VerboseMessage("{0}: {1}=>{2}. Update={3}",c.Name,currentVersion,newVersion,update); } Context.Out.WriteLine(string.Empty); Context.Out.WriteLine(rs.ToTextTable(TableFormatOptions.Header)); if (toUpdate.Count==0) { Context.Out.WriteLine("All packages are up to date!"); return null; } try { VerboseMessage("--- Downloading components... --- "); foreach (var c in toUpdate) c.Download(this); VerboseMessage("--- Download completed. --- "); VerboseMessage(string.Empty); VerboseMessage("--- Starting update... ---"); Context.Execute(BeforeUpdate); try { foreach (var c in toUpdate) c.DoUpdate(this); } finally { Context.Execute(AfterUpdate); } VerboseMessage("--- Update completed. ---"); VerboseMessage(string.Empty); return null; } finally { if (Cleanup) { VerboseMessage("--- Cleaning up... ---"); foreach (var c in toUpdate) { try { c.Cleanup(this); } catch { Context.WriteLine(OutputType.Error, string.Format("Cleanup failed for {0}...", c.Name)); } } VerboseMessage("--- Cleaning completed. ---"); VerboseMessage(string.Empty); } } }
/// Execute action public override object Execute() { string f = Context.TransformStr(From, Transform); DirectoryInfo src; IStringFilter nf, df; string trg = Context.TransformStr(To, Transform); if (File.Exists(f)) { src = new DirectoryInfo(new FileInfo(f).DirectoryName); nf = new SelfIgnoreFilenameOnlyFilter(trg, FilterSyntax.Pattern, Regex.Escape(Path.GetFileName(f))); df = new StringFilter(null); } else { src = new DirectoryInfo(f); nf = new SelfIgnoreFilenameOnlyFilter(trg, Syntax, Context.TransformStr(Filter, Transform)); df = new FullPathFilter(Syntax, Context.TransformStr(DirectoryFilter, Transform), BackslashOption.Add); } if (!src.Exists) { throw new DirectoryNotFoundException(string.Format("Directory {0} does not exist", src)); } bool deleteTrg = false; Stream str = null; var outTo = Context.TransformStr(OutTo, Transform); try { if (outTo != null) { str = new MemoryStream(); } else { str = Context.CreateStream(trg); deleteTrg = true; } var ret = createZip(str, src.FullName, nf, df); if (trg != null && outTo != null) { deleteTrg = true; using (var ctx2 = Context.CreateStream(trg)) ((MemoryStream)str).WriteTo(ctx2); } if (outTo != null) { Context.OutTo(outTo, ((MemoryStream)str).ToArray()); } deleteTrg = false; if (ReturnValue.IsBreak(ret)) { return(null); } ReturnValue.RethrowIfException(ret); return(ret); } finally { if (str != null) { str.Dispose(); } if (deleteTrg) { File.Delete(trg); } } }
/// Execute action public override object Execute() { string f = Context.TransformStr(From, Transform); DirectoryInfo src; IStringFilter nf, df; string trg = Context.TransformStr(To, Transform); if (File.Exists(f)) { src = new DirectoryInfo(new FileInfo(f).DirectoryName); nf = new SelfIgnoreFilenameOnlyFilter(trg, FilterSyntax.Pattern, Regex.Escape(Path.GetFileName(f))); df = new StringFilter(null); } else { src = new DirectoryInfo(f); nf = new SelfIgnoreFilenameOnlyFilter(trg, Syntax, Context.TransformStr(Filter, Transform)); df = new FullPathFilter(Syntax, Context.TransformStr(DirectoryFilter, Transform), BackslashOption.Add); } if (!src.Exists) throw new DirectoryNotFoundException(string.Format("Directory {0} does not exist", src)); bool deleteTrg = false; Stream str = null; var outTo = Context.TransformStr(OutTo, Transform); try { if (outTo != null) str = new MemoryStream(); else { str = Context.CreateStream(trg); deleteTrg = true; } var ret = createZip(str, src.FullName, nf, df); if (trg != null && outTo != null) { deleteTrg = true; using (var ctx2 = Context.CreateStream(trg)) ((MemoryStream)str).WriteTo(ctx2); } if (outTo != null) Context.OutTo(outTo, ((MemoryStream)str).ToArray()); deleteTrg = false; if (ReturnValue.IsBreak(ret)) return null; ReturnValue.RethrowIfException(ret); return ret; } finally { if (str != null) str.Dispose(); if (deleteTrg) File.Delete(trg); } }
/// Execute action public override object Execute() { downloadPackagesInfo(); RowSet rs = new RowSet(); Context.Initialize(rs); List <Package> toUpdate = new List <Package>(); var filter = new StringFilter(Syntax, Context.TransformStr(Filter, Transform)); //VerboseMessage("Filter: {0} {1}", Syntax, Dump.ToDump( Context.TransformStr(Filter, Transform))); foreach (var c in Items) { var rv = c.CheckVersion(); Version currentVersion = null; string str = (rv == null?null:(ReturnValue.Unwrap(rv) ?? string.Empty).ToString()); if (!string.IsNullOrEmpty(str)) { currentVersion = new Version(str); } var pinfo = GetPackage(c.Name); Version newVersion = (pinfo != null) ?pinfo.Version:null; rs.AddRow(new Vars() { { "Package", c.FriendlyName }, { "Installed", (currentVersion == null)?"not installed":currentVersion.ToString() }, { "Available", (newVersion == null) ? "n/a" : newVersion.ToString() } } ); bool update = false; if (currentVersion != null && ((newVersion > currentVersion) || ForceUpdate) && filter.IsMatch(c.Name)) { toUpdate.Add(c); update = true; } VerboseMessage("{0}: {1}=>{2}. Update={3}", c.Name, currentVersion, newVersion, update); } Context.Out.WriteLine(string.Empty); Context.Out.WriteLine(rs.ToTextTable(TableFormatOptions.Header)); if (toUpdate.Count == 0) { Context.Out.WriteLine("All packages are up to date!"); return(null); } try { VerboseMessage("--- Downloading components... --- "); foreach (var c in toUpdate) { c.Download(this); } VerboseMessage("--- Download completed. --- "); VerboseMessage(string.Empty); VerboseMessage("--- Starting update... ---"); Context.Execute(BeforeUpdate); try { foreach (var c in toUpdate) { c.DoUpdate(this); } } finally { Context.Execute(AfterUpdate); } VerboseMessage("--- Update completed. ---"); VerboseMessage(string.Empty); return(null); } finally { if (Cleanup) { VerboseMessage("--- Cleaning up... ---"); foreach (var c in toUpdate) { try { c.Cleanup(this); } catch { Context.WriteLine(OutputType.Error, string.Format("Cleanup failed for {0}...", c.Name)); } } VerboseMessage("--- Cleaning completed. ---"); VerboseMessage(string.Empty); } } }
/// Execute action public override object Execute() { DirectoryInfo d = new DirectoryInfo(Context.TransformStr(To, Transform)); d.Create(); if (Clean) { Delete del = new Delete { From = d.ToString(), Recursive = true, ReadOnly = true }; Context.Execute(del); } var zip = Context.Transform(From, Transform); var nf = new FileNameOnlyFilter(Syntax, Context.TransformStr(Filter,Transform)); var df = new StringFilter(Syntax, Context.TransformStr(DirectoryFilter,Transform)); var ret=extractZip(zip, d.FullName, nf, df); if (ReturnValue.IsBreak(ret)) return null; ReturnValue.RethrowIfException(ret); return ret; }