app_build.go 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package flags
  2. import (
  3. "fmt"
  4. "github.com/spf13/cobra"
  5. )
  6. const (
  7. // App_BuildMethod is the key for the build method flag
  8. App_BuildMethod = "build-method"
  9. // App_Dockerfile is the key for the dockerfile flag
  10. App_Dockerfile = "dockerfile"
  11. // App_Builder is the key for the builder flag
  12. App_Builder = "builder"
  13. // App_Buildpacks is the key for the buildpacks flag
  14. App_Buildpacks = "attach-buildpacks"
  15. // App_BuildContext is the key for the build context flag
  16. App_BuildContext = "build-context"
  17. )
  18. // UseAppBuildFlags adds build flags to the given command
  19. func UseAppBuildFlags(cmd *cobra.Command) {
  20. cmd.PersistentFlags().String(
  21. App_BuildMethod,
  22. "",
  23. "set the build method for the app on apply, either 'docker' or 'pack'",
  24. )
  25. cmd.PersistentFlags().String(
  26. App_Dockerfile,
  27. "",
  28. "set the path to the Dockerfile when build method is 'docker'",
  29. )
  30. cmd.PersistentFlags().String(
  31. App_Builder,
  32. "",
  33. "set the builder to use when build method is 'pack'",
  34. )
  35. cmd.PersistentFlags().StringSlice(
  36. App_Buildpacks,
  37. nil,
  38. "attach buildpacks to use when build method is 'pack'",
  39. )
  40. cmd.PersistentFlags().String(
  41. App_BuildContext,
  42. "",
  43. "set the build context for the app",
  44. )
  45. }
  46. type buildValues struct {
  47. BuildMethod string
  48. Dockerfile string
  49. Builder string
  50. Buildpacks []string
  51. BuildContext string
  52. }
  53. // AppBuildValuesFromCmd retrieves build values from command flags
  54. func AppBuildValuesFromCmd(cmd *cobra.Command) (buildValues, error) {
  55. var values buildValues
  56. buildMethod, err := cmd.Flags().GetString(App_BuildMethod)
  57. if err != nil {
  58. return values, fmt.Errorf("error getting build method: %s", err)
  59. }
  60. dockerfile, err := cmd.Flags().GetString(App_Dockerfile)
  61. if err != nil {
  62. return values, fmt.Errorf("error getting dockerfile: %s", err)
  63. }
  64. builder, err := cmd.Flags().GetString(App_Builder)
  65. if err != nil {
  66. return values, fmt.Errorf("error getting builder: %s", err)
  67. }
  68. buildpacks, err := cmd.Flags().GetStringSlice(App_Buildpacks)
  69. if err != nil {
  70. return values, fmt.Errorf("error getting buildpacks: %s", err)
  71. }
  72. buildContext, err := cmd.Flags().GetString(App_BuildContext)
  73. if err != nil {
  74. return values, fmt.Errorf("error getting build context: %s", err)
  75. }
  76. values = buildValues{
  77. BuildMethod: buildMethod,
  78. Dockerfile: dockerfile,
  79. Builder: builder,
  80. Buildpacks: buildpacks,
  81. BuildContext: buildContext,
  82. }
  83. return values, nil
  84. }