Skip to content

Commit

Permalink
add schemas name and hash
Browse files Browse the repository at this point in the history
  • Loading branch information
vladimir-nikonov committed Nov 22, 2024
1 parent 2d4daf6 commit 85ab4ef
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 9 deletions.
5 changes: 3 additions & 2 deletions clio.tests/Command/DownloadSettingsToManifestCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ public void SaveSysSettingsToFile() {
List<CreatioManifestWebService> webServices = [];

DataProviderMock providerMock = new();

MockSysPackage(providerMock, true, false);

IWebServiceManager webServiceManagerMock = Substitute.For<IWebServiceManager>();
webServiceManagerMock.GetCreatioManifestWebServices().Returns(webServices);
Expand Down Expand Up @@ -250,7 +250,8 @@ public void SaveEnvironmentSettingsPackagesWithSchemasToFile(bool packageAccendi
FileSystem.File.Exists(saveSettingsToManifestOptions.ManifestFileName).Should().BeTrue();
string expectedContent
= TestFileSystem.ReadExamplesFile("deployments-manifest", "expected-saved-full-manifest.yaml");
FileSystem.File.ReadAllText(saveSettingsToManifestOptions.ManifestFileName).Trim().Should()
string actualContent = FileSystem.File.ReadAllText(saveSettingsToManifestOptions.ManifestFileName).Trim();
actualContent.Should()
.Be(expectedContent.Trim());

loggerMock.Received(1).WriteInfo("Done");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
webservices:
- url: https://creatio.com
name: Creatio
- url: https://google.ca
name: Google

packages:
- name: CrtBase
hash: 05CC580F416C53EF362528B970B3D424
maintainer: Creatio
schemas:
- name: Contact
- name: Account
- name: CrtUI
hash: 1C41FF131358F0817308A46CCBCB43C9
maintainer: ATF
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,16 @@ packages:
- name: CrtBase
hash: C45FE1350C0DC2E7B30F840EC64EAAC8
maintainer: Creatio
schemas:
- name: Account
hash: 4B2DC9BBF9F766D9675E90DA40E697B5
- name: Contact
hash: A8C5E54ACE3B5476A648D319486C5427
- name: CrtUI
hash: 2BC352052A32D01E2AF550468C6ECB28
maintainer: ATF
maintainer: ATF
schemas:
- name: Account
hash: 4B2DC9BBF9F766D9675E90DA40E697B5
- name: Contact
hash: A8C5E54ACE3B5476A648D319486C5427
18 changes: 14 additions & 4 deletions clio/Command/EnvironmentManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -233,15 +233,25 @@ public class Feature

public class CreatioManifestPackage
{
[YamlMember(Alias = "name")]
[YamlMember(Alias = "name", Order = 1)]
public string Name { get; set; }


[YamlMember(Alias = "hash")]
[YamlMember(Alias = "hash", Order = 2)]
public string Hash { get; set; }

[YamlMember(Alias = "maintainer")]
[YamlMember(Alias = "maintainer", Order = 3)]
public string Maintainer { get; set; }

[YamlMember(Alias = "schemas", Order = 4)]
public List<CreatioManifestPackageSchema> Schemas { get; set; } = new List<CreatioManifestPackageSchema>();
}

public class CreatioManifestPackageSchema
{
[YamlMember(Alias = "name", Order = 1)]
public string Name { get; set; }

[YamlMember(Alias = "hash", Order = 2)]
public string Hash { get; set; }
}
}
26 changes: 24 additions & 2 deletions clio/Command/SaveSettingsToManifestCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ internal class SaveSettingsToManifestOptions : EnvironmentNameOptions

internal class SaveSettingsToManifestCommand : BaseDataContextCommand<SaveSettingsToManifestOptions>
{
string dateTimeFormat = "M/dd/yyyy hh:mm:ss tt";

#region Fields: Private

Expand Down Expand Up @@ -127,15 +128,36 @@ private List<CreatioManifestPackage> GetPackages() {
var manifestPackages = new CreatioManifestPackage() {
Name = sysPackage.Name,
Hash = GetSysPackageHash(sysPackage),
Maintainer = sysPackage.Maintainer
Maintainer = sysPackage.Maintainer,
Schemas = GetPackageSchemas(sysPackage)
};
packages.Add(manifestPackages);
}
return packages;
}

private List<CreatioManifestPackageSchema> GetPackageSchemas(SysPackage sysPackage) {
List<CreatioManifestPackageSchema> schemas = new List<CreatioManifestPackageSchema>();
var orderedSchemas = sysPackage.SysSchemas.OrderBy(s => s.Name);
foreach (var schema in orderedSchemas) {

StringBuilder sb = new StringBuilder();
sb.Append(schema.Checksum);
sb.Append(schema.ModifiedOn.ToString(dateTimeFormat, CultureInfo.InvariantCulture).ToUpper());
string hashSource = sb.ToString();
byte[] bytes = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(hashSource));
var schemaHash = BitConverter.ToString(bytes).Replace("-", string.Empty);
var manifestSchema = new CreatioManifestPackageSchema() {
Name = schema.Name,
Hash = schemaHash
};
schemas.Add(manifestSchema);
}
return schemas;

}

private string GetSysPackageHash(SysPackage sysPackage) {
string dateTimeFormat = "M/dd/yyyy hh:mm:ss tt";
StringBuilder sb = new StringBuilder();
sb.Append(sysPackage.Name);
sb.Append(sysPackage.ModifiedOn.ToString(dateTimeFormat, CultureInfo.InvariantCulture).ToUpper());
Expand Down

0 comments on commit 85ab4ef

Please sign in to comment.