Browse Source

added build-name as a parameter to build command

pull/5418/head
İsmail ÇAĞDAŞ 6 years ago
parent
commit
886edb03c5
  1. 8
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultChangedProjectFinder.cs
  2. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DotNetProjectBuildConfig.cs
  3. 26
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/FileSystemDotNetProjectBuildConfigReader.cs
  4. 4
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/GitRepository.cs
  5. 16
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/GitRepositoryBuildStatus.cs
  6. 12
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/IRepositoryBuildStatusStore.cs
  7. 26
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/BuildCommand.cs

8
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultChangedProjectFinder.cs

@ -21,18 +21,18 @@ namespace Volo.Abp.Cli.Build
{
if (buildConfig.SlFilePath.IsNullOrEmpty())
{
return FindByRepository(buildConfig.GitRepository);
return FindByRepository(buildConfig);
}
return FindBySlnFile(buildConfig.GitRepository, buildConfig.SlFilePath);
}
private List<DotNetProjectInfo> FindByRepository(GitRepository gitRepository)
private List<DotNetProjectInfo> FindByRepository(DotNetProjectBuildConfig buildConfig)
{
var changedProjectList = new List<DotNetProjectInfo>();
var gitRepositoryBuildStatus = _repositoryBuildStatusStore.Get(gitRepository);
var gitRepositoryBuildStatus = _repositoryBuildStatusStore.Get(buildConfig.BuildName, buildConfig.GitRepository);
FindChangedFiles(gitRepository, gitRepositoryBuildStatus, changedProjectList);
FindChangedFiles(buildConfig.GitRepository, gitRepositoryBuildStatus, changedProjectList);
return changedProjectList;
}

2
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DotNetProjectBuildConfig.cs

@ -2,6 +2,8 @@
{
public class DotNetProjectBuildConfig
{
public string BuildName { get; set; }
public string SlFilePath { get; set; }
public GitRepository GitRepository { get; set; }

26
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/FileSystemDotNetProjectBuildConfigReader.cs

@ -19,18 +19,18 @@ namespace Volo.Abp.Cli.Build
public DotNetProjectBuildConfig Read(string directoryPath)
{
var buildArgs = new DotNetProjectBuildConfig();
var buildConfig = new DotNetProjectBuildConfig();
var solutionFiles = Directory.GetFiles(directoryPath, "*.sln", SearchOption.TopDirectoryOnly);
if (solutionFiles.Length == 1)
{
buildArgs.SlFilePath = solutionFiles.First();
buildConfig.SlFilePath = solutionFiles.First();
var configFile = GetClosestFile(directoryPath, _buildConfigName);
var configFileContent = File.ReadAllText(configFile);
buildArgs.GitRepository = _jsonSerializer.Deserialize<GitRepository>(configFileContent);
buildConfig.GitRepository = _jsonSerializer.Deserialize<GitRepository>(configFileContent);
SetBranchNames(buildArgs.GitRepository);
SetBranchNames(buildConfig.GitRepository);
return buildArgs;
return buildConfig;
}
var configFiles = Directory.GetFiles(directoryPath, _buildConfigName, SearchOption.TopDirectoryOnly);
@ -38,19 +38,17 @@ namespace Volo.Abp.Cli.Build
{
var configFile = configFiles.First();
var configFileContent = File.ReadAllText(configFile);
buildArgs.GitRepository = _jsonSerializer.Deserialize<GitRepository>(configFileContent);
buildConfig.GitRepository = _jsonSerializer.Deserialize<GitRepository>(configFileContent);
SetBranchNames(buildArgs.GitRepository);
SetBranchNames(buildConfig.GitRepository);
return buildArgs;
}
else
{
Console.WriteLine(
"There are more than 1 config (abp-build-config.json) file in the directory!"
);
return buildConfig;
}
Console.WriteLine(
"There are more than 1 config (abp-build-config.json) file in the directory!"
);
throw new Exception("There is no solution file (*.sln) or " + _buildConfigName + " in the working directory !");
}

4
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/GitRepository.cs

@ -33,7 +33,7 @@ namespace Volo.Abp.Cli.Build
DependingRepositories = new List<GitRepository>();
}
public string GetUniqueName()
public string GetUniqueName(string uniqueName)
{
var name = Name + "_" + BranchName;
foreach (var dependingRepository in DependingRepositories)
@ -41,7 +41,7 @@ namespace Volo.Abp.Cli.Build
AddToUniqueName(dependingRepository, name);
}
return name.ToMd5();
return (uniqueName.IsNullOrEmpty() ? "" : uniqueName + "_") + name.ToMd5();
}
private void AddToUniqueName(GitRepository gitRepository, string name)

16
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/GitRepositoryBuildStatus.cs

