@@ -67,21 +67,39 @@ func List() ([]Info, error) {
6767}
6868
6969func Load (idOrFile string ) (* Framework , error ) {
70- if info , err := os .Stat (idOrFile ); err == nil {
70+ if isLikelyPath (idOrFile ) {
71+ info , err := os .Stat (idOrFile )
72+ if err != nil {
73+ return nil , fmt .Errorf ("load framework file %s: %w" , idOrFile , err )
74+ }
7175 if info .IsDir () {
72- if isLikelyPath (idOrFile ) {
73- return nil , fmt .Errorf ("load framework file %s: path is a directory" , idOrFile )
74- }
75- } else {
76- return LoadFile (idOrFile )
76+ return nil , fmt .Errorf ("load framework file %s: path is a directory" , idOrFile )
7777 }
78- } else if isLikelyPath (idOrFile ) {
78+ return LoadFile (idOrFile )
79+ }
80+
81+ embedded , embeddedErr := loadEmbedded (idOrFile )
82+ if embeddedErr == nil {
83+ return embedded , nil
84+ }
85+
86+ info , err := os .Stat (idOrFile )
87+ if err == nil {
88+ if info .IsDir () {
89+ return nil , fmt .Errorf ("load framework file %s: path is a directory" , idOrFile )
90+ }
91+ return LoadFile (idOrFile )
92+ }
93+ if ! os .IsNotExist (err ) {
7994 return nil , fmt .Errorf ("load framework file %s: %w" , idOrFile , err )
8095 }
96+ return nil , embeddedErr
97+ }
8198
99+ func loadEmbedded (idOrFile string ) (* Framework , error ) {
82100 name := idOrFile
83101 if ! strings .HasSuffix (name , ".yaml" ) {
84- name = name + ".yaml"
102+ name += ".yaml"
85103 }
86104 raw , err := frameworkFS .ReadFile (name )
87105 if err != nil {
@@ -91,6 +109,7 @@ func Load(idOrFile string) (*Framework, error) {
91109}
92110
93111func LoadFile (path string ) (* Framework , error ) {
112+ // #nosec G304 -- path is intentionally caller-provided for runtime custom framework loading.
94113 raw , err := os .ReadFile (path )
95114 if err != nil {
96115 return nil , fmt .Errorf ("load framework file %s: %w" , path , err )
0 commit comments