package project

// type Flavor interface {
// 	// Name returns a tuple of flavor key and readable name
// 	Name() (string, string)

// 	// Detected returns true on successful metadata checks
// 	Detected() bool

// 	// Build triggers packaging subprocesses
// 	Build(context.Context) error
// 	// TODO: Init() Questions
// 	// TODO: Deploy(context.Context) error
// }

// var _ Flavor = PythonWheel{}

// type PythonWheel struct{}

// func (pw PythonWheel) Name() (string, string) {
// 	return "wheel", "Python Wheel"
// }

// func (pw PythonWheel) Detected() bool {
// 	root, err := findProjectRoot()
// 	if err != nil {
// 		return false
// 	}
// 	_, err = os.Stat(fmt.Sprintf("%s/setup.py", root))
// 	return err == nil
// }

// func (pw PythonWheel) Build(ctx context.Context) error {
// 	defer toTheRootAndBack()()
// 	// do subprocesses or https://github.com/go-python/cpy3
// 	// it all depends on complexity and binary size
// 	// TODO: detect if there's an .venv here and call setup.py with ENV vars of it
// 	// TODO: where.exe python (WIN) / which python (UNIX)
// 	cmd := exec.CommandContext(ctx, "python", "setup.py", "bdist-wheel")
// 	err := cmd.Run()
// 	if err != nil {
// 		return err
// 	}
// 	return nil
// }

// func toTheRootAndBack() func() {
// 	wd, _ := os.Getwd()
// 	root, _ := findProjectRoot()
// 	os.Chdir(root)
// 	return func() {
// 		os.Chdir(wd)
// 	}
// }

// var _ Flavor = PythonNotebooks{}

// type PythonNotebooks struct{}

// func (n PythonNotebooks) Name() (string, string) {
// 	// or just "notebooks", as we might shuffle in scala?...
// 	return "python-notebooks", "Python Notebooks"
// }

// func (n PythonNotebooks) Detected() bool {
// 	// TODO: Steps:
// 	// - get all filenames
// 	// - read first X bytes from random 10 files and check
// 	// if they're "Databricks Notebook Source"
// 	return false
// }

// func (n PythonNotebooks) Build(ctx context.Context) error {
// 	// TODO: perhaps some linting?..
// 	return nil
// }

// func (n PythonNotebooks) Deploy(ctx context.Context) error {
// 	// TODO: recursively upload notebooks to a given workspace path
// 	return nil
// }