Bladeren bron

support missing porter.yaml (#3592)

Co-authored-by: David Townley <davidtownley@Davids-MacBook-Air.local>
d-g-town 2 jaren geleden
bovenliggende
commit
6fca050523
1 gewijzigde bestanden met toevoegingen van 20 en 1 verwijderingen
  1. 20 1
      cli/cmd/v2/apply.go

+ 20 - 1
cli/cmd/v2/apply.go

@@ -38,7 +38,22 @@ func Apply(ctx context.Context, cliConf config.CLIConfig, client api.Client, por
 		return errors.New("deployment target id is empty")
 	}
 
-	if len(porterYamlPath) != 0 {
+	porterYamlExists := len(porterYamlPath) != 0
+
+	if porterYamlExists {
+		_, err = os.Stat(filepath.Clean(porterYamlPath))
+		if err != nil {
+			if !os.IsNotExist(err) {
+				return fmt.Errorf("error checking if porter yaml exists at path %s: %w", porterYamlPath, err)
+			}
+			// If a path was specified but the file does not exist, we will not immediately error out.
+			// This supports users migrated from v1 who use a workflow file that always specifies a porter yaml path
+			// in the apply command.
+			porterYamlExists = false
+		}
+	}
+
+	if porterYamlExists {
 		porterYaml, err := os.ReadFile(filepath.Clean(porterYamlPath))
 		if err != nil {
 			return fmt.Errorf("could not read porter yaml file: %w", err)
@@ -87,6 +102,10 @@ func Apply(ctx context.Context, cliConf config.CLIConfig, client api.Client, por
 		color.New(color.FgGreen).Printf("Successfully parsed Porter YAML: applying app \"%s\"\n", appName) // nolint:errcheck,gosec
 	}
 
+	if appName == "" {
+		return errors.New("App name is empty.  Please provide a Porter YAML file specifying the name of the app or set the PORTER_APP_NAME environment variable.")
+	}
+
 	var commitSHA string
 	if os.Getenv("PORTER_COMMIT_SHA") != "" {
 		commitSHA = os.Getenv("PORTER_COMMIT_SHA")