diff --git a/.gitignore b/.gitignore index 37337f7c..22afc426 100644 --- a/.gitignore +++ b/.gitignore @@ -255,3 +255,4 @@ Tests/**/TestResult*.xml /Tests/A1Test/ /Tests/**/Logs/ /Tests/CK.Env.Tests/UniverseZips/ +/CodeCakeBuilder/MemoryKey.*.txt diff --git a/CK.Artifact.Model/CK.Artifact.Model.csproj b/CK.Artifact.Model/CK.Artifact.Model.csproj index bd20e287..46811b02 100644 --- a/CK.Artifact.Model/CK.Artifact.Model.csproj +++ b/CK.Artifact.Model/CK.Artifact.Model.csproj @@ -8,7 +8,7 @@ - + diff --git a/CK.Env.Artifact.NuGet/CK.Env.Artifact.NuGet.csproj b/CK.Env.Artifact.NuGet/CK.Env.Artifact.NuGet.csproj index 92a79aaa..a552c6a0 100644 --- a/CK.Env.Artifact.NuGet/CK.Env.Artifact.NuGet.csproj +++ b/CK.Env.Artifact.NuGet/CK.Env.Artifact.NuGet.csproj @@ -7,8 +7,8 @@ - - + + diff --git a/CK.Env.Command/CK.Env.Command.csproj b/CK.Env.Command/CK.Env.Command.csproj index 239bb8ca..34f150e9 100644 --- a/CK.Env.Command/CK.Env.Command.csproj +++ b/CK.Env.Command/CK.Env.Command.csproj @@ -7,7 +7,7 @@ - + diff --git a/CK.Env.DependencyModel/CK.Env.DependencyModel.csproj b/CK.Env.DependencyModel/CK.Env.DependencyModel.csproj index 51238b5d..392abfbb 100644 --- a/CK.Env.DependencyModel/CK.Env.DependencyModel.csproj +++ b/CK.Env.DependencyModel/CK.Env.DependencyModel.csproj @@ -7,7 +7,7 @@ - + diff --git a/CK.Env.Sys/CK.Env.Sys.csproj b/CK.Env.Sys/CK.Env.Sys.csproj index 52d59ef6..f18e689f 100644 --- a/CK.Env.Sys/CK.Env.Sys.csproj +++ b/CK.Env.Sys/CK.Env.Sys.csproj @@ -7,7 +7,7 @@ - + diff --git a/CK.Xml.Linq.Extension/CK.Xml.Linq.Extension.csproj b/CK.Xml.Linq.Extension/CK.Xml.Linq.Extension.csproj index 239bb8ca..34f150e9 100644 --- a/CK.Xml.Linq.Extension/CK.Xml.Linq.Extension.csproj +++ b/CK.Xml.Linq.Extension/CK.Xml.Linq.Extension.csproj @@ -7,7 +7,7 @@ - + diff --git a/CKli/Program.cs b/CKli/Program.cs index 27256c4b..919a568f 100644 --- a/CKli/Program.cs +++ b/CKli/Program.cs @@ -220,7 +220,11 @@ string FirstPadding( int paddingSize, string sourceProviderName, bool missing ) { bool provided = !string.IsNullOrWhiteSpace( sourceProviderName ); if( missing && provided ) throw new InvalidOperationException( "Cannot be both missing and provided" ); - if( missing ) sourceProviderName = "Missing"; + if( missing ) + { + sourceProviderName = "Missing"; + provided = true; + } return provided ? $"[{sourceProviderName}]" + new string( ' ', paddingSize - sourceProviderName.Length ) @@ -261,7 +265,7 @@ void RightArrow() foreach( var k in v.KeyStore.Infos ) { if( k.SuperKey != null ) continue; - Console.ForegroundColor = k.IsSecretAvailable ? (!string.IsNullOrWhiteSpace( k.SourceProviderName ) ? ConsoleColor.Blue : ConsoleColor.Green) : ConsoleColor.Red; + Console.ForegroundColor = k.IsSecretAvailable ? (!string.IsNullOrWhiteSpace( k.SourceProviderName ) ? ConsoleColor.Cyan : ConsoleColor.Green) : ConsoleColor.Red; Console.Write( FirstPadding( sourceNameMaxLength, k.SourceProviderName, !k.IsSecretAvailable ) ); WhitePipe(); Console.WriteLine( k.Name ); @@ -277,7 +281,7 @@ void RightArrow() { if( sub.IsSecretAvailable ) { - Console.ForegroundColor = displayedAvailable ? (!string.IsNullOrWhiteSpace( sub.SourceProviderName ) ? ConsoleColor.Blue : ConsoleColor.DarkGreen) : ConsoleColor.Green; + Console.ForegroundColor = displayedAvailable ? (!string.IsNullOrWhiteSpace( sub.SourceProviderName ) ? ConsoleColor.Cyan : ConsoleColor.DarkGreen) : ConsoleColor.Green; displayedAvailable = true; } else diff --git a/CodeCakeBuilder/CodeCakeBuilder.csproj b/CodeCakeBuilder/CodeCakeBuilder.csproj index 770e5c9d..47f54dae 100644 --- a/CodeCakeBuilder/CodeCakeBuilder.csproj +++ b/CodeCakeBuilder/CodeCakeBuilder.csproj @@ -1,4 +1,4 @@ - + netcoreapp2.1 @@ -11,12 +11,12 @@ - - + + - + diff --git a/Plugins/CK.Env.Plugin.CKSetup/CK.Env.Plugin.CKSetup.csproj b/Plugins/CK.Env.Plugin.CKSetup/CK.Env.Plugin.CKSetup.csproj index df35d3be..e02c01ae 100644 --- a/Plugins/CK.Env.Plugin.CKSetup/CK.Env.Plugin.CKSetup.csproj +++ b/Plugins/CK.Env.Plugin.CKSetup/CK.Env.Plugin.CKSetup.csproj @@ -10,7 +10,7 @@ - + diff --git a/Plugins/CK.Env.Plugin.NPM/ArtifactRepository/NPMAzureRepository.cs b/Plugins/CK.Env.Plugin.NPM/ArtifactRepository/NPMAzureRepository.cs index e0758c99..ddfba0e4 100644 --- a/Plugins/CK.Env.Plugin.NPM/ArtifactRepository/NPMAzureRepository.cs +++ b/Plugins/CK.Env.Plugin.NPM/ArtifactRepository/NPMAzureRepository.cs @@ -58,9 +58,10 @@ class NPMAzureRepository : NPMRepositoryBase, INPMAzureRepository /// public override string SecretKeyName => AzureDevOpsAPIHelper.GetSecretKeyName( Organization ); - protected override Registry CreateRegistry( IActivityMonitor m ) + protected override Registry CreateRegistry( IActivityMonitor m, bool throwOnError ) { - string pat = ResolveSecret( m, true ); + string pat = ResolveSecret( m, throwOnError ); + if( string.IsNullOrWhiteSpace( pat ) ) return null; return new Registry( Client.HttpClient, "CKli", pat, new Uri( Url ) ); } diff --git a/Plugins/CK.Env.Plugin.NPM/ArtifactRepository/NPMClient.cs b/Plugins/CK.Env.Plugin.NPM/ArtifactRepository/NPMClient.cs index ee817ba5..4d6c9666 100644 --- a/Plugins/CK.Env.Plugin.NPM/ArtifactRepository/NPMClient.cs +++ b/Plugins/CK.Env.Plugin.NPM/ArtifactRepository/NPMClient.cs @@ -114,8 +114,8 @@ public IArtifactRepository CreateRepository( in XElementReader r ) return new NPMFeed( scope, url, creds, () => { Registry registry = - repositories.OfType().FirstOrDefault( repo => repo.Scope == scope )?.GetRegistry( m ) - ?? repositories.OfType().FirstOrDefault( repo => repo.Url.Equals( url, StringComparison.OrdinalIgnoreCase ) )?.GetRegistry( m ); + repositories.OfType().FirstOrDefault( repo => repo.Scope == scope )?.GetRegistry( m, false ) + ?? repositories.OfType().FirstOrDefault( repo => repo.Url.Equals( url, StringComparison.OrdinalIgnoreCase ) )?.GetRegistry( m, false ); if( registry != null ) return registry; string secret = creds.IsSecretKeyName ? diff --git a/Plugins/CK.Env.Plugin.NPM/ArtifactRepository/NPMRepositoryBase.cs b/Plugins/CK.Env.Plugin.NPM/ArtifactRepository/NPMRepositoryBase.cs index c84c8aec..370a6171 100644 --- a/Plugins/CK.Env.Plugin.NPM/ArtifactRepository/NPMRepositoryBase.cs +++ b/Plugins/CK.Env.Plugin.NPM/ArtifactRepository/NPMRepositoryBase.cs @@ -63,16 +63,17 @@ abstract class NPMRepositoryBase public bool HandleArtifactType( in ArtifactType artifactType ) => artifactType == NPMClient.NPMType; /// - /// Resolves the target NPM registry. Never null. + /// Resolves the target NPM registry. /// - public Registry GetRegistry( IActivityMonitor m ) => _registry ?? (_registry = CreateRegistry( m )); + public Registry GetRegistry( IActivityMonitor m, bool throwOnError = true ) => _registry ?? (_registry = CreateRegistry( m, throwOnError )); /// - /// Creates the registry or throws on error. + /// Creates the registry. /// /// The monitor to use. + /// If true, throw when the cannot be instantied. /// The initialized registry. - protected abstract Registry CreateRegistry( IActivityMonitor m ); + protected abstract Registry CreateRegistry( IActivityMonitor m, bool throwOnError ); /// /// Overridden to return the string. @@ -111,7 +112,7 @@ public virtual string ResolveSecret( IActivityMonitor m, bool throwOnEmpty = fal /// True if found, false otherwise. public virtual Task ExistsAsync( IActivityMonitor m, string packageId, SVersion version ) { - return GetRegistry( m ).ExistAsync( m, packageId, version ); + return GetRegistry( m, true ).ExistAsync( m, packageId, version ); } /// @@ -129,7 +130,7 @@ async Task PushPackagesAsync( IActivityMonitor m, IEnumerable(); foreach( LocalNPMPackageFile file in files ) { - if( await GetRegistry( m ).ExistAsync( m, file.Instance.Artifact.Name, file.Instance.Version ) ) + if( await GetRegistry( m, true ).ExistAsync( m, file.Instance.Artifact.Name, file.Instance.Version ) ) { m.Info( $"Package '{file.Instance}' already in '{ToString()}'. Push skipped." ); skipped.Add( file ); @@ -139,7 +140,7 @@ async Task PushPackagesAsync( IActivityMonitor m, IEnumerable PushPackagesAsync( IActivityMonitor m, IEnumerable public bool UsePassword { get; } - protected override Registry CreateRegistry( IActivityMonitor m ) + protected override Registry CreateRegistry( IActivityMonitor m, bool throwOnError ) { var u = new Uri( Url ); + string secret = ResolveSecret( m, throwOnError ); + if( secret == null ) return null; return UsePassword - ? new Registry( Client.HttpClient, "CKli", ResolveSecret( m, true ), u ) - : new Registry( Client.HttpClient, ResolveSecret( m, true ), u ); + ? new Registry( Client.HttpClient, "CKli", secret, u ) + : new Registry( Client.HttpClient, secret, u ); } } } diff --git a/Plugins/CK.Env.Plugin.NPM/Registry.cs b/Plugins/CK.Env.Plugin.NPM/Registry.cs index f8a5a0bf..ccf85905 100644 --- a/Plugins/CK.Env.Plugin.NPM/Registry.cs +++ b/Plugins/CK.Env.Plugin.NPM/Registry.cs @@ -417,7 +417,7 @@ async Task LogErrors( IActivityMonitor m, HttpResponseMessage res ) } else { - m.Error( "Unable to authenticate, need: " + string.Join( ",", auth ) ); + m.Error( "Unable to authenticate, need: " + string.Join( ", ", auth ) ); } } else diff --git a/Tests/CK.Env.Artifact.Tests/CK.Env.Artifact.Tests.csproj b/Tests/CK.Env.Artifact.Tests/CK.Env.Artifact.Tests.csproj index f65c0b3a..fd16845e 100644 --- a/Tests/CK.Env.Artifact.Tests/CK.Env.Artifact.Tests.csproj +++ b/Tests/CK.Env.Artifact.Tests/CK.Env.Artifact.Tests.csproj @@ -10,7 +10,7 @@ - + diff --git a/Tests/CK.Env.FileSystem.Tests/CK.Env.FileSystem.Tests.csproj b/Tests/CK.Env.FileSystem.Tests/CK.Env.FileSystem.Tests.csproj index e1df0cb6..ded447c4 100644 --- a/Tests/CK.Env.FileSystem.Tests/CK.Env.FileSystem.Tests.csproj +++ b/Tests/CK.Env.FileSystem.Tests/CK.Env.FileSystem.Tests.csproj @@ -1,7 +1,7 @@ - + - netcoreapp2.2 + netcoreapp2.1 false @@ -9,7 +9,7 @@ - + diff --git a/Tests/CK.Env.MSBuildSln.Tests/CK.Env.MSBuildSln.Tests.csproj b/Tests/CK.Env.MSBuildSln.Tests/CK.Env.MSBuildSln.Tests.csproj index c44d50d1..614bcd76 100644 --- a/Tests/CK.Env.MSBuildSln.Tests/CK.Env.MSBuildSln.Tests.csproj +++ b/Tests/CK.Env.MSBuildSln.Tests/CK.Env.MSBuildSln.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/Tests/CK.Env.Tests/CK.Env.Tests.csproj b/Tests/CK.Env.Tests/CK.Env.Tests.csproj index e4e9e41d..c5b7d05e 100644 --- a/Tests/CK.Env.Tests/CK.Env.Tests.csproj +++ b/Tests/CK.Env.Tests/CK.Env.Tests.csproj @@ -6,7 +6,7 @@ False - + diff --git a/Tests/CK.Env.XTyping.Tests/CK.Env.XTyping.Tests.csproj b/Tests/CK.Env.XTyping.Tests/CK.Env.XTyping.Tests.csproj index 748eaaef..15534f35 100644 --- a/Tests/CK.Env.XTyping.Tests/CK.Env.XTyping.Tests.csproj +++ b/Tests/CK.Env.XTyping.Tests/CK.Env.XTyping.Tests.csproj @@ -1,7 +1,7 @@ - + - netcoreapp2.2 + netcoreapp2.1 false @@ -10,7 +10,7 @@ - + diff --git a/Tests/CK.SimpleKeyVault.Tests/CK.SimpleKeyVault.Tests.csproj b/Tests/CK.SimpleKeyVault.Tests/CK.SimpleKeyVault.Tests.csproj index 80d39981..464796e6 100644 --- a/Tests/CK.SimpleKeyVault.Tests/CK.SimpleKeyVault.Tests.csproj +++ b/Tests/CK.SimpleKeyVault.Tests/CK.SimpleKeyVault.Tests.csproj @@ -7,7 +7,7 @@ - + diff --git a/Tests/CK.Xml.Linq.Extension.Tests/CK.Xml.Linq.Extension.Tests.csproj b/Tests/CK.Xml.Linq.Extension.Tests/CK.Xml.Linq.Extension.Tests.csproj index 38ed82a3..6cb2dd42 100644 --- a/Tests/CK.Xml.Linq.Extension.Tests/CK.Xml.Linq.Extension.Tests.csproj +++ b/Tests/CK.Xml.Linq.Extension.Tests/CK.Xml.Linq.Extension.Tests.csproj @@ -7,7 +7,7 @@ - + diff --git a/Tests/Npm.Net.Tests/Npm.Net.Tests.csproj b/Tests/Npm.Net.Tests/Npm.Net.Tests.csproj index fe1c791b..7dcfe779 100644 --- a/Tests/Npm.Net.Tests/Npm.Net.Tests.csproj +++ b/Tests/Npm.Net.Tests/Npm.Net.Tests.csproj @@ -11,7 +11,7 @@ - +