@@ -60,33 +60,20 @@ func UpdateBuildpackCommand(ctx context.Context) (err error) {
6060
6161 logger .Debug ().Msgf ("identified remote: %s, %s" , codecraftersRemote .Name , codecraftersRemote .Url )
6262
63- logger .Debug ().Msg ("reading and updating codecrafters.yml file" )
64-
65- codecraftersYmlPath := filepath .Join (repoDir , "codecrafters.yml" )
63+ logger .Debug ().Msg ("fetching current buildpack from server" )
6664
67- content , err := os .ReadFile (codecraftersYmlPath )
68- if err != nil {
69- if os .IsNotExist (err ) {
70- return fmt .Errorf ("codecrafters.yml file not found in repository root" )
71- }
72- return fmt .Errorf ("failed to read codecrafters.yml: %w" , err )
73- }
74-
75- updatedContent := utils .ReplaceYAMLField (string (content ), "language_pack" , "buildpack" )
65+ codecraftersClient := utils .NewCodecraftersClient (codecraftersRemote .CodecraftersServerURL ())
7666
77- err = os . WriteFile ( codecraftersYmlPath , [] byte ( updatedContent ), 0644 )
67+ repositoryBuildpackResponse , err := codecraftersClient . FetchRepositoryBuildpack ( codecraftersRemote . CodecraftersRepositoryId () )
7868 if err != nil {
79- return fmt .Errorf ("failed to write updated codecrafters.yml: %w" , err )
69+ logger .Debug ().Err (err ).Msg ("failed to fetch repository buildpack" )
70+ return fmt .Errorf ("failed to fetch repository buildpack: %w" , err )
8071 }
8172
82- buildpackValue := utils .ExtractYAMLFieldValue (updatedContent , "buildpack" )
83- if buildpackValue == "" {
84- return fmt .Errorf ("buildpack value not found in codecrafters.yml" )
85- }
73+ currentBuildpackSlug := repositoryBuildpackResponse .Buildpack .Slug
8674
8775 logger .Debug ().Msg ("fetching latest buildpack from server" )
8876
89- codecraftersClient := utils .NewCodecraftersClient (codecraftersRemote .CodecraftersServerURL ())
9077 buildpacksResponse , err := codecraftersClient .FetchBuildpacks (codecraftersRemote .CodecraftersRepositoryId ())
9178 if err != nil {
9279 logger .Debug ().Err (err ).Msg ("failed to fetch buildpacks" )
@@ -101,14 +88,14 @@ func UpdateBuildpackCommand(ctx context.Context) (err error) {
10188 }
10289 }
10390
104- logger .Debug ().Msgf ("current buildpack: %s, latest buildpack: %s" , buildpackValue , latestBuildpack .Slug )
91+ logger .Debug ().Msgf ("current buildpack: %s, latest buildpack: %s" , currentBuildpackSlug , latestBuildpack .Slug )
10592
106- if buildpackValue == latestBuildpack .Slug {
107- fmt .Printf ("Buildpack is already up to date (%s)\n " , buildpackValue )
93+ if currentBuildpackSlug == latestBuildpack .Slug {
94+ fmt .Printf ("Buildpack is already up to date (%s)\n " , currentBuildpackSlug )
10895 return nil
10996 }
11097
111- fmt .Printf ("Current buildpack: %s\n " , buildpackValue )
98+ fmt .Printf ("Current buildpack: %s\n " , currentBuildpackSlug )
11299 fmt .Printf ("Do you want to upgrade to %s? (Press any key to proceed, CTRL-C to cancel)\n " , latestBuildpack .Slug )
113100
114101 reader := bufio .NewReader (os .Stdin )
@@ -128,13 +115,26 @@ func UpdateBuildpackCommand(ctx context.Context) (err error) {
128115 return fmt .Errorf ("update failed: %s" , updateResponse .ErrorMessage )
129116 }
130117
118+ logger .Debug ().Msg ("reading and updating codecrafters.yml file" )
119+
120+ codecraftersYmlPath := filepath .Join (repoDir , "codecrafters.yml" )
121+
122+ content , err := os .ReadFile (codecraftersYmlPath )
123+ if err != nil {
124+ if os .IsNotExist (err ) {
125+ return fmt .Errorf ("codecrafters.yml file not found in repository root" )
126+ }
127+ return fmt .Errorf ("failed to read codecrafters.yml: %w" , err )
128+ }
129+
130+ updatedContent := utils .ReplaceYAMLField (string (content ), "language_pack" , "buildpack" )
131131 updatedContent = utils .ReplaceYAMLFieldValue (updatedContent , "buildpack" , updateResponse .Buildpack .Slug )
132132
133133 err = os .WriteFile (codecraftersYmlPath , []byte (updatedContent ), 0644 )
134134 if err != nil {
135135 return fmt .Errorf ("failed to write updated codecrafters.yml: %w" , err )
136136 }
137137
138- fmt .Printf ("Updated buildpack from %s to %s\n " , buildpackValue , updateResponse .Buildpack .Slug )
138+ fmt .Printf ("Updated buildpack from %s to %s\n " , currentBuildpackSlug , updateResponse .Buildpack .Slug )
139139 return nil
140140}
0 commit comments