2016-09-01 10:50:31 +00:00
/ *
2018-06-06 03:55:12 +00:00
* Minio Cloud Storage , ( C ) 2016 , 2017 , 2018 Minio , Inc .
2016-09-01 10:50:31 +00: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-17 00:23:32 +00: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-05 01:25:30 +00:00
package main // import "github.com/minio/minio"
2015-01-14 19:29:04 +00:00
2017-01-26 23:22:41 +00:00
import (
2017-02-11 09:27:27 +00:00
"fmt"
2017-01-26 23:22:41 +00:00
"os"
2017-02-11 09:27:27 +00:00
"runtime"
2017-01-26 23:22:41 +00:00
2017-02-11 09:27:27 +00:00
version "github.com/hashicorp/go-version"
"github.com/minio/mc/pkg/console"
2017-01-26 23:22:41 +00:00
minio "github.com/minio/minio/cmd"
2017-12-06 01:58:09 +00:00
// Import gateway
_ "github.com/minio/minio/cmd/gateway"
2017-01-26 23:22:41 +00:00
)
2015-12-06 22:31:20 +00:00
2017-02-11 09:27:27 +00:00
const (
2018-02-08 09:03:22 +00:00
// Minio requires at least Go v1.9.4
minGoVersion = "1.9.4"
2017-02-11 09:27:27 +00: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-06 03:55:12 +00: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 09:27:27 +00:00
}
return nil
}
2015-08-20 20:05:47 +00:00
func main ( ) {
2017-02-11 09:27:27 +00: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-06 03:55:12 +00:00
console . Errorln ( err )
2017-02-11 09:27:27 +00:00
}
2017-03-07 03:35:26 +00:00
minio . Main ( os . Args )
2015-01-14 19:29:04 +00:00
}