You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

97 lines
2.2 KiB

// Copyright (c) 2013 GPMGo Members. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package main
import (
"fmt"
"runtime"
"strings"
"github.com/GPMGo/gopm/doc"
"github.com/GPMGo/gopm/utils"
)
var cmdSearch = &Command{
UsageLine: "search [search flags] <keyword>",
}
func init() {
cmdSearch.Run = runSearch
}
// printSearchPrompt prints prompt information to users to
// let them know what's going on.
func printSearchPrompt(flag string) {
switch flag {
}
}
func runSearch(cmd *Command, args []string) {
// Check flags.
num := checkFlags(cmd.Flags, config.AutoEnable.Search, args, printSearchPrompt)
if num == -1 {
return
}
args = args[num:]
// Check length of arguments.
if len(args) < 1 {
fmt.Printf(fmt.Sprintf("%s\n", promptMsg["NoKeyword"]))
return
}
// Search from server, and list results.
results, err := doc.HttpGetBytes(doc.HttpClient, "http://gowalker.org/search?raw=true&q="+args[0], nil)
if err != nil {
utils.ColorPrint(fmt.Sprintf("[ERROR] runSearch -> [ %s ]\n", err))
return
}
resultStr := string(results)
isWindws := runtime.GOOS == "windows"
if !isWindws {
// Set color highlight.
resultStr = strings.Replace(resultStr, args[0],
fmt.Sprintf(utils.PureStartColor, utils.Yellow)+args[0]+utils.EndColor, -1)
}
pkgsCache := make(map[string]string)
paths := utils.GetGOPATH()
pkgs := strings.Split(resultStr, "|||")
for _, p := range pkgs {
i := strings.Index(p, "$")
if i > -1 {
// Do not display standard library.
if !utils.IsGoRepoPath(p[:i]) {
pkgsCache[utils.GetProjectPath(p[:i])] = p[i+1:]
}
}
}
for k, v := range pkgsCache {
fmt.Print("-> " + k) // Package import path.
// Check if has been installed.
for _, path := range paths {
if checkIsExistWithVCS(path + "/src/" + k + "/") {
installStr := " [Installed]"
if !isWindws {
installStr = strings.Replace(installStr, "[",
fmt.Sprintf("[\033[%dm", utils.Green), 1)
installStr = strings.Replace(installStr, "]",
utils.EndColor+"]", 1)
}
fmt.Print(installStr)
break
}
}
fmt.Print("\n")
if len(v) > 0 {
fmt.Println(" " + v) // Synopsis。
}
}
}