Skip to content

Commit 721bd61

Browse files
committed
Merge branch 'feature/appupdater' into 2.0.x
2 parents 8401e3a + bbbe5e4 commit 721bd61

File tree

11 files changed

+421
-29
lines changed

11 files changed

+421
-29
lines changed

SmartStoreNET.Tasks.Targets

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,8 @@
148148
<Delete Files="$(StageFolder)\Administration\packages.config; $(StageFolder)\packages.config"/>
149149

150150
<!-- copy \Media\uploaded\ folder to stage -->
151-
<RemoveDir Directories="$(StageFolder)\Media\uploaded\" />
152-
<Copy SourceFiles="@(UploadedImages)" DestinationFolder="$(StageFolder)\Media\uploaded\%(RecursiveDir)" SkipUnchangedFiles="true" OverwriteReadOnlyFiles="true" />
151+
<!--<RemoveDir Directories="$(StageFolder)\Media\uploaded\" />
152+
<Copy SourceFiles="@(UploadedImages)" DestinationFolder="$(StageFolder)\Media\uploaded\%(RecursiveDir)" SkipUnchangedFiles="true" OverwriteReadOnlyFiles="true" />-->
153153

154154
<!-- copy SQL Compact native binaries-->
155155
<Copy SourceFiles="@(SqlCe-Native-Binaries-x86)" DestinationFolder="$(StageFolder)\bin\x86\%(RecursiveDir)" />
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using SmartStore.Core.Domain.Logging;
6+
using SmartStore.Core.Domain.Customers;
7+
using System.Diagnostics;
8+
9+
namespace SmartStore.Core.Logging
10+
{
11+
public class TraceLogger : DisposableObject, ILogger
12+
{
13+
private readonly TraceSource _traceSource;
14+
15+
public TraceLogger() : this("SmartStore.log")
16+
{
17+
}
18+
19+
public TraceLogger(string fileName)
20+
{
21+
Guard.ArgumentNotEmpty(() => fileName);
22+
23+
_traceSource = new TraceSource("SmartStore");
24+
_traceSource.Switch = new SourceSwitch("LogSwitch", "Error");
25+
_traceSource.Listeners.Remove("Default");
26+
27+
var console = new ConsoleTraceListener(false);
28+
console.Filter = new EventTypeFilter(SourceLevels.All);
29+
console.Name = "console";
30+
31+
var textListener = new TextWriterTraceListener(fileName);
32+
textListener.Filter = new EventTypeFilter(SourceLevels.All);
33+
textListener.TraceOutputOptions = TraceOptions.DateTime;
34+
35+
_traceSource.Listeners.Add(console);
36+
_traceSource.Listeners.Add(textListener);
37+
38+
// Allow the trace source to send messages to
39+
// listeners for all event types. Currently only
40+
// error messages or higher go to the listeners.
41+
// Messages must get past the source switch to
42+
// get to the listeners, regardless of the settings
43+
// for the listeners.
44+
_traceSource.Switch.Level = SourceLevels.All;
45+
}
46+
47+
public bool IsEnabled(LogLevel level)
48+
{
49+
return true;
50+
}
51+
52+
public void DeleteLog(Log log)
53+
{
54+
// not supported
55+
}
56+
57+
public void ClearLog()
58+
{
59+
// not supported
60+
}
61+
62+
public void ClearLog(DateTime toUtc, LogLevel logLevel)
63+
{
64+
// not supported
65+
}
66+
67+
public IPagedList<Log> GetAllLogs(DateTime? fromUtc, DateTime? toUtc, string message, LogLevel? logLevel, int pageIndex, int pageSize, int minFrequency)
68+
{
69+
// not supported
70+
return null;
71+
}
72+
73+
public Log GetLogById(int logId)
74+
{
75+
// not supported
76+
return null;
77+
}
78+
79+
public IList<Log> GetLogByIds(int[] logIds)
80+
{
81+
// not supported
82+
return null;
83+
}
84+
85+
public Log InsertLog(LogContext context)
86+
{
87+
var type = LogLevelToEventType(context.LogLevel);
88+
_traceSource.TraceEvent(type, (int)type, "{0}: {1}".FormatCurrent(type.ToString().ToUpper(), context.ShortMessage));
89+
return null;
90+
}
91+
92+
public Log InsertLog(LogLevel logLevel, string shortMessage, string fullMessage = "", Customer customer = null)
93+
{
94+
var context = new LogContext()
95+
{
96+
LogLevel = logLevel,
97+
ShortMessage = shortMessage,
98+
FullMessage = fullMessage,
99+
Customer = customer
100+
};
101+
102+
return InsertLog(context);
103+
}
104+
105+
private TraceEventType LogLevelToEventType(LogLevel level)
106+
{
107+
switch (level)
108+
{
109+
case LogLevel.Debug:
110+
return TraceEventType.Verbose;
111+
case LogLevel.Error:
112+
return TraceEventType.Error;
113+
case LogLevel.Fatal:
114+
return TraceEventType.Critical;
115+
case LogLevel.Warning:
116+
return TraceEventType.Warning;
117+
default:
118+
return TraceEventType.Information;
119+
}
120+
}
121+
122+
protected override void OnDispose(bool disposing)
123+
{
124+
_traceSource.Flush();
125+
_traceSource.Close();
126+
}
127+
}
128+
}

