2016-09-01 06:50:31 -04:00
/ *
2018-06-05 23:55:12 -04:00
* M inio Cloud Storage , ( C ) 2016 , 2017 , 2018 Minio , Inc .
2016-09-01 06:50:31 -04:00
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an "AS IS" BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
* /
2016-11-16 19:23:32 -05:00
/ *
* Below main package has canonical imports for ' go get ' and ' go build '
* to work with all other clones of github . com / minio / minio repository . For
* more information refer https : //golang.org/doc/go1.4#canonicalimports
* /
2016-11-04 21:25:30 -04:00
package main // import "github.com/minio/minio"
2015-01-14 14:29:04 -05:00
2017-01-26 18:22:41 -05:00
import (
2017-02-11 04:27:27 -05:00
"fmt"
2017-01-26 18:22:41 -05:00
"os"
2017-02-11 04:27:27 -05:00
"runtime"
2017-01-26 18:22:41 -05:00
2017-02-11 04:27:27 -05:00
version "github.com/hashicorp/go-version"
"github.com/minio/mc/pkg/console"
2017-01-26 18:22:41 -05:00
minio "github.com/minio/minio/cmd"
2017-12-05 20:58:09 -05:00
// Import gateway
_ "github.com/minio/minio/cmd/gateway"
2017-01-26 18:22:41 -05:00
)
2015-12-06 17:31:20 -05:00
2017-02-11 04:27:27 -05:00
const (
2018-02-08 04:03:22 -05:00
// Minio requires at least Go v1.9.4
minGoVersion = "1.9.4"
2017-02-11 04:27:27 -05:00
goVersionConstraint = ">= " + minGoVersion
)
// Check if this binary is compiled with at least minimum Go version.
func checkGoVersion ( goVersionStr string ) error {
constraint , err := version . NewConstraint ( goVersionConstraint )
if err != nil {
return fmt . Errorf ( "'%s': %s" , goVersionConstraint , err )
}
goVersion , err := version . NewVersion ( goVersionStr )
if err != nil {
return err
}
if ! constraint . Check ( goVersion ) {
2018-06-05 23:55:12 -04:00
return fmt . Errorf ( "Minio is not compiled by go %s. Minimum required version is %s, go %s release is known to have security issues. Please recompile accordingly" , goVersionConstraint , minGoVersion , runtime . Version ( ) [ 2 : ] )
2017-02-11 04:27:27 -05:00
}
return nil
}
2015-08-20 16:05:47 -04:00
func main ( ) {
2017-02-11 04:27:27 -05:00
// When `go get` is used minimum Go version check is not triggered but it would have compiled it successfully.
// However such binary will fail at runtime, hence we also check Go version at runtime.
if err := checkGoVersion ( runtime . Version ( ) [ 2 : ] ) ; err != nil {
2018-06-05 23:55:12 -04:00
console . Errorln ( err )
2017-02-11 04:27:27 -05:00
}
2017-03-06 22:35:26 -05:00
minio . Main ( os . Args )
2015-01-14 14:29:04 -05:00
}