in controllers/merge_request/controller.go [285:334]
func (r *Reconcile) commitFiles(ctx context.Context, instance *gerritApi.GerritMergeRequest, gitClient GitClient, changeID string) error {
var cMap corev1.ConfigMap
if err := r.k8sClient.Get(ctx, types.NamespacedName{
Namespace: instance.Namespace,
Name: instance.Spec.ChangesConfigMap,
}, &cMap); err != nil {
return errors.Wrap(err, "unable to get files config map")
}
if err := gitClient.CheckoutBranch(instance.Spec.ProjectName, instance.TargetBranch()); err != nil {
return errors.Wrap(err, "unable to checkout branch")
}
addFiles := make([]string, 0, len(cMap.Data))
for _, mrContents := range cMap.Data {
var mrFile MRConfigMapFile
if err := json.Unmarshal([]byte(mrContents), &mrFile); err != nil {
return errors.Wrap(err, "unable to decode file")
}
fileChanged := true
if mrFile.Contents != nil {
if err := gitClient.SetFileContents(instance.Spec.ProjectName, mrFile.Path, *mrFile.Contents); err != nil {
return errors.Wrap(err, "unable to set file contents")
}
} else {
var err error
fileChanged, err = gitClient.RemoveFile(instance.Spec.ProjectName, mrFile.Path)
if err != nil {
return errors.Wrap(err, "unable to remove file")
}
}
if fileChanged {
addFiles = append(addFiles, mrFile.Path)
}
}
gitUser := &git.User{Name: instance.Spec.AuthorName, Email: instance.Spec.AuthorEmail}
message := commitMessage(instance.CommitMessage(), changeID)
if err := gitClient.Commit(instance.Spec.ProjectName, message, addFiles, gitUser); err != nil {
return errors.Wrap(err, "unable to commit changes")
}
return nil
}