src/Libraries/SmartStore.Core/Packaging/FolderUpdater.cs

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33
using System.Linq;
44
using System.IO;
55
using SmartStore.Core.Logging;
6+
using SmartStore.Utilities;
67

78
namespace SmartStore.Core.Packaging
89
{
910

1011
public interface IFolderUpdater
1112
{
12-
void Backup(DirectoryInfo existingFolder, DirectoryInfo backupfolder);
13+
void Backup(DirectoryInfo existingFolder, DirectoryInfo backupfolder, params string[] ignorePatterns);
1314
void Restore(DirectoryInfo backupfolder, DirectoryInfo existingFolder);
1415
}
1516

@@ -28,14 +29,15 @@ public FolderUpdater(ILogger logger)
2829
_logger = logger;
2930
}
3031

31-
public void Backup(DirectoryInfo existingFolder, DirectoryInfo backupfolder)
32+
public void Backup(DirectoryInfo existingFolder, DirectoryInfo backupfolder, params string[] ignorePatterns)
3233
{
33-
CopyFolder(GetFolderContent(existingFolder), backupfolder);
34+
var ignores = ignorePatterns.Select(x => new Wildcard(x));
35+
CopyFolder(GetFolderContent(existingFolder, ignores), backupfolder);
3436
}
3537

3638
public void Restore(DirectoryInfo backupfolder, DirectoryInfo existingFolder)
3739
{
38-
CopyFolder(GetFolderContent(backupfolder), existingFolder);
40+
CopyFolder(GetFolderContent(backupfolder, Enumerable.Empty<Wildcard>()), existingFolder);
3941
}
4042

4143
private void CopyFolder(FolderContent source, DirectoryInfo dest)
@@ -74,26 +76,34 @@ private void CopyFile(DirectoryInfo sourceFolder, string fileName, DirectoryInfo
7476
File.Copy(sourceFile.FullName, destFile.FullName, true);
7577
}
7678

77-
private FolderContent GetFolderContent(DirectoryInfo folder)
79+
private FolderContent GetFolderContent(DirectoryInfo folder, IEnumerable<Wildcard> ignores)
7880
{
7981
var files = new List<string>();
80-
GetFolderContent(folder, "", files);
82+
GetFolderContent(folder, "", files, ignores);
8183
return new FolderContent { Folder = folder, Files = files };
8284
}
8385

84-
private void GetFolderContent(DirectoryInfo folder, string prefix, List<string> files)
86+
private void GetFolderContent(DirectoryInfo folder, string prefix, List<string> files, IEnumerable<Wildcard> ignores)
8587
{
8688
if (!folder.Exists)
8789
return;
8890

91+
if (ignores.Any(w => w.IsMatch(prefix)))
92+
return;
93+
8994
foreach (var file in folder.GetFiles())
9095
{
91-
files.Add(Path.Combine(prefix, file.Name));
96+
var path = Path.Combine(prefix, file.Name);
97+
var ignore = ignores.Any(w => w.IsMatch(path));
98+
if (!ignore)
99+
{
100+
files.Add(path);
101+
}
92102
}
93103

94104
foreach (var child in folder.GetDirectories())
95105
{
96-
GetFolderContent(child, Path.Combine(prefix, child.Name), files);
106+
GetFolderContent(child, Path.Combine(prefix, child.Name), files, ignores);
97107
}
98108
}
99109

src/Libraries/SmartStore.Core/Packaging/NuGet/NugetLogger.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ public void Log(MessageLevel level, string message, params object[] args)
1919
switch (level)
2020
{
2121
case MessageLevel.Debug:
22+
//_logger.Debug(String.Format(message, args));
23+
break;
24+
case MessageLevel.Error:
25+
_logger.Error(String.Format(message, args));
2226
break;
2327
case MessageLevel.Info:
2428
_logger.Information(String.Format(message, args));
@@ -31,7 +35,7 @@ public void Log(MessageLevel level, string message, params object[] args)
3135

3236
public FileConflictResolution ResolveFileConflict(string message)
3337
{
34-
return FileConflictResolution.Ignore;
38+
return FileConflictResolution.OverwriteAll;
3539
}
3640
}
3741
}

src/Libraries/SmartStore.Core/Packaging/PackageInstaller.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,14 @@ public PackageInfo Install(Stream packageStream, string location, string applica
7878
return InstallPackage(package, packageRepository, location, applicationPath);
7979
}
8080

81+
/// <summary>
82+
/// Tries to install the package
83+
/// </summary>
84+
/// <param name="package">The package to install</param>
85+
/// <param name="packageRepository">The repository</param>
86+
/// <param name="location">The virtual location of the package file, usually <c>~/App_Data</c></param>
87+
/// <param name="applicationPath">The virtual app root path, usually <c>~/</c></param>
88+
/// <returns>An instance of <see cref="PackageInfo"/> type</returns>
8189
protected PackageInfo InstallPackage(IPackage package, IPackageRepository packageRepository, string location, string applicationPath)
8290
{
8391

@@ -145,7 +153,6 @@ protected PackageInfo InstallPackage(IPackage package, IPackageRepository packag
145153
/// <returns>The package information.</returns>
146154
protected PackageInfo ExecuteInstall(IPackage package, IPackageRepository packageRepository, string sourceLocation, string targetPath)
147155
{
148-
// this logger is used to render NuGet's log on the notifier
149156
var logger = new NugetLogger(_logger);
150157

151158
var project = new FileBasedProjectSystem(targetPath) { Logger = logger };

0 commit comments

Comments
 (0)