private ProjectInfo GetProject(CakeScript cakeScript, string filePath) { var name = Path.GetFileName(filePath); if (!File.Exists(cakeScript.Host.AssemblyPath)) { throw new FileNotFoundException($"Cake is not installed. Path {cakeScript.Host.AssemblyPath} does not exist."); } var hostObjectType = Type.GetType(cakeScript.Host.TypeName, a => _assemblyLoader.LoadFrom(cakeScript.Host.AssemblyPath, dontLockAssemblyOnDisk: true), null, false); if (hostObjectType == null) { throw new InvalidOperationException($"Could not get host object type: {cakeScript.Host.TypeName}."); } return(ProjectInfo.Create( id: ProjectId.CreateNewId(Guid.NewGuid().ToString()), version: VersionStamp.Create(), name: name, filePath: filePath, assemblyName: $"{name}.dll", language: LanguageNames.CSharp, compilationOptions: cakeScript.Usings == null ? _compilationOptions.Value : _compilationOptions.Value.WithUsings(cakeScript.Usings), parseOptions: new CSharpParseOptions(LanguageVersion.Default, DocumentationMode.Parse, SourceCodeKind.Script), metadataReferences: GetMetadataReferences(cakeScript.References), // TODO: projectReferences? isSubmission: true, hostObjectType: hostObjectType)); }
public static void Serialize(BinaryWriter writer, CakeScript script) { if (writer == null) { throw new ArgumentNullException(nameof(writer)); } if (script == null) { throw new ArgumentNullException(nameof(script)); } // Type and Version writer.Write(Constants.CakeScript.TypeAndVersion); // Host object writer.WriteString(script.Host.TypeName); writer.WriteString(script.Host.AssemblyPath); // Source writer.WriteString(script.Source); // References writer.Write(script.References.Count); foreach (var reference in script.References) { writer.WriteString(reference); } // Usings writer.Write(script.Usings.Count); foreach (var @using in script.Usings) { writer.WriteString(@using); } }
// Start is called before the first frame update void Start() { distance_tow = Vector3.Distance(enemy.transform.position, target); ani = GetComponent <Animator>(); cakeObj = GameObject.Find("cake"); CakeSc = cakeObj.GetComponent <CakeScript>(); ResetTimer(); }
// Start is called before the first frame update void Start() { WaveText = GameObject.Find("WaveText").GetComponent <Text>(); Restart = GameObject.Find("Restart").GetComponent <Text>(); WaveText.enabled = false; Restart.enabled = false; cakeObj = GameObject.Find("cake"); CakeSc = cakeObj.GetComponent <CakeScript>(); enemyNum = Mathf.Clamp(0, 0, 12); //startcoRutine("wait"); }
public static void Serialize(BinaryWriter writer, CakeScript script, byte version) { if (writer == null) { throw new ArgumentNullException(nameof(writer)); } if (script == null) { throw new ArgumentNullException(nameof(script)); } if (version > Constants.Protocol.Latest) { throw new ArgumentOutOfRangeException(nameof(version)); } // Type and Version writer.Write(Constants.CakeScript.WithVersion(version)); // Host object writer.WriteString(script.Host.TypeName); writer.WriteString(script.Host.AssemblyPath); // Source if (version == Constants.Protocol.V2) { // V2 compress source var bytes = Zip(script.Source); writer.Write(bytes.Length); writer.Write(bytes); } else { // V1 source as string writer.Write(script.Source); } // References writer.Write(script.References.Count); foreach (var reference in script.References) { writer.WriteString(reference); } // Usings writer.Write(script.Usings.Count); foreach (var @using in script.Usings) { writer.WriteString(@using); } }
public void ShouldCallTheServer() { // Given var expected = new CakeScript { Source = "Test" }; _fixture.ServerCallback = change => expected; // When var actual = _fixture.Client.Generate(new FileChange()); // Then Assert.Equal(expected.Source, actual.Source); }
public static CakeScript Deserialize(BinaryReader reader) { if (reader == null) { throw new ArgumentNullException(nameof(reader)); } // TypeId and Version var typeAndVersion = reader.ReadInt16(); if (typeAndVersion != Constants.CakeScript.TypeAndVersion) { throw new InvalidOperationException($"Unsupported type or version: {typeAndVersion}"); } var cakeScript = new CakeScript(); // Host object cakeScript.Host.TypeName = reader.ReadString(); cakeScript.Host.AssemblyPath = reader.ReadString(); // Source var bytesLength = reader.ReadInt32(); var bytes = reader.ReadBytes(bytesLength); cakeScript.Source = Unzip(bytes); // References var referencesLength = reader.ReadInt32(); for (var i = 0; i < referencesLength; i++) { cakeScript.References.Add(reader.ReadString()); } // Usings var usingsLength = reader.ReadInt32(); for (var i = 0; i < usingsLength; i++) { cakeScript.Usings.Add(reader.ReadString()); } return(cakeScript); }
public CakeScript CreateCakeScript(string source, int referencesLength, int usingsLength) { var cakeScript = new CakeScript { Source = source }; for (var i = 0; i < referencesLength; i++) { cakeScript.References.Add(Guid.NewGuid().ToString()); } for (var i = 0; i < usingsLength; i++) { cakeScript.Usings.Add(Guid.NewGuid().ToString()); } return(cakeScript); }
private ProjectInfo GetProject(CakeScript cakeScript, string filePath) { var name = Path.GetFileName(filePath); if (!File.Exists(cakeScript.Host.AssemblyPath)) { throw new FileNotFoundException($"Cake is not installed. Path {cakeScript.Host.AssemblyPath} does not exist."); } var hostObjectType = Type.GetType(cakeScript.Host.TypeName, a => _assemblyLoader.LoadFrom(cakeScript.Host.AssemblyPath, dontLockAssemblyOnDisk: true), null, false); if (hostObjectType == null) { throw new InvalidOperationException($"Could not get host object type: {cakeScript.Host.TypeName}."); } var projectId = ProjectId.CreateNewId(Guid.NewGuid().ToString()); var analyzerConfigDocuments = _workspace.EditorConfigEnabled ? EditorConfigFinder .GetEditorConfigPaths(filePath) .Select(path => DocumentInfo.Create( DocumentId.CreateNewId(projectId), name: ".editorconfig", loader: new FileTextLoader(path, Encoding.UTF8), filePath: path)) .ToImmutableArray() : ImmutableArray <DocumentInfo> .Empty; return(ProjectInfo.Create( id: projectId, version: VersionStamp.Create(), name: name, filePath: filePath, assemblyName: $"{name}.dll", language: LanguageNames.CSharp, compilationOptions: cakeScript.Usings == null ? _compilationOptions.Value : _compilationOptions.Value.WithUsings(cakeScript.Usings), parseOptions: new CSharpParseOptions(LanguageVersion.Latest, DocumentationMode.Parse, SourceCodeKind.Script), metadataReferences: GetMetadataReferences(cakeScript.References), // TODO: projectReferences? isSubmission: true, hostObjectType: hostObjectType) .WithAnalyzerConfigDocuments(analyzerConfigDocuments)); }
private ProjectInfo GetProject(CakeScript cakeScript, string filePath) { var name = Path.GetFileName(filePath); var assembly = _assemblyLoader.LoadFrom(cakeScript.Host.AssemblyPath); var hostObjectType = Type.GetType(cakeScript.Host.TypeName, a => assembly, null, true); return(ProjectInfo.Create( id: ProjectId.CreateNewId(Guid.NewGuid().ToString()), version: VersionStamp.Create(), name: name, filePath: filePath, assemblyName: $"{name}.dll", language: LanguageNames.CSharp, compilationOptions: cakeScript.Usings == null ? _compilationOptions.Value : _compilationOptions.Value.WithUsings(cakeScript.Usings), parseOptions: new CSharpParseOptions(LanguageVersion.Default, DocumentationMode.Parse, SourceCodeKind.Script), metadataReferences: cakeScript.References.Select(reference => MetadataReference.CreateFromFile(reference, documentation: GetDocumentationProvider(reference))), // TODO: projectReferences? isSubmission: true, hostObjectType: hostObjectType)); }
public CakeScript Generate(FileChange fileChange) { if (fileChange == null) { throw new ArgumentNullException(nameof(fileChange)); } // Make the script path absolute. var scriptPath = new FilePath(fileChange.FileName).MakeAbsolute(_environment); // Prepare the file changes _log.Verbose("Handling file change..."); HandleFileChange(scriptPath, fileChange); // Analyze the script file. _log.Verbose("Analyzing build script..."); var result = _analyzer.Analyze(scriptPath); // Install addins. foreach (var addin in result.Addins) { try { _log.Verbose("Installing addins..."); var addinReferences = _processor.InstallAddins(new[] { addin }, _addinRoot); foreach (var addinReference in addinReferences) { result.References.Add(addinReference.FullPath); } } catch (Exception e) { // Log and continue if it fails _log.Error(e); } } // Load all references. _log.Verbose("Adding references..."); var references = new HashSet <FilePath>(_defaultReferences.Value); references.AddRange(result.References.Select(r => new FilePath(r))); // Find aliases _log.Verbose("Finding aliases..."); var aliases = new List <CakeScriptAlias>(); foreach (var reference in references) { if (_fileSystem.Exist(reference)) { aliases.AddRange(_aliasFinder.FindAliases(reference)); } } // Import all namespaces. _log.Verbose("Importing namespaces..."); var namespaces = new HashSet <string>(result.Namespaces, StringComparer.Ordinal); namespaces.AddRange(GetDefaultNamespaces()); namespaces.AddRange(aliases.SelectMany(alias => alias.Namespaces)); // Create the response. // ReSharper disable once UseObjectOrCollectionInitializer _log.Verbose("Creating response..."); var response = new CakeScript(); response.Host.TypeName = _hostObject.TypeName; response.Host.AssemblyPath = _hostObject.AssemblyPath; response.Source = string.Join("\n", result.Defines) + string.Join("\n", result.UsingAliases) + string.Join("\n", result.UsingStaticDirectives) + GenerateSource(aliases) + string.Join("\n", result.Lines); response.Usings.AddRange(namespaces); response.References.AddRange(references.Select(r => r.FullPath)); // Return the response. return(response); }