package git

import (
	"strings"

	"alpha.dagger.io/git"
	"alpha.dagger.io/alpine"
	"alpha.dagger.io/os"
)

repo: git.#Repository & {
	remote:     "https://github.com/blocklayerhq/acme-clothing.git"
	ref:        "master"
	keepGitDir: true
}

repoSubDir: git.#Repository & {
	remote:     "https://github.com/dagger/examples.git"
	ref:        "main"
	subdir:     "todoapp"
	keepGitDir: true
}

branch: git.#CurrentBranch & {
	repository: repo
}

tagsList: git.#Tags & {
	repository: repo
}

TestRepository: os.#Container & {
	image: alpine.#Image & {
		package: bash: "=5.1.0-r0"
		package: git:  true
	}
	mount: "/repo1": from: repo
	dir: "/repo1"
	command: """
		[ -d .git ]
		"""
}

TestSubRepository: os.#Container & {
	image: alpine.#Image & {
		package: bash: "=5.1.0-r0"
		package: git:  true
	}
	mount: "/repo1": from: repoSubDir
	dir: "/repo1"
	command: """
		[ -d src ]
		"""
}

TestCurrentBranch: os.#Container & {
	image: alpine.#Image & {
		package: bash: "=5.1.0-r0"
		package: git:  true
	}
	env: BRANCH_NAME: branch.name
	command: """
		[ $BRANCH_NAME = "master" ]
		"""
}

TestCurrentTags: os.#Container & {
	image: alpine.#Image & {
		package: bash: "=5.1.0-r0"
		package: git:  true
	}
	env: TAGS: strings.Join([ for k, v in tagsList.tags {"\(k)=\(v)"}], "\n")
	command: """
		[ $TAGS = "0=master" ]
		"""
}