@@ -56,7 +56,7 @@ func loadOrCreateInstance(cmd *cobra.Command, args []string) (*store.Instance, e
56
56
const yBytesLimit = 4 * 1024 * 1024 // 4MiB
57
57
58
58
if argSeemsHTTPURL (arg ) {
59
- instName , err = instNameFromHTTPURL (arg )
59
+ instName , err = instNameFromURL (arg )
60
60
if err != nil {
61
61
return nil , err
62
62
}
@@ -70,6 +70,21 @@ func loadOrCreateInstance(cmd *cobra.Command, args []string) (*store.Instance, e
70
70
if err != nil {
71
71
return nil , err
72
72
}
73
+ } else if argSeemsFileURL (arg ) {
74
+ instName , err = instNameFromURL (arg )
75
+ if err != nil {
76
+ return nil , err
77
+ }
78
+ logrus .Debugf ("interpreting argument %q as a file url for instance %q" , arg , instName )
79
+ r , err := os .Open (strings .TrimPrefix (arg , "file://" ))
80
+ if err != nil {
81
+ return nil , err
82
+ }
83
+ defer r .Close ()
84
+ yBytes , err = readAtMaximum (r , yBytesLimit )
85
+ if err != nil {
86
+ return nil , err
87
+ }
73
88
} else if argSeemsYAMLPath (arg ) {
74
89
instName , err = instNameFromYAMLPath (arg )
75
90
if err != nil {
@@ -276,6 +291,14 @@ func argSeemsHTTPURL(arg string) bool {
276
291
return true
277
292
}
278
293
294
+ func argSeemsFileURL (arg string ) bool {
295
+ u , err := url .Parse (arg )
296
+ if err != nil {
297
+ return false
298
+ }
299
+ return u .Scheme == "file"
300
+ }
301
+
279
302
func argSeemsYAMLPath (arg string ) bool {
280
303
if strings .Contains (arg , "/" ) {
281
304
return true
@@ -284,8 +307,8 @@ func argSeemsYAMLPath(arg string) bool {
284
307
return strings .HasSuffix (lower , ".yml" ) || strings .HasSuffix (lower , ".yaml" )
285
308
}
286
309
287
- func instNameFromHTTPURL ( httpURL string ) (string , error ) {
288
- u , err := url .Parse (httpURL )
310
+ func instNameFromURL ( urlStr string ) (string , error ) {
311
+ u , err := url .Parse (urlStr )
289
312
if err != nil {
290
313
return "" , err
291
314
}
0 commit comments