mirror of
				https://github.com/beego/bee.git
				synced 2025-11-03 23:03:27 +00:00 
			
		
		
		
	bee add rundocs
This commit is contained in:
		
							
								
								
									
										3
									
								
								bee.go
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								bee.go
									
									
									
									
									
								
							@@ -25,7 +25,7 @@ import (
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const version = "1.1.0"
 | 
			
		||||
const version = "1.1.1"
 | 
			
		||||
 | 
			
		||||
type Command struct {
 | 
			
		||||
	// Run runs the command.
 | 
			
		||||
@@ -82,6 +82,7 @@ var commands = []*Command{
 | 
			
		||||
	cmdBale,
 | 
			
		||||
	cmdVersion,
 | 
			
		||||
	cmdGenerate,
 | 
			
		||||
	cmdRundocs,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										14
									
								
								g.go
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								g.go
									
									
									
									
									
								
							@@ -1,3 +1,17 @@
 | 
			
		||||
// Copyright 2013 bee authors
 | 
			
		||||
//
 | 
			
		||||
// 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.
 | 
			
		||||
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import "os"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										14
									
								
								g_docs.go
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								g_docs.go
									
									
									
									
									
								
							@@ -1,3 +1,17 @@
 | 
			
		||||
// Copyright 2013 bee authors
 | 
			
		||||
//
 | 
			
		||||
// 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.
 | 
			
		||||
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										140
									
								
								rundocs.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										140
									
								
								rundocs.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,140 @@
 | 
			
		||||
// Copyright 2013 bee authors
 | 
			
		||||
//
 | 
			
		||||
// 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.
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"archive/zip"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
	"log"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"os"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var cmdRundocs = &Command{
 | 
			
		||||
	UsageLine: "rundocs [-isDownload=true] [-docport=8888]",
 | 
			
		||||
	Short:     "rundocs will run the docs server,default is 8089",
 | 
			
		||||
	Long: `
 | 
			
		||||
-d meaning will download the docs file from github
 | 
			
		||||
-p meaning server the Server on which port, default is 8089
 | 
			
		||||
 | 
			
		||||
`,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	swaggerlink = "https://github.com/beego/swagger/archive/v1.zip"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type docValue string
 | 
			
		||||
 | 
			
		||||
func (d *docValue) String() string {
 | 
			
		||||
	return fmt.Sprint(*d)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (d *docValue) Set(value string) error {
 | 
			
		||||
	*d = docValue(value)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var isDownload docValue
 | 
			
		||||
var docport docValue
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	cmdRundocs.Run = runDocs
 | 
			
		||||
	cmdRundocs.Flag.Var(&isDownload, "isDownload", "weather download the Swagger Docs")
 | 
			
		||||
	cmdRundocs.Flag.Var(&docport, "docport", "doc server port")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func runDocs(cmd *Command, args []string) {
 | 
			
		||||
	if isDownload == "true" {
 | 
			
		||||
		downloadFromUrl(swaggerlink, "swagger.zip")
 | 
			
		||||
		err := unzipAndDelete("swagger.zip", "swagger")
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			fmt.Println("has err exet unzipAndDelete", err)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if docport == "" {
 | 
			
		||||
		docport = "8089"
 | 
			
		||||
	}
 | 
			
		||||
	fmt.Println("start the docs server on: http://127.0.0.1:" + docport)
 | 
			
		||||
	log.Fatal(http.ListenAndServe(":"+string(docport), http.FileServer(http.Dir("swagger"))))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func downloadFromUrl(url, fileName string) {
 | 
			
		||||
	fmt.Println("Downloading", url, "to", fileName)
 | 
			
		||||
 | 
			
		||||
	output, err := os.Create(fileName)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Println("Error while creating", fileName, "-", err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	defer output.Close()
 | 
			
		||||
 | 
			
		||||
	response, err := http.Get(url)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Println("Error while downloading", url, "-", err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	defer response.Body.Close()
 | 
			
		||||
 | 
			
		||||
	n, err := io.Copy(output, response.Body)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Println("Error while downloading", url, "-", err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fmt.Println(n, "bytes downloaded.")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func unzipAndDelete(src, dest string) error {
 | 
			
		||||
	fmt.Println("start to unzip file from " + src + " to " + dest)
 | 
			
		||||
	r, err := zip.OpenReader(src)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	defer r.Close()
 | 
			
		||||
 | 
			
		||||
	for _, f := range r.File {
 | 
			
		||||
		rc, err := f.Open()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		defer rc.Close()
 | 
			
		||||
 | 
			
		||||
		path := filepath.Join(dest, f.Name)
 | 
			
		||||
		if f.FileInfo().IsDir() {
 | 
			
		||||
			os.MkdirAll(path, f.Mode())
 | 
			
		||||
		} else {
 | 
			
		||||
			f, err := os.OpenFile(
 | 
			
		||||
				path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode())
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			defer f.Close()
 | 
			
		||||
 | 
			
		||||
			_, err = io.Copy(f, rc)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fmt.Println("Start delete src file " + src)
 | 
			
		||||
	err = os.RemoveAll(src)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user