func()

in internal/pkg/cli/job_init.go [181:239]


func (o *initJobOpts) Ask() error {
	if o.wkldType != "" {
		if err := validateJobType(o.wkldType); err != nil {
			return err
		}
	} else {
		if err := o.askJobType(); err != nil {
			return err
		}
	}
	if o.name == "" {
		if err := o.askJobName(); err != nil {
			return err
		}
	}
	if err := validateJobName(o.name); err != nil {
		return err
	}
	if err := o.validateDuplicateJob(); err != nil {
		return err
	}
	if !o.wsPendingCreation {
		localMft, err := o.mftReader.ReadWorkloadManifest(o.name)
		if err == nil {
			jobType, err := localMft.WorkloadType()
			if err != nil {
				return fmt.Errorf(`read "type" field for job %s from local manifest: %w`, o.name, err)
			}
			if o.wkldType != jobType {
				return fmt.Errorf("manifest file for job %s exists with a different type %s", o.name, jobType)
			}
			log.Infof("Manifest file for job %s already exists. Skipping configuration.\n", o.name)
			o.manifestExists = true
			return nil
		}
		var errNotFound *workspace.ErrFileNotExists
		if !errors.As(err, &errNotFound) {
			return fmt.Errorf("read manifest file for job %s: %w", o.name, err)
		}
	}
	dfSelected, err := o.askDockerfile()
	if err != nil {
		return err
	}
	if !dfSelected {
		if err := o.askImage(); err != nil {
			return err
		}
	}
	if o.schedule == "" {
		if err := o.askSchedule(); err != nil {
			return err
		}
	}
	if err := validateSchedule(o.schedule); err != nil {
		return err
	}
	return nil
}