Browse Source

Update NpmPackagesUpdater.cs

pull/1296/head
Yunus Emre Kalkan 7 years ago
parent
commit
4512d0185c
  1. 59
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs

59
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs

@ -37,38 +37,26 @@ namespace Volo.Abp.Cli.ProjectModification
foreach (var file in fileList) foreach (var file in fileList)
{ {
ProcessFile(file); UpdatePackagesInFile(file);
}
}
protected virtual void ProcessFile(string file)
{
UpdatePackagesInFile(file, out var isFileModified);
if (isFileModified)
{
RunYarnAndGulp(file); RunYarnAndGulp(file);
} }
} }
protected virtual void UpdatePackagesInFile(string file)
protected virtual void UpdatePackagesInFile(string file, out bool isAnyPackageUpdated)
{ {
isAnyPackageUpdated = false;
var fileContent = File.ReadAllText(file); var fileContent = File.ReadAllText(file);
var packageJson = JObject.Parse(fileContent);
var abpPackages = GetAbpPackagesFromPackageJson(packageJson);
if (!fileContent.Contains("\"@abp/") && !fileContent.Contains("\"@volo/")) if (!abpPackages.Any())
{ {
return; return;
} }
var packageJson = JObject.Parse(fileContent);
var abpPackages = GetAbpPackagesFromPackageJson(packageJson);
foreach (var abpPackage in abpPackages) foreach (var abpPackage in abpPackages)
{ {
UpdatePackage(file, abpPackage, out isAnyPackageUpdated); UpdatePackage(file, abpPackage);
} }
var modifiedFileContent = packageJson.ToString(Formatting.Indented); var modifiedFileContent = packageJson.ToString(Formatting.Indented);
@ -76,29 +64,33 @@ namespace Volo.Abp.Cli.ProjectModification
File.WriteAllText(file, modifiedFileContent); File.WriteAllText(file, modifiedFileContent);
} }
protected virtual void UpdatePackage(string file, JProperty package, out bool isPackageUpdated) protected virtual void UpdatePackage(string file, JProperty package)
{ {
isPackageUpdated = false; var version = GetLatestVersion(package);
string version;
if (_fileVersionStorage.ContainsKey(package.Name)) var versionWithPrefix = $"^{version}";
{
version = _fileVersionStorage[package.Name]; if (versionWithPrefix == (string)package.Value)
}
else
{ {
version = _latestNpmPackageVersionFinder.Find(package.Name); return;
_fileVersionStorage[package.Name] = version;
} }
if (version == (string) package.Value) package.Value.Replace(versionWithPrefix);
Logger.LogInformation($"Updated {package.Name} to {version} in {file.Replace(Directory.GetCurrentDirectory(), "")}.");
}
private string GetLatestVersion(JProperty package)
{
if (_fileVersionStorage.ContainsKey(package.Name))
{ {
return; return _fileVersionStorage[package.Name];
} }
package.Value.Replace($"^{version}"); var version = _latestNpmPackageVersionFinder.Find(package.Name);
isPackageUpdated = true; _fileVersionStorage[package.Name] = version;
Logger.LogInformation($"Updated {package.Name} to {version} in {file.Replace(Directory.GetCurrentDirectory(),"")}.");
return version;
} }
protected virtual List<JProperty> GetAbpPackagesFromPackageJson(JObject fileObject) protected virtual List<JProperty> GetAbpPackagesFromPackageJson(JObject fileObject)
@ -108,6 +100,7 @@ namespace Volo.Abp.Cli.ProjectModification
var abpPackages = properties.Where(p => p.Name.StartsWith("@abp/") || p.Name.StartsWith("@volo/")).ToList(); var abpPackages = properties.Where(p => p.Name.StartsWith("@abp/") || p.Name.StartsWith("@volo/")).ToList();
return abpPackages; return abpPackages;
} }
protected virtual void RunYarnAndGulp(string file) protected virtual void RunYarnAndGulp(string file)
{ {
var fileDirectory = Path.GetDirectoryName(file).EnsureEndsWith(Path.DirectorySeparatorChar); var fileDirectory = Path.GetDirectoryName(file).EnsureEndsWith(Path.DirectorySeparatorChar);

Loading…
Cancel
Save