Skip to content

Commit a6aa72d

Browse files
committed
Adding debug and trace level logging. Adding deleting the ScriptLibraries file on -Install to allow developers to force libraries to be recomposed
1 parent 309ab77 commit a6aa72d

10 files changed

Lines changed: 51 additions & 28 deletions

File tree

ScriptCs.sln

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
33
# Visual Studio 2013
4-
VisualStudioVersion = 12.0.30501.0
4+
VisualStudioVersion = 12.0.31101.0
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ScriptCs", "src\ScriptCs\ScriptCs.csproj", "{25080671-1A80-4041-B9C7-260578FF4849}"
77
EndProject

common/CommonVersionInfo.cs

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,9 @@
1-
//------------------------------------------------------------------------------
2-
// <auto-generated>
3-
// This code was generated by a tool.
4-
// Runtime Version:4.0.30319.34011
5-
//
6-
// Changes to this file may cause incorrect behavior and will be lost if
7-
// the code is regenerated.
8-
// </auto-generated>
9-
//------------------------------------------------------------------------------
10-
11-
using System;
121
using System.Reflection;
132

14-
[assembly: System.Reflection.AssemblyVersionAttribute("0.13.0")]
15-
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("0.13.2")]
16-
17-
// Generated by the MSBuild WriteCodeFragment class on 2/24/2015 8:00:50 PM.
3+
/**
4+
* Do not manually edit this file. The build script will generate and insert the proper version numbers based on the
5+
* contents of 'build\ScriptCs.Version.props'.
6+
**/
187

8+
[assembly: AssemblyVersion("0.0.0")]
9+
[assembly: AssemblyInformationalVersion("0.0.0")]

src/ScriptCs.Core/ScriptLibraryComposer.cs

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Linq;
44
using System.Text;
55
using System.Threading.Tasks;
6+
using Common.Logging;
67
using ScriptCs.Contracts;
78
using System.IO;
89

@@ -14,26 +15,34 @@ public class ScriptLibraryComposer : IScriptLibraryComposer
1415
private readonly IFilePreProcessor _preProcessor;
1516
private readonly IPackageContainer _packageContainer;
1617
private readonly IPackageAssemblyResolver _packageAssemblyResolver;
18+
private readonly ILog _logger;
1719

18-
public ScriptLibraryComposer(IFileSystem fileSystem, IFilePreProcessor preProcessor, IPackageContainer packageContainer, IPackageAssemblyResolver packageAssemblyResolver)
20+
public ScriptLibraryComposer(IFileSystem fileSystem, IFilePreProcessor preProcessor, IPackageContainer packageContainer, IPackageAssemblyResolver packageAssemblyResolver, ILog logger)
1921
{
2022
Guard.AgainstNullArgument("fileSystem", fileSystem);
2123
Guard.AgainstNullArgument("preProcessor", preProcessor);
2224
Guard.AgainstNullArgument("packageContainer", packageContainer);
2325
Guard.AgainstNullArgument("packageAssemblyResolver", packageAssemblyResolver);
26+
Guard.AgainstNullArgument("logger", logger);
2427

2528
_fileSystem = fileSystem;
2629
_preProcessor = preProcessor;
2730
_packageContainer = packageContainer;
2831
_packageAssemblyResolver = packageAssemblyResolver;
32+
_logger = logger;
2933
}
3034

31-
internal static string GetMainScript(IPackageObject package)
35+
internal string GetMainScript(IPackageObject package)
3236
{
3337
var script =
3438
package.GetContentFiles()
3539
.SingleOrDefault(f => f.EndsWith("main.csx", StringComparison.InvariantCultureIgnoreCase));
36-
40+
41+
if (script != null)
42+
{
43+
_logger.DebugFormat("Found main script: {0}", script);
44+
}
45+
3746
return script;
3847
}
3948

