{
	name:: error "name must be defined",
	namespace:: $.name,
	syncOptions:: ["CreateNamespace=true"],
	retryLimit:: 5,
	sync_wave:: 0,

	apiVersion: "argoproj.io/v1alpha1",
	kind: "Application",
	metadata: {
		name: $.name,
		namespace: "argocd",
		annotations: { "argocd.argoproj.io/sync-wave": std.toString($.sync_wave) },
		finalizers: ["resources-finalizer.argocd.argoproj.io"],
	},
	spec: {
		project: "baseline",
		destination: {
			server: "https://kubernetes.default.svc",
			namespace: $.namespace,
		},
		syncPolicy: {
			automated: {
				selfHeal: true,
				prune: true,
			},
			retry: {
				limit: $.retryLimit,
				backoff: {
					duration: "5s",
					factor: 2,
					maxDuration: "5m",
				},
			},
			syncOptions: $.syncOptions,
		}
	}
}