@ -8,7 +8,7 @@ namespace Volo.Abp.Cli.Build
/// <summary>
/// Name of the repository
/// </summary>
public string Name { get; set; }
public string RepositoryName { get; set; }
/// <summary>
/// Branch of the repository
@ -30,9 +30,9 @@ namespace Volo.Abp.Cli.Build
/// </summary>
public List<GitRepositoryBuildStatus> DependingRepositories { get; set; }
public GitRepositoryBuildStatus(string name, string branchName)
public GitRepositoryBuildStatus(string repositoryName, string branchName)
{
Name = name;
RepositoryName = repositoryName;
BranchName = branchName;
SucceedProjects = new List<DotNetProjectBuildStatus>();
DependingRepositories = new List<GitRepositoryBuildStatus>();
@ -51,7 +51,7 @@ namespace Volo.Abp.Cli.Build
private GitRepositoryBuildStatus GetChildInternal(GitRepositoryBuildStatus repositoryBuildStatus,
string repositoryName)
{
if (repositoryBuildStatus.Name == repositoryName)
if (repositoryBuildStatus.RepositoryName == repositoryName)
{
return repositoryBuildStatus;
}
@ -64,20 +64,20 @@ namespace Volo.Abp.Cli.Build
return null;
}
public string GetUniqueName()
public string GetUniqueName(string uniqueName)
{
var name = Name + "_" + BranchName;
var name = RepositoryName + "_" + BranchName;
foreach (var dependingRepository in DependingRepositories)
{
AddToUniqueName(dependingRepository, name);
}
return name.ToMd5();
return (uniqueName.IsNullOrEmpty() ? "" : uniqueName + "_") + name.ToMd5();
}
private void AddToUniqueName(GitRepositoryBuildStatus gitRepository, string name)
{
name += "_" + gitRepository.Name + "_" + gitRepository.BranchName;
name += "_" + gitRepository.RepositoryName + "_" + gitRepository.BranchName;
foreach (var dependingRepository in gitRepository.DependingRepositories)
{

12
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/IRepositoryBuildStatusStore.cs

@ -7,9 +7,9 @@ namespace Volo.Abp.Cli.Build
{
public interface IRepositoryBuildStatusStore
{
GitRepositoryBuildStatus Get(GitRepository repository);
GitRepositoryBuildStatus Get(string buildNamePrefix, GitRepository repository);
void Set(GitRepositoryBuildStatus status);
void Set(string buildNamePrefix, GitRepositoryBuildStatus status);
}
public class FileSystemRepositoryBuildStatusStore : IRepositoryBuildStatusStore, ITransientDependency
@ -17,14 +17,14 @@ namespace Volo.Abp.Cli.Build
// TODO: change this ?
private string BaseBuildStatusStorePath = @"C:\Users\ismai\.abp\build";
public GitRepositoryBuildStatus Get(GitRepository repository)
public GitRepositoryBuildStatus Get(string buildNamePrefix, GitRepository repository)
{
if (!Directory.Exists(BaseBuildStatusStorePath))
{
Directory.CreateDirectory(BaseBuildStatusStorePath);
}
var buildStatusFile = Path.Combine(BaseBuildStatusStorePath, repository.GetUniqueName()) + ".json";
var buildStatusFile = Path.Combine(BaseBuildStatusStorePath, repository.GetUniqueName(buildNamePrefix)) + ".json";
if (!File.Exists(buildStatusFile))
{
@ -36,14 +36,14 @@ namespace Volo.Abp.Cli.Build
return JsonConvert.DeserializeObject<GitRepositoryBuildStatus>(buildStatusText);
}
public void Set(GitRepositoryBuildStatus status)
public void Set(string buildNamePrefix, GitRepositoryBuildStatus status)
{
if (!Directory.Exists(BaseBuildStatusStorePath))
{
Directory.CreateDirectory(BaseBuildStatusStorePath);
}
var buildStatusFile = Path.Combine(BaseBuildStatusStorePath, status.GetUniqueName()) + ".json";
var buildStatusFile = Path.Combine(BaseBuildStatusStorePath, status.GetUniqueName(buildNamePrefix)) + ".json";
if (File.Exists(buildStatusFile))
{
FileHelper.DeleteIfExists(buildStatusFile);

26
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/BuildCommand.cs

@ -46,8 +46,14 @@ namespace Volo.Abp.Cli.Commands
Options.DotnetBuildArguments.Short,
Options.DotnetBuildArguments.Long
);
var buildName = commandLineArgs.Options.GetOrNull(
Options.BuildName.Short,
Options.BuildName.Long
);
var buildConfig = DotNetProjectBuildConfigReader.Read(workingDirectory ?? Directory.GetCurrentDirectory());
buildConfig.BuildName = buildName;
var changedProjectFiles = ChangedProjectFinder.Find(buildConfig);
@ -61,9 +67,13 @@ namespace Volo.Abp.Cli.Commands
dotnetBuildArguments ?? ""
);
var buildStatus =
GenerateBuildStatus(buildConfig.GitRepository, changedProjectFiles, buildSucceededProjects);
RepositoryBuildStatusStore.Set(buildStatus);
var buildStatus = GenerateBuildStatus(
buildConfig.GitRepository,
changedProjectFiles,
buildSucceededProjects
);
RepositoryBuildStatusStore.Set(buildName, buildStatus);
sw.Stop();
Console.WriteLine("Build operation is completed in " + sw.ElapsedMilliseconds + " (ms)");
@ -186,9 +196,15 @@ namespace Volo.Abp.Cli.Commands
public static class DotnetBuildArguments
{
public const string Short = "d";
public const string Short = "a";
public const string Long = "dotnet-build-arguments";
}
public static class BuildName
{
public const string Short = "n";
public const string Long = "build-name";
}
}
}
}

Loading…
Cancel
Save