@@ -81,17 +90,25 @@ public void Compose(StringBuilder builder = null)
8190
protected internal virtual void ProcessPackage(string packagesPath, IPackageReference reference, StringBuilder builder, List<string> references,
8291
List<string> namespaces)
8392
{
93+
_logger.DebugFormat("Finding package:{0}", reference.PackageId);
8494
var package = _packageContainer.FindPackage(packagesPath, reference);
95+
_logger.Debug("Package found");
8596
var script = GetMainScript(package);
8697
if (script != null)
8798
{
8899
script = Path.Combine(packagesPath, string.Format("{0}.{1}", package.Id, package.TextVersion), script);
100+
_logger.Debug("Pre-processing script");
89101
var result = _preProcessor.ProcessFile(script);
90102
var fileWithoutExtension = Path.GetFileNameWithoutExtension(script);
91103
var classname = fileWithoutExtension.Substring(0, fileWithoutExtension.Length - 4);
92-
builder.AppendFormat("public class {0} : ScriptCs.ScriptLibraryWrapper {{{1}", classname, Environment.NewLine);
93-
builder.AppendLine(result.Code);
94-
builder.Append("}");
104+
_logger.DebugFormat("Created Script Libary class: {0}", classname);
105+
var classBuilder = new StringBuilder();
106+
classBuilder.AppendFormat("public class {0} : ScriptCs.ScriptLibraryWrapper {{{1}", classname, Environment.NewLine);
107+
classBuilder.AppendLine(result.Code);
108+
classBuilder.AppendLine("}");
109+
var classDefinition = classBuilder.ToString();
110+
_logger.TraceFormat("Class definition:{0}{0}{1}", Environment.NewLine, classDefinition);
111+
builder.Append(classDefinition);
95112
references.AddRange(result.References);
96113
namespaces.AddRange(result.Namespaces);
97114
}

src/ScriptCs.Hosting/InitializationServices.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,6 @@ protected override IContainer CreateContainer()
4141

4242
RegisterOverrideOrDefault<IAppDomainAssemblyResolver>(builder, b => b.RegisterType<AppDomainAssemblyResolver>().As<IAppDomainAssemblyResolver>().SingleInstance());
4343

44-
RegisterOverrideOrDefault<IScriptLibraryComposer>(builder, b => b.RegisterType<ScriptLibraryComposer>().As<IScriptLibraryComposer>().SingleInstance());
45-
4644
RegisterOverrideOrDefault<IFilePreProcessor>(builder, b => b.RegisterType<FilePreProcessor>().As<IFilePreProcessor>().SingleInstance());
4745

4846
return builder.Build();

src/ScriptCs/Command/CleanCommand.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ internal class CleanCommand : ICleanCommand
1313

1414
public CleanCommand(string scriptName, IFileSystem fileSystem, ILog logger)
1515
{
16-
Guard.AgainstNullArgument("fileSystem", fileSystem);
1716
Guard.AgainstNullArgumentProperty("fileSystem", "PackagesFolder", fileSystem.PackagesFolder);
1817
Guard.AgainstNullArgumentProperty("fileSystem", "DllCacheFolder", fileSystem.DllCacheFolder);
1918

src/ScriptCs/Command/CommandFactory.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ public ICommand CreateCommand(ScriptCsArgs args, string[] scriptArgs)
9797
_fileSystem,
9898
_initializationServices.GetPackageAssemblyResolver(),
9999
_initializationServices.GetPackageInstaller(),
100+
scriptServices.ScriptLibraryComposer,
100101
_initializationServices.Logger);
101102

102103
var executeCommand = new DeferredCreationCommand<IScriptCommand>(() =>
@@ -152,6 +153,7 @@ public ICommand CreateCommand(ScriptCsArgs args, string[] scriptArgs)
152153
_fileSystem,
153154
packageAssemblyResolver,
154155
_initializationServices.GetPackageInstaller(),
156+
scriptServices.ScriptLibraryComposer,
155157
_initializationServices.Logger);
156158

157159
var saveCommand = new SaveCommand(packageAssemblyResolver, _fileSystem, _initializationServices.Logger);

src/ScriptCs/Command/ICommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,5 @@ public interface ICrossAppDomainCommand
5959
public interface ICrossAppDomainScriptCommand : ICrossAppDomainCommand
6060
{
6161
string[] ScriptArgs { get; }
62-
}
62+
}
6363
}

src/ScriptCs/Command/InstallCommand.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ internal class InstallCommand : IInstallCommand
1515
private readonly IFileSystem _fileSystem;
1616
private readonly IPackageAssemblyResolver _packageAssemblyResolver;
1717
private readonly IPackageInstaller _packageInstaller;
18+
private readonly IScriptLibraryComposer _composer;
1819
private readonly ILog _logger;
1920

2021
public InstallCommand(
@@ -24,6 +25,7 @@ public InstallCommand(
2425
IFileSystem fileSystem,
2526
IPackageAssemblyResolver packageAssemblyResolver,
2627
IPackageInstaller packageInstaller,
28+
IScriptLibraryComposer composer,
2729
ILog logger)
2830
{
2931
_name = name;
@@ -32,12 +34,22 @@ public InstallCommand(
3234
_fileSystem = fileSystem;
3335
_packageAssemblyResolver = packageAssemblyResolver;
3436
_packageInstaller = packageInstaller;
37+
_composer = composer;
3538
_logger = logger;
3639
}
3740

3841
public CommandResult Execute()
3942
{
4043
_logger.Info("Installing packages...");
44+
45+
var packagesFolder = Path.Combine(_fileSystem.CurrentDirectory, _fileSystem.PackagesFolder);
46+
var scriptLibrariesFile = Path.Combine(packagesFolder, _composer.ScriptLibrariesFile);
47+
48+
if (_fileSystem.DirectoryExists(packagesFolder))
49+
{
50+
_logger.DebugFormat("Deleting: {0}", scriptLibrariesFile);
51+
}
52+
4153
var packages = GetPackages(_fileSystem.CurrentDirectory);
4254
try
4355
{

src/ScriptCs/ScriptCsArgs.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ public ScriptCsArgs()
5656
[ArgDescription("Allows installation of packages' prelease versions")]
5757
public bool AllowPreRelease { get; set; }
5858

59+
[ArgShortcut("rsl")]
60+
[ArgDescription("Refresh the cache of script libraries")]
61+
public bool RefreshScriptLibraries { get; set; }
62+
5963
[ArgDescription("Outputs version information")]
6064
public bool Version { get; set; }
6165

test/ScriptCs.Core.Tests/ScriptLibraryComposerTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ public class ScriptLibraryComposerTests
1818
public class TheGetMainScriptMethod
1919
{
2020
[Theory, ScriptCsAutoData]
21-
public void ShouldReturnTheScript(Mock<IPackageObject> package)
21+
public void ShouldReturnTheScript(Mock<IPackageObject> package, ScriptLibraryComposer composer)
2222
{
2323
var files = new[] {"file.csx", "fileMain.csx", "file"};
2424
package.Setup(p => p.GetContentFiles()).Returns(files);
25-
var script = ScriptLibraryComposer.GetMainScript(package.Object);
25+
var script = composer.GetMainScript(package.Object);
2626
script.ShouldEqual("fileMain.csx");
2727
}
2828
}

0 commit comments

Comments
 (0)