@@ -373,26 +373,60 @@ func GetCommands(logger utils.Log) []*clitool.Command {
373373 UsageText : "bi poetry" ,
374374 Flags : flags ,
375375 Action : func (context * clitool.Context ) (err error ) {
376- // Use Poetry implementation for proper dependency collection
377- config := flexpack.PoetryConfig {
378- WorkingDirectory : "." ,
379- IncludeDevDependencies : false , // Can be made configurable later
376+ // Check if FlexPack implementation should be used
377+ if flexpack .IsFlexPackEnabled () {
378+ // Use Poetry FlexPack implementation for proper dependency collection
379+ config := flexpack.PoetryConfig {
380+ WorkingDirectory : "." ,
381+ IncludeDevDependencies : false , // Can be made configurable later
382+ }
383+
384+ // Create Poetry instance
385+ poetryFlex , err := flexpack .NewPoetryFlexPack (config )
386+ if err != nil {
387+ return fmt .Errorf ("failed to create Poetry instance: %w" , err )
388+ }
389+
390+ // Collect build info
391+ buildInfo , err := poetryFlex .CollectBuildInfo ("poetry-build" , "1" )
392+ if err != nil {
393+ return fmt .Errorf ("failed to collect build info: %w" , err )
394+ }
395+
396+ // Print the build info
397+ return printBuildInfo (buildInfo , context .String (formatFlag ))
380398 }
381399
382- // Create Poetry instance
383- poetryFlex , err := flexpack .NewPoetryFlexPack (config )
400+ // Use traditional build-info-go implementation
401+ service := build .NewBuildInfoService ()
402+ service .SetLogger (logger )
403+ bld , err := service .GetOrCreateBuild ("poetry-build" , "1" )
404+ if err != nil {
405+ return
406+ }
407+ defer func () {
408+ err = errors .Join (err , bld .Clean ())
409+ }()
410+ pythonModule , err := bld .AddPythonModule ("" , pythonutils .Poetry )
384411 if err != nil {
385- return fmt . Errorf ( "failed to create Poetry instance: %w" , err )
412+ return
386413 }
387-
388- // Collect build info
389- buildInfo , err := poetryFlex .CollectBuildInfo ("poetry-build" , "1" )
414+ filteredArgs := filterCliFlags (context .Args ().Slice (), flags )
415+ if len (filteredArgs ) > 0 && (filteredArgs [0 ] == "install" || filteredArgs [0 ] == "publish" ) {
416+ err = pythonModule .RunInstallAndCollectDependencies (filteredArgs [1 :])
417+ if err != nil {
418+ return
419+ }
420+ return printBuild (bld , context .String (formatFlag ))
421+ } else if len (filteredArgs ) > 0 {
422+ return exec .Command ("poetry" , filteredArgs ... ).Run ()
423+ }
424+ // If no args, just collect dependencies
425+ err = pythonModule .RunInstallAndCollectDependencies ([]string {})
390426 if err != nil {
391- return fmt . Errorf ( "failed to collect build info: %w" , err )
427+ return
392428 }
393-
394- // Print the build info
395- return printBuildInfo (buildInfo , context .String (formatFlag ))
429+ return printBuild (bld , context .String (formatFlag ))
396430 },
397431 },
398432 }
0 commit comments