diff --git a/application/source/command.go b/application/source/command.go
index 829d1e33187cc4583d8a34bce8a3ddf745056c7e..780eaae0077ba13725f672a747e1bc022578c785 100644
--- a/application/source/command.go
+++ b/application/source/command.go
@@ -109,16 +109,20 @@ func (d *Definition) PrepareTemplate(s *xflags.Settings[Definition]) {
 		s.AddError(err)
 	} else {
 
-		if d.Template.Prepare.DataFile == "" {
-			d.Template.Prepare.DataFile = "data.yaml"
+		o := d.Template.Prepare.DataFile
+		if o == "" {
+			o = "data.yaml"
 		}
 
-		o := path.Join(d.Template.Prepare.Output, d.Template.Prepare.DataFile)
-		os.WriteFile(o, data, os.ModePerm)
-	}
+		if !path.IsAbs(o) {
+			o = path.Join(d.Template.Prepare.Output, o)
+		}
+
+		err = os.WriteFile(o, data, os.ModePerm)
+		if err != nil {
+			s.AddError(err)
+		}
 
-	if err != nil {
-		s.AddError(err)
 	}
 
 }