mirror of
				https://github.com/beego/bee.git
				synced 2025-11-04 09:23:24 +00:00 
			
		
		
		
	bee add rundocs
This commit is contained in:
		
							
								
								
									
										3
									
								
								bee.go
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								bee.go
									
									
									
									
									
								
							@@ -25,7 +25,7 @@ import (
 | 
				
			|||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const version = "1.1.0"
 | 
					const version = "1.1.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Command struct {
 | 
					type Command struct {
 | 
				
			||||||
	// Run runs the command.
 | 
						// Run runs the command.
 | 
				
			||||||
@@ -82,6 +82,7 @@ var commands = []*Command{
 | 
				
			|||||||
	cmdBale,
 | 
						cmdBale,
 | 
				
			||||||
	cmdVersion,
 | 
						cmdVersion,
 | 
				
			||||||
	cmdGenerate,
 | 
						cmdGenerate,
 | 
				
			||||||
 | 
						cmdRundocs,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func main() {
 | 
					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
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import "os"
 | 
					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
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					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