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.
 
 
 

60 lines
1.0 KiB

  1. // Copyright 2013 The Go Authors. All rights reserved.
  2. //
  3. // Use of this source code is governed by a BSD-style
  4. // license that can be found in the LICENSE file or at
  5. // https://developers.google.com/open-source/licenses/bsd.
  6. package main
  7. import (
  8. "fmt"
  9. "log"
  10. "os"
  11. "github.com/golang/gddo/database"
  12. "github.com/golang/gddo/gosrc"
  13. )
  14. var dangleCommand = &command{
  15. name: "dangle",
  16. run: dangle,
  17. usage: "dangle",
  18. }
  19. func dangle(c *command) {
  20. if len(c.flag.Args()) != 0 {
  21. c.printUsage()
  22. os.Exit(1)
  23. }
  24. db, err := database.New()
  25. if err != nil {
  26. log.Fatal(err)
  27. }
  28. m := make(map[string]int)
  29. err = db.Do(func(pi *database.PackageInfo) error {
  30. m[pi.PDoc.ImportPath] |= 1
  31. for _, p := range pi.PDoc.Imports {
  32. if gosrc.IsValidPath(p) {
  33. m[p] |= 2
  34. }
  35. }
  36. for _, p := range pi.PDoc.TestImports {
  37. if gosrc.IsValidPath(p) {
  38. m[p] |= 2
  39. }
  40. }
  41. for _, p := range pi.PDoc.XTestImports {
  42. if gosrc.IsValidPath(p) {
  43. m[p] |= 2
  44. }
  45. }
  46. return nil
  47. })
  48. for p, v := range m {
  49. if v == 2 {
  50. fmt.Println(p)
  51. }
  52. }
  53. }