diff --git a/build/Targets/RestoreSources.props b/build/Targets/RestoreSources.props index 0043818b3..30d427524 100644 --- a/build/Targets/RestoreSources.props +++ b/build/Targets/RestoreSources.props @@ -8,8 +8,7 @@ https://www.myget.org/F/cosmos/api/v3/index.json; https://ci.appveyor.com/nuget/cosmos-common; https://ci.appveyor.com/nuget/il2cpu; - https://ci.appveyor.com/nuget/xsharp; - https://dotnet.myget.org/F/roslyn-tools/api/v3/index.json + https://ci.appveyor.com/nuget/xsharp $(RestoreSources);$(DefaultPackageOutputPath) diff --git a/readme-IT.md b/readme-IT.md new file mode 100644 index 000000000..eec341039 --- /dev/null +++ b/readme-IT.md @@ -0,0 +1,9 @@ +# Cosmos + +[![Build status](https://ci.appveyor.com/api/projects/status/kust7g5dlnykhkaf/branch/master?svg=true)](https://ci.appveyor.com/project/CosmosOS/cosmos/branch/master) + +Cosmos รจ un "kit di costruzione" per SO. Fai il tuo sistema operativo con linguaggi gestiti come C#, VB.NET, e altri! + +Per avere informazioni su come usare Cosmos, visita il [sito web di Cosmos](http://www.gocosmos.org). + +Per documentazione e informazioni tecniche, visita la [documentazione di Cosmos](https://cosmosos.github.io). diff --git a/source/Cosmos.Build.Builder/Dependencies/InnoSetupDependency.cs b/source/Cosmos.Build.Builder/Dependencies/InnoSetupDependency.cs index 806b605df..3580085af 100644 --- a/source/Cosmos.Build.Builder/Dependencies/InnoSetupDependency.cs +++ b/source/Cosmos.Build.Builder/Dependencies/InnoSetupDependency.cs @@ -14,6 +14,12 @@ namespace Cosmos.Build.Builder.Dependencies private const string InnoSetupInstallerUrl = "http://www.jrsoftware.org/download.php/is.exe"; public string Name => "Inno Setup"; + public bool ShouldInstallByDefault => true; + + public string OtherDependencysThatAreMissing + { + get { return Name; } + } private readonly IInnoSetupService _innoSetupService; diff --git a/source/Cosmos.Build.Builder/Dependencies/ReposDependency.cs b/source/Cosmos.Build.Builder/Dependencies/ReposDependency.cs index 44bfa9573..e2624dad0 100644 --- a/source/Cosmos.Build.Builder/Dependencies/ReposDependency.cs +++ b/source/Cosmos.Build.Builder/Dependencies/ReposDependency.cs @@ -13,6 +13,28 @@ namespace Cosmos.Build.Builder.Dependencies internal class ReposDependency : IDependency { public string Name => "Repos: IL2CPU, XSharp and Common"; + public bool ShouldInstallByDefault => true; + + public string OtherDependencysThatAreMissing + { + get + { + string result = ""; + if (!Directory.Exists(Path.GetFullPath(Path.Combine(_cosmosDir, "..", "IL2CPU")))) + { + result += "IL2CPU Repo, "; + } + if (!Directory.Exists(Path.GetFullPath(Path.Combine(_cosmosDir, "..", "XSharp")))) + { + result += "XSharp Repo, "; + } + if (!Directory.Exists(Path.GetFullPath(Path.Combine(_cosmosDir, "..", "Common")))) + { + result += "Common Repo"; + } + return result; + } + } private readonly string _cosmosDir; private readonly IEnumerable _repos; diff --git a/source/Cosmos.Build.Builder/Dependencies/VisualStudioDependency.cs b/source/Cosmos.Build.Builder/Dependencies/VisualStudioDependency.cs index abdfa7968..f9f6304b7 100644 --- a/source/Cosmos.Build.Builder/Dependencies/VisualStudioDependency.cs +++ b/source/Cosmos.Build.Builder/Dependencies/VisualStudioDependency.cs @@ -9,11 +9,16 @@ namespace Cosmos.Build.Builder.Dependencies internal class VisualStudioDependency : IDependency { private static readonly Version MinimumVsVersion = new Version(15, 9); - + public bool ShouldInstallByDefault => true; public string Name => $"Visual Studio {MinimumVsVersion.Major}.{MinimumVsVersion.Minor}+"; + public string OtherDependencysThatAreMissing + { + get { return Name+"+"; } + } private readonly ISetupInstance2 _visualStudioInstance; + public VisualStudioDependency(ISetupInstance2 visualStudioInstance) { _visualStudioInstance = visualStudioInstance; diff --git a/source/Cosmos.Build.Builder/Dependencies/VisualStudioWorkloadsDependency.cs b/source/Cosmos.Build.Builder/Dependencies/VisualStudioWorkloadsDependency.cs index 42a580674..1b1fb439b 100644 --- a/source/Cosmos.Build.Builder/Dependencies/VisualStudioWorkloadsDependency.cs +++ b/source/Cosmos.Build.Builder/Dependencies/VisualStudioWorkloadsDependency.cs @@ -17,9 +17,33 @@ namespace Cosmos.Build.Builder.Dependencies NetCoreToolsWorkload, VisualStudioExtensionsWorkload }; - + public bool ShouldInstallByDefault => false; public string Name => "Visual Studio Workloads"; + public string OtherDependencysThatAreMissing + { + get + { + var missingPackages = ((string[])RequiredPackages.Clone()).ToList(); + foreach (var item in RequiredPackages) + { + if (IsPackageInstalled(item)) + { + missingPackages.Remove(item); + } + } + + //Add the missing packages together + string missingPackages_proper = ""; + foreach (var item in missingPackages) + { + missingPackages_proper += GetProperName(item) + ", "; + } + + return missingPackages_proper; + } + } + private readonly ISetupInstance2 _visualStudioInstance; public VisualStudioWorkloadsDependency(ISetupInstance2 visualStudioInstance) @@ -32,7 +56,19 @@ namespace Cosmos.Build.Builder.Dependencies var installedPackages = _visualStudioInstance.GetPackages(); return Task.FromResult(RequiredPackages.All(p => IsPackageInstalled(p))); } + private string GetProperName(string packageId) + { + if (packageId == NetCoreToolsWorkload) + { + return ".NET Core cross-platform development"; + } + else if (packageId == VisualStudioExtensionsWorkload) + { + return "Visual Studio Extension development"; + } + return "Unknown Workload: " + packageId; + } public async Task InstallAsync(CancellationToken cancellationToken) { var vsInstallerPath = Environment.ExpandEnvironmentVariables( diff --git a/source/Cosmos.Build.Builder/IDependency.cs b/source/Cosmos.Build.Builder/IDependency.cs index e881c1a46..3d6549b84 100644 --- a/source/Cosmos.Build.Builder/IDependency.cs +++ b/source/Cosmos.Build.Builder/IDependency.cs @@ -6,7 +6,9 @@ namespace Cosmos.Build.Builder internal interface IDependency { string Name { get; } + bool ShouldInstallByDefault { get; } + string OtherDependencysThatAreMissing { get; } Task IsInstalledAsync(CancellationToken cancellationToken); Task InstallAsync(CancellationToken cancellationToken); } diff --git a/source/Cosmos.Build.Builder/ViewModels/MainWindowViewModel.cs b/source/Cosmos.Build.Builder/ViewModels/MainWindowViewModel.cs index 05836967d..fd4d6fd82 100644 --- a/source/Cosmos.Build.Builder/ViewModels/MainWindowViewModel.cs +++ b/source/Cosmos.Build.Builder/ViewModels/MainWindowViewModel.cs @@ -107,17 +107,29 @@ namespace Cosmos.Build.Builder.ViewModels } else { - _logger.LogMessage($"{dependency.Name} not found."); + _logger.LogMessage($"{dependency.Name} not found. Install {dependency.OtherDependencysThatAreMissing}"); - using (var viewModel = new DependencyInstallationDialogViewModel(dependency)) + if (dependency.ShouldInstallByDefault) { - _dependencyInstallationDialogService.ShowDialog(viewModel); - - if (!viewModel.InstallationSucceeded) + using (var viewModel = new DependencyInstallationDialogViewModel(dependency)) { - throw new Exception($"Dependency installation failed! Dependency name: {dependency.Name}"); + _dependencyInstallationDialogService.ShowDialog(viewModel); + + if (!viewModel.InstallationSucceeded) + { + throw new Exception($"Dependency installation failed! Dependency name: {dependency.Name}"); + } } } + else + { + MessageBox.Show($"{dependency.Name} is not installed. Please install {dependency.OtherDependencysThatAreMissing}"); + _logger.SetError(); + _logger.NewSection("Error"); + _logger.LogMessage($"{dependency.Name} not found."); + _logger.SetError(); + return; + } } }