Skip to content

Commit 6e2acaa

Browse files
refactor
1 parent b05c2a8 commit 6e2acaa

File tree

16 files changed

+318
-212
lines changed

16 files changed

+318
-212
lines changed

cmd/account/link_key/link_key.go

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -342,28 +342,31 @@ func (h *handler) linkOwner(resp initiateLinkingResponse) error {
342342
if err != nil {
343343
fmt.Println("\nMCMS config not found or is incorrect, skipping MCMS config in changeset")
344344
}
345-
csFile := types.ChangesetFile{
346-
Environment: h.settings.Workflow.CLDSettings.Environment,
347-
Domain: h.settings.Workflow.CLDSettings.Domain,
348-
Changesets: []types.Changeset{
349-
{
350-
LinkOwner: &types.LinkOwner{
351-
Payload: changeset.UserLinkOwnerInput{
352-
ValidityTimestamp: ts,
353-
Proof: common.Bytes2Hex(proofBytes[:]),
354-
Signature: common.Bytes2Hex(sigBytes),
355-
ChainSelector: chainSelector,
356-
MCMSConfig: mcmsConfig,
357-
WorkflowRegistryQualifier: h.settings.Workflow.CLDSettings.WorkflowRegistryQualifier,
358-
},
345+
cldSettings := h.settings.CLDSettings
346+
changesets := []types.Changeset{
347+
{
348+
LinkOwner: &types.LinkOwner{
349+
Payload: changeset.UserLinkOwnerInput{
350+
ValidityTimestamp: ts,
351+
Proof: common.Bytes2Hex(proofBytes[:]),
352+
Signature: common.Bytes2Hex(sigBytes),
353+
ChainSelector: chainSelector,
354+
MCMSConfig: mcmsConfig,
355+
WorkflowRegistryQualifier: cldSettings.WorkflowRegistryQualifier,
359356
},
360357
},
361358
},
362359
}
360+
csFile := types.NewChangesetFile(cldSettings.Environment, cldSettings.Domain, cldSettings.MergeProposals, changesets)
363361

364-
fileName := fmt.Sprintf("LinkOwner_%s_%s.yaml", h.settings.Workflow.UserWorkflowSettings.WorkflowOwnerAddress, time.Now().Format("20060102_150405"))
362+
var fileName string
363+
if cldSettings.ChangesetFile != "" {
364+
fileName = cldSettings.ChangesetFile
365+
} else {
366+
fileName = fmt.Sprintf("LinkOwner_%s_%s.yaml", h.settings.Workflow.UserWorkflowSettings.WorkflowOwnerAddress, time.Now().Format("20060102_150405"))
367+
}
365368

366-
return cmdCommon.WriteChangesetFile(fileName, &csFile, h.settings)
369+
return cmdCommon.WriteChangesetFile(fileName, csFile, h.settings)
367370

368371
default:
369372
h.log.Warn().Msgf("Unsupported transaction type: %s", txOut.Type)

cmd/account/unlink_key/unlink_key.go

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -301,27 +301,30 @@ func (h *handler) unlinkOwner(owner string, resp initiateUnlinkingResponse) erro
301301
if err != nil {
302302
fmt.Println("\nMCMS config not found or is incorrect, skipping MCMS config in changeset")
303303
}
304-
csFile := types.ChangesetFile{
305-
Environment: h.settings.Workflow.CLDSettings.Environment,
306-
Domain: h.settings.Workflow.CLDSettings.Domain,
307-
Changesets: []types.Changeset{
308-
{
309-
UnlinkOwner: &types.UnlinkOwner{
310-
Payload: changeset.UserUnlinkOwnerInput{
311-
ValidityTimestamp: ts,
312-
Signature: common.Bytes2Hex(sigBytes),
313-
ChainSelector: chainSelector,
314-
MCMSConfig: mcmsConfig,
315-
WorkflowRegistryQualifier: h.settings.Workflow.CLDSettings.WorkflowRegistryQualifier,
316-
},
304+
cldSettings := h.settings.CLDSettings
305+
changesets := []types.Changeset{
306+
{
307+
UnlinkOwner: &types.UnlinkOwner{
308+
Payload: changeset.UserUnlinkOwnerInput{
309+
ValidityTimestamp: ts,
310+
Signature: common.Bytes2Hex(sigBytes),
311+
ChainSelector: chainSelector,
312+
MCMSConfig: mcmsConfig,
313+
WorkflowRegistryQualifier: cldSettings.WorkflowRegistryQualifier,
317314
},
318315
},
319316
},
320317
}
318+
csFile := types.NewChangesetFile(cldSettings.Environment, cldSettings.Domain, cldSettings.MergeProposals, changesets)
321319

322-
fileName := fmt.Sprintf("UnlinkOwner_%s_%s.yaml", h.settings.Workflow.UserWorkflowSettings.WorkflowOwnerAddress, time.Now().Format("20060102_150405"))
320+
var fileName string
321+
if cldSettings.ChangesetFile != "" {
322+
fileName = cldSettings.ChangesetFile
323+
} else {
324+
fileName = fmt.Sprintf("UnlinkOwner_%s_%s.yaml", h.settings.Workflow.UserWorkflowSettings.WorkflowOwnerAddress, time.Now().Format("20060102_150405"))
325+
}
323326

324-
return cmdCommon.WriteChangesetFile(fileName, &csFile, h.settings)
327+
return cmdCommon.WriteChangesetFile(fileName, csFile, h.settings)
325328

326329
default:
327330
h.log.Warn().Msgf("Unsupported transaction type: %s", txOut.Type)

cmd/common/utils.go

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -219,20 +219,38 @@ func GetBuildCmd(inputFile string, outputFile string, rootFolder string) *exec.C
219219
}
220220

221221
func WriteChangesetFile(fileName string, changesetFile *inttypes.ChangesetFile, settings *settings.Settings) error {
222-
yamlData, err := yaml.Marshal(&changesetFile)
223-
if err != nil {
224-
return fmt.Errorf("failed to marshal changeset to yaml: %w", err)
225-
}
226-
227222
fullFilePath := filepath.Join(
228-
filepath.Clean(settings.Workflow.CLDSettings.CLDPath),
223+
filepath.Clean(settings.CLDSettings.CLDPath),
229224
"domains",
230-
settings.Workflow.CLDSettings.Domain,
231-
settings.Workflow.CLDSettings.Environment,
225+
settings.CLDSettings.Domain,
226+
settings.CLDSettings.Environment,
232227
"durable_pipelines",
233228
"inputs",
234229
fileName,
235230
)
231+
232+
// if file exists, read it and append the new changesets
233+
if _, err := os.Stat(fullFilePath); err == nil {
234+
existingYamlData, err := os.ReadFile(fullFilePath)
235+
if err != nil {
236+
return fmt.Errorf("failed to read existing changeset yaml file: %w", err)
237+
}
238+
239+
var existingChangesetFile inttypes.ChangesetFile
240+
if err := yaml.Unmarshal(existingYamlData, &existingChangesetFile); err != nil {
241+
return fmt.Errorf("failed to unmarshal existing changeset yaml: %w", err)
242+
}
243+
244+
// Append new changesets to the existing ones
245+
existingChangesetFile.Changesets = append(existingChangesetFile.Changesets, changesetFile.Changesets...)
246+
changesetFile = &existingChangesetFile
247+
}
248+
249+
yamlData, err := yaml.Marshal(&changesetFile)
250+
if err != nil {
251+
return fmt.Errorf("failed to marshal changeset to yaml: %w", err)
252+
}
253+
236254
if err := os.WriteFile(fullFilePath, yamlData, 0600); err != nil {
237255
return fmt.Errorf("failed to write changeset yaml file: %w", err)
238256
}

cmd/secrets/common/handler.go

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -475,31 +475,34 @@ func (h *Handler) Execute(
475475
if err != nil {
476476
fmt.Println("\nMCMS config not found or is incorrect, skipping MCMS config in changeset")
477477
}
478-
csFile := types.ChangesetFile{
479-
Environment: h.Settings.Workflow.CLDSettings.Environment,
480-
Domain: h.Settings.Workflow.CLDSettings.Domain,
481-
Changesets: []types.Changeset{
482-
{
483-
AllowlistRequest: &types.AllowlistRequest{
484-
Payload: changeset.UserAllowlistRequestInput{
485-
ExpiryTimestamp: uint32(time.Now().Add(duration).Unix()), // #nosec G115 -- int64 to uint32 conversion; Unix() returns seconds since epoch, which fits in uint32 until 2106
486-
RequestDigest: common.Bytes2Hex(digest[:]),
487-
ChainSelector: chainSelector,
488-
MCMSConfig: mcmsConfig,
489-
WorkflowRegistryQualifier: h.Settings.Workflow.CLDSettings.WorkflowRegistryQualifier,
490-
},
478+
cldSettings := h.Settings.CLDSettings
479+
changesets := []types.Changeset{
480+
{
481+
AllowlistRequest: &types.AllowlistRequest{
482+
Payload: changeset.UserAllowlistRequestInput{
483+
ExpiryTimestamp: uint32(time.Now().Add(duration).Unix()), // #nosec G115 -- int64 to uint32 conversion; Unix() returns seconds since epoch, which fits in uint32 until 2106
484+
RequestDigest: common.Bytes2Hex(digest[:]),
485+
ChainSelector: chainSelector,
486+
MCMSConfig: mcmsConfig,
487+
WorkflowRegistryQualifier: cldSettings.WorkflowRegistryQualifier,
491488
},
492489
},
493490
},
494491
}
492+
csFile := types.NewChangesetFile(cldSettings.Environment, cldSettings.Domain, cldSettings.MergeProposals, changesets)
495493

496-
fileName := fmt.Sprintf("AllowlistRequest_%s_%s_%s.yaml", requestID, h.Settings.Workflow.UserWorkflowSettings.WorkflowOwnerAddress, time.Now().Format("20060102_150405"))
494+
var fileName string
495+
if cldSettings.ChangesetFile != "" {
496+
fileName = cldSettings.ChangesetFile
497+
} else {
498+
fileName = fmt.Sprintf("AllowlistRequest_%s_%s_%s.yaml", requestID, h.Settings.Workflow.UserWorkflowSettings.WorkflowOwnerAddress, time.Now().Format("20060102_150405"))
499+
}
497500

498501
if err := SaveBundle(bundlePath, ub); err != nil {
499502
return fmt.Errorf("failed to save unsigned bundle at %s: %w", bundlePath, err)
500503
}
501504

502-
return cmdCommon.WriteChangesetFile(fileName, &csFile, h.Settings)
505+
return cmdCommon.WriteChangesetFile(fileName, csFile, h.Settings)
503506

504507
default:
505508
h.Log.Warn().Msgf("Unsupported transaction type: %s", txOut.Type)

cmd/secrets/delete/delete.go

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -215,31 +215,35 @@ func Execute(h *common.Handler, inputs DeleteSecretsInputs, duration time.Durati
215215
if err != nil {
216216
fmt.Println("\nMCMS config not found or is incorrect, skipping MCMS config in changeset")
217217
}
218-
csFile := types.ChangesetFile{
219-
Environment: h.Settings.Workflow.CLDSettings.Environment,
220-
Domain: h.Settings.Workflow.CLDSettings.Domain,
221-
Changesets: []types.Changeset{
222-
{
223-
AllowlistRequest: &types.AllowlistRequest{
224-
Payload: changeset.UserAllowlistRequestInput{
225-
ExpiryTimestamp: uint32(time.Now().Add(duration).Unix()), // #nosec G115 -- int64 to uint32 conversion; Unix() returns seconds since epoch, which fits in uint32 until 2106
226-
RequestDigest: ethcommon.Bytes2Hex(digest[:]),
227-
ChainSelector: chainSelector,
228-
MCMSConfig: mcmsConfig,
229-
WorkflowRegistryQualifier: h.Settings.Workflow.CLDSettings.WorkflowRegistryQualifier,
230-
},
218+
cldSettings := h.Settings.CLDSettings
219+
changesets := []types.Changeset{
220+
{
221+
AllowlistRequest: &types.AllowlistRequest{
222+
Payload: changeset.UserAllowlistRequestInput{
223+
ExpiryTimestamp: uint32(time.Now().Add(duration).Unix()), // #nosec G115 -- int64 to uint32 conversion; Unix() returns seconds since epoch, which fits in uint32 until 2106
224+
RequestDigest: ethcommon.Bytes2Hex(digest[:]),
225+
ChainSelector: chainSelector,
226+
MCMSConfig: mcmsConfig,
227+
WorkflowRegistryQualifier: cldSettings.WorkflowRegistryQualifier,
231228
},
232229
},
233230
},
234231
}
232+
csFile := types.NewChangesetFile(cldSettings.Environment, cldSettings.Domain, cldSettings.MergeProposals, changesets)
235233

236-
fileName := fmt.Sprintf("AllowlistRequest_%s_%s_%s.yaml", requestID, h.Settings.Workflow.UserWorkflowSettings.WorkflowOwnerAddress, time.Now().Format("20060102_150405"))
234+
var fileName string
235+
if cldSettings.ChangesetFile != "" {
236+
fileName = cldSettings.ChangesetFile
237+
} else {
238+
239+
fileName = fmt.Sprintf("AllowlistRequest_%s_%s_%s.yaml", requestID, h.Settings.Workflow.UserWorkflowSettings.WorkflowOwnerAddress, time.Now().Format("20060102_150405"))
240+
}
237241

238242
if err := common.SaveBundle(bundlePath, ub); err != nil {
239243
return fmt.Errorf("failed to save unsigned bundle at %s: %w", bundlePath, err)
240244
}
241245

242-
return cmdCommon.WriteChangesetFile(fileName, &csFile, h.Settings)
246+
return cmdCommon.WriteChangesetFile(fileName, csFile, h.Settings)
243247

244248
default:
245249
h.Log.Warn().Msgf("Unsupported transaction type: %s", txOut.Type)

cmd/secrets/list/list.go

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -187,31 +187,34 @@ func Execute(h *common.Handler, namespace string, duration time.Duration, ownerT
187187
if err != nil {
188188
fmt.Println("\nMCMS config not found or is incorrect, skipping MCMS config in changeset")
189189
}
190-
csFile := types.ChangesetFile{
191-
Environment: h.Settings.Workflow.CLDSettings.Environment,
192-
Domain: h.Settings.Workflow.CLDSettings.Domain,
193-
Changesets: []types.Changeset{
194-
{
195-
AllowlistRequest: &types.AllowlistRequest{
196-
Payload: changeset.UserAllowlistRequestInput{
197-
ExpiryTimestamp: uint32(time.Now().Add(duration).Unix()), // #nosec G115 -- int64 to uint32 conversion; Unix() returns seconds since epoch, which fits in uint32 until 2106
198-
RequestDigest: ethcommon.Bytes2Hex(digest[:]),
199-
ChainSelector: chainSelector,
200-
MCMSConfig: mcmsConfig,
201-
WorkflowRegistryQualifier: h.Settings.Workflow.CLDSettings.WorkflowRegistryQualifier,
202-
},
190+
cldSettings := h.Settings.CLDSettings
191+
changesets := []types.Changeset{
192+
{
193+
AllowlistRequest: &types.AllowlistRequest{
194+
Payload: changeset.UserAllowlistRequestInput{
195+
ExpiryTimestamp: uint32(time.Now().Add(duration).Unix()), // #nosec G115 -- int64 to uint32 conversion; Unix() returns seconds since epoch, which fits in uint32 until 2106
196+
RequestDigest: ethcommon.Bytes2Hex(digest[:]),
197+
ChainSelector: chainSelector,
198+
MCMSConfig: mcmsConfig,
199+
WorkflowRegistryQualifier: cldSettings.WorkflowRegistryQualifier,
203200
},
204201
},
205202
},
206203
}
204+
csFile := types.NewChangesetFile(cldSettings.Environment, cldSettings.Domain, cldSettings.MergeProposals, changesets)
207205

208-
fileName := fmt.Sprintf("AllowlistRequest_%s_%s_%s.yaml", requestID, h.Settings.Workflow.UserWorkflowSettings.WorkflowOwnerAddress, time.Now().Format("20060102_150405"))
206+
var fileName string
207+
if cldSettings.ChangesetFile != "" {
208+
fileName = cldSettings.ChangesetFile
209+
} else {
210+
fileName = fmt.Sprintf("AllowlistRequest_%s_%s_%s.yaml", requestID, h.Settings.Workflow.UserWorkflowSettings.WorkflowOwnerAddress, time.Now().Format("20060102_150405"))
211+
}
209212

210213
if err := common.SaveBundle(bundlePath, ub); err != nil {
211214
return fmt.Errorf("failed to save unsigned bundle at %s: %w", bundlePath, err)
212215
}
213216

214-
return cmdCommon.WriteChangesetFile(fileName, &csFile, h.Settings)
217+
return cmdCommon.WriteChangesetFile(fileName, csFile, h.Settings)
215218

216219
default:
217220
h.Log.Warn().Msgf("Unsupported transaction type: %s", txOut.Type)

cmd/workflow/activate/activate.go

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -211,28 +211,31 @@ func (h *handler) Execute() error {
211211
if err != nil {
212212
fmt.Println("\nMCMS config not found or is incorrect, skipping MCMS config in changeset")
213213
}
214-
csFile := types.ChangesetFile{
215-
Environment: h.settings.Workflow.CLDSettings.Environment,
216-
Domain: h.settings.Workflow.CLDSettings.Domain,
217-
Changesets: []types.Changeset{
218-
{
219-
ActivateWorkflow: &types.ActivateWorkflow{
220-
Payload: changeset.UserWorkflowActivateInput{
221-
WorkflowID: h.runtimeContext.Workflow.ID,
222-
DonFamily: h.inputs.DonFamily,
223-
224-
ChainSelector: chainSelector,
225-
MCMSConfig: mcmsConfig,
226-
WorkflowRegistryQualifier: h.settings.Workflow.CLDSettings.WorkflowRegistryQualifier,
227-
},
214+
cldSettings := h.settings.CLDSettings
215+
changesets := []types.Changeset{
216+
{
217+
ActivateWorkflow: &types.ActivateWorkflow{
218+
Payload: changeset.UserWorkflowActivateInput{
219+
WorkflowID: h.runtimeContext.Workflow.ID,
220+
DonFamily: h.inputs.DonFamily,
221+
222+
ChainSelector: chainSelector,
223+
MCMSConfig: mcmsConfig,
224+
WorkflowRegistryQualifier: cldSettings.WorkflowRegistryQualifier,
228225
},
229226
},
230227
},
231228
}
229+
csFile := types.NewChangesetFile(cldSettings.Environment, cldSettings.Domain, cldSettings.MergeProposals, changesets)
232230

233-
fileName := fmt.Sprintf("ActivateWorkflow_%s_%s.yaml", workflowName, time.Now().Format("20060102_150405"))
231+
var fileName string
232+
if cldSettings.ChangesetFile != "" {
233+
fileName = cldSettings.ChangesetFile
234+
} else {
235+
fileName = fmt.Sprintf("ActivateWorkflow_%s_%s.yaml", workflowName, time.Now().Format("20060102_150405"))
236+
}
234237

235-
return cmdCommon.WriteChangesetFile(fileName, &csFile, h.settings)
238+
return cmdCommon.WriteChangesetFile(fileName, csFile, h.settings)
236239

237240
default:
238241
h.log.Warn().Msgf("Unsupported transaction type: %s", txOut.Type)

cmd/workflow/delete/delete.go

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -223,27 +223,30 @@ func (h *handler) Execute() error {
223223
if err != nil {
224224
fmt.Println("\nMCMS config not found or is incorrect, skipping MCMS config in changeset")
225225
}
226-
csFile := types.ChangesetFile{
227-
Environment: h.settings.Workflow.CLDSettings.Environment,
228-
Domain: h.settings.Workflow.CLDSettings.Domain,
229-
Changesets: []types.Changeset{
230-
{
231-
DeleteWorkflow: &types.DeleteWorkflow{
232-
Payload: changeset.UserWorkflowDeleteInput{
233-
WorkflowID: h.runtimeContext.Workflow.ID,
234-
235-
ChainSelector: chainSelector,
236-
MCMSConfig: mcmsConfig,
237-
WorkflowRegistryQualifier: h.settings.Workflow.CLDSettings.WorkflowRegistryQualifier,
238-
},
226+
cldSettings := h.settings.CLDSettings
227+
changesets := []types.Changeset{
228+
{
229+
DeleteWorkflow: &types.DeleteWorkflow{
230+
Payload: changeset.UserWorkflowDeleteInput{
231+
WorkflowID: h.runtimeContext.Workflow.ID,
232+
233+
ChainSelector: chainSelector,
234+
MCMSConfig: mcmsConfig,
235+
WorkflowRegistryQualifier: cldSettings.WorkflowRegistryQualifier,
239236
},
240237
},
241238
},
242239
}
240+
csFile := types.NewChangesetFile(cldSettings.Environment, cldSettings.Domain, cldSettings.MergeProposals, changesets)
243241

244-
fileName := fmt.Sprintf("DeleteWorkflow_%s_%s.yaml", workflowName, time.Now().Format("20060102_150405"))
242+
var fileName string
243+
if cldSettings.ChangesetFile != "" {
244+
fileName = cldSettings.ChangesetFile
245+
} else {
246+
fileName = fmt.Sprintf("DeleteWorkflow_%s_%s.yaml", workflowName, time.Now().Format("20060102_150405"))
247+
}
245248

246-
return cmdCommon.WriteChangesetFile(fileName, &csFile, h.settings)
249+
return cmdCommon.WriteChangesetFile(fileName, csFile, h.settings)
247250

248251
default:
249252
h.log.Warn().Msgf("Unsupported transaction type: %s", txOut.Type)

0 commit comments

Comments
 (0)