mirror of https://github.com/minio/minio.git
				
				
				
			
		
			
				
	
	
		
			73 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
| /*
 | |
|  * Minio Cloud Storage, (C) 2016,2017 Minio, Inc.
 | |
|  *
 | |
|  * 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.
 | |
|  */
 | |
| 
 | |
| /*
 | |
|  * 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
 | |
|  */
 | |
| 
 | |
| package main // import "github.com/minio/minio"
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"os"
 | |
| 	"runtime"
 | |
| 
 | |
| 	version "github.com/hashicorp/go-version"
 | |
| 	"github.com/minio/mc/pkg/console"
 | |
| 	minio "github.com/minio/minio/cmd"
 | |
| 
 | |
| 	// Import gateway
 | |
| 	_ "github.com/minio/minio/cmd/gateway"
 | |
| )
 | |
| 
 | |
| const (
 | |
| 	// Minio requires at least Go v1.9.4
 | |
| 	minGoVersion        = "1.9.4"
 | |
| 	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) {
 | |
| 		return fmt.Errorf("Minio is not compiled by Go %s.  Please recompile accordingly",
 | |
| 			goVersionConstraint)
 | |
| 	}
 | |
| 
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func main() {
 | |
| 	// 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 {
 | |
| 		console.Fatalln("Go runtime version check failed.", err)
 | |
| 	}
 | |
| 
 | |
| 	minio.Main(os.Args)
 | |
| }
 |