1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-06-29 02:35:23 +00:00

Merge pull request #260 from Loyalsoldier/refine-errorgen

Errorgen: support to run outside of GOPATH
This commit is contained in:
Loyalsoldier 2020-10-04 13:15:05 +08:00 committed by GitHub
commit 9a452bc1a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
63 changed files with 111 additions and 98 deletions

View File

@ -2,7 +2,7 @@
package commander package commander
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"context" "context"

View File

@ -2,7 +2,7 @@
package dispatcher package dispatcher
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"context" "context"

View File

@ -2,4 +2,4 @@
package dispatcher package dispatcher
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -1,4 +1,4 @@
// Package dns is an implementation of core.DNS feature. // Package dns is an implementation of core.DNS feature.
package dns package dns
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -2,7 +2,7 @@
package dns package dns
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"context" "context"

View File

@ -2,7 +2,7 @@
package command package command
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"context" "context"

View File

@ -2,7 +2,7 @@
package log package log
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"context" "context"

View File

@ -1,4 +1,4 @@
// Package policy is an implementation of policy.Manager feature. // Package policy is an implementation of policy.Manager feature.
package policy package policy
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -1,3 +1,3 @@
package command package command
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -1,6 +1,6 @@
package inbound package inbound
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"context" "context"

View File

@ -1,6 +1,6 @@
package outbound package outbound
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"context" "context"

View File

@ -2,7 +2,7 @@
package reverse package reverse
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"context" "context"

View File

@ -2,7 +2,7 @@
package command package command
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"context" "context"

View File

@ -2,7 +2,7 @@
package router package router
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"context" "context"

View File

@ -2,7 +2,7 @@
package command package command
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"context" "context"

View File

@ -2,7 +2,7 @@
package stats package stats
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"context" "context"

View File

@ -1,4 +1,4 @@
// Package buf provides a light-weight memory allocation mechanism. // Package buf provides a light-weight memory allocation mechanism.
package buf // import "v2ray.com/core/common/buf" package buf // import "v2ray.com/core/common/buf"
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -13,7 +13,7 @@ import (
"v2ray.com/core/common/errors" "v2ray.com/core/common/errors"
) )
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
var ( var (
// ErrNoClue is for the situation that existing information is not enough to make a decision. For example, Router may return this error when there is no suitable route. // ErrNoClue is for the situation that existing information is not enough to make a decision. For example, Router may return this error when there is no suitable route.
@ -126,25 +126,33 @@ func GetGOPATH() string {
// GetModuleName returns the value of module in `go.mod` file. // GetModuleName returns the value of module in `go.mod` file.
func GetModuleName(pathToProjectRoot string) (string, error) { func GetModuleName(pathToProjectRoot string) (string, error) {
gomodPath := filepath.Join(pathToProjectRoot, "go.mod")
gomodBytes, err := ioutil.ReadFile(gomodPath)
if err != nil {
return "", err
}
gomodContent := string(gomodBytes)
moduleIdx := strings.Index(gomodContent, "module ")
newLineIdx := strings.Index(gomodContent, "\n")
var moduleName string var moduleName string
if moduleIdx >= 0 { loopPath := pathToProjectRoot
if newLineIdx >= 0 { for {
moduleName = strings.TrimSpace(gomodContent[moduleIdx+6 : newLineIdx]) if idx := strings.LastIndex(loopPath, string(filepath.Separator)); idx >= 0 {
moduleName = strings.TrimSuffix(moduleName, "\r") gomodPath := filepath.Join(loopPath, "go.mod")
} else { gomodBytes, err := ioutil.ReadFile(gomodPath)
moduleName = strings.TrimSpace(gomodContent[moduleIdx+6:]) if err != nil {
loopPath = loopPath[:idx]
continue
}
gomodContent := string(gomodBytes)
moduleIdx := strings.Index(gomodContent, "module ")
newLineIdx := strings.Index(gomodContent, "\n")
if moduleIdx >= 0 {
if newLineIdx >= 0 {
moduleName = strings.TrimSpace(gomodContent[moduleIdx+6 : newLineIdx])
moduleName = strings.TrimSuffix(moduleName, "\r")
} else {
moduleName = strings.TrimSpace(gomodContent[moduleIdx+6:])
}
return moduleName, nil
}
return "", fmt.Errorf("can not get module path in `%s`", gomodPath)
} }
} else { break
return "", fmt.Errorf("can not get module path in `%s`", gomodPath)
} }
return moduleName, nil return moduleName, fmt.Errorf("no `go.mod` file in every parent directory of `%s`", pathToProjectRoot)
} }

View File

@ -1,4 +1,4 @@
// Package crypto provides common crypto libraries for V2Ray. // Package crypto provides common crypto libraries for V2Ray.
package crypto // import "v2ray.com/core/common/crypto" package crypto // import "v2ray.com/core/common/crypto"
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -5,35 +5,41 @@ import (
"log" "log"
"os" "os"
"path/filepath" "path/filepath"
"v2ray.com/core/common"
) )
func getCurrentPkg() (string, error) {
path, err := os.Getwd()
if err != nil {
return "", err
}
return filepath.Base(path), nil
}
func main() { func main() {
pkg, err := getCurrentPkg() pwd, err := os.Getwd()
if err != nil { if err != nil {
log.Fatal("Failed to get current package: ", err.Error()) fmt.Println("can not get current working directory")
return os.Exit(1)
}
pkg := filepath.Base(pwd)
if pkg == "v2ray-core" {
pkg = "core"
}
moduleName, gmnErr := common.GetModuleName(pwd)
if gmnErr != nil {
fmt.Println("can not get module path", gmnErr)
os.Exit(1)
} }
file, err := os.OpenFile("errors.generated.go", os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0644) file, err := os.OpenFile("errors.generated.go", os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0644)
if err != nil { if err != nil {
log.Fatalf("Failed to generate errors.generated.go: %v", err) log.Fatalf("Failed to generate errors.generated.go: %v", err)
return os.Exit(1)
} }
defer file.Close()
fmt.Fprintln(file, "package", pkg) fmt.Fprintln(file, "package", pkg)
fmt.Fprintln(file, "") fmt.Fprintln(file, "")
fmt.Fprintln(file, "import \"v2ray.com/core/common/errors\"") fmt.Fprintln(file, "import \""+moduleName+"/common/errors\"")
fmt.Fprintln(file, "") fmt.Fprintln(file, "")
fmt.Fprintln(file, "type errPathObjHolder struct {}") fmt.Fprintln(file, "type errPathObjHolder struct{}")
fmt.Fprintln(file, "func newError(values ...interface{}) *errors.Error { return errors.New(values...).WithPathObj(errPathObjHolder{}) }") fmt.Fprintln(file, "")
fmt.Fprintln(file, "func newError(values ...interface{}) *errors.Error {")
file.Close() fmt.Fprintln(file, " return errors.New(values...).WithPathObj(errPathObjHolder{})")
fmt.Fprintln(file, "}")
} }

View File

@ -1,3 +1,3 @@
package mux package mux
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -1,4 +1,4 @@
// Package net is a drop-in replacement to Golang's net package, with some more functionalities. // Package net is a drop-in replacement to Golang's net package, with some more functionalities.
package net // import "v2ray.com/core/common/net" package net // import "v2ray.com/core/common/net"
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -10,7 +10,7 @@ import (
"v2ray.com/core/common/platform" "v2ray.com/core/common/platform"
) )
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
func Run(args []string, input io.Reader) (buf.MultiBuffer, error) { func Run(args []string, input io.Reader) (buf.MultiBuffer, error) {
v2ctl := platform.GetToolLocation("v2ctl") v2ctl := platform.GetToolLocation("v2ctl")

View File

@ -1,3 +1,3 @@
package protocol // import "v2ray.com/core/common/protocol" package protocol // import "v2ray.com/core/common/protocol"
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -15,7 +15,7 @@ import (
"v2ray.com/core/common" "v2ray.com/core/common"
) )
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
type Certificate struct { type Certificate struct {
// Cerificate in ASN.1 DER format // Cerificate in ASN.1 DER format

View File

@ -1,6 +1,6 @@
package retry // import "v2ray.com/core/common/retry" package retry // import "v2ray.com/core/common/retry"
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"time" "time"

View File

@ -9,8 +9,7 @@
// connections. // connections.
package core package core
//go:generate go install "v2ray.com/core/common/errors/errorgen" //go:generate go run v2ray.com/core/common/errors/errorgen
//go:generate errorgen
import ( import (
"runtime" "runtime"

View File

@ -2,7 +2,7 @@ package features
import "v2ray.com/core/common" import "v2ray.com/core/common"
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
// Feature is the interface for V2Ray features. All features must implement this interface. // Feature is the interface for V2Ray features. All features must implement this interface.
// All existing features have an implementation in app directory. These features can be replaced by third-party ones. // All existing features have an implementation in app directory. These features can be replaced by third-party ones.

View File

@ -1,6 +1,6 @@
package dns package dns
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"v2ray.com/core/common/net" "v2ray.com/core/common/net"

View File

@ -1,6 +1,6 @@
package stats package stats
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"context" "context"

View File

@ -1,6 +1,6 @@
package command package command
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"os" "os"

View File

@ -1,3 +1,3 @@
package conf package conf
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -1,3 +1,3 @@
package serial package serial
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -1,3 +1,3 @@
package control package control
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -1,6 +1,6 @@
package external package external
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"bytes" "bytes"

View File

@ -1,6 +1,6 @@
package json package json
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"io" "io"

View File

@ -1,6 +1,6 @@
package main package main
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"flag" "flag"

View File

@ -4,7 +4,7 @@
package blackhole package blackhole
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"context" "context"

View File

@ -2,7 +2,7 @@
package dokodemo package dokodemo
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"context" "context"

View File

@ -2,7 +2,7 @@
package freedom package freedom
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"context" "context"

View File

@ -1,3 +1,3 @@
package http package http
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -1,3 +1,3 @@
package mtproto package mtproto
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -5,4 +5,4 @@
// R.I.P Shadowsocks // R.I.P Shadowsocks
package shadowsocks package shadowsocks
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -1,4 +1,4 @@
// Package socks provides implements of Socks protocol 4, 4a and 5. // Package socks provides implements of Socks protocol 4, 4a and 5.
package socks package socks
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -2,7 +2,7 @@
package encoding package encoding
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"io" "io"

View File

@ -2,7 +2,7 @@
package inbound package inbound
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"context" "context"

View File

@ -2,7 +2,7 @@
package outbound package outbound
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"context" "context"

View File

@ -5,7 +5,7 @@
// clients with 'socks' for proxying. // clients with 'socks' for proxying.
package vless package vless
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
const ( const (
XRO = "xtls-rprx-origin" XRO = "xtls-rprx-origin"

View File

@ -5,7 +5,7 @@ import (
"v2ray.com/core/common/protocol" "v2ray.com/core/common/protocol"
) )
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
const ( const (
Version = byte(1) Version = byte(1)

View File

@ -2,7 +2,7 @@
package inbound package inbound
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"context" "context"

View File

@ -2,7 +2,7 @@
package outbound package outbound
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"context" "context"

View File

@ -5,4 +5,4 @@
// clients with 'socks' for proxying. // clients with 'socks' for proxying.
package vmess package vmess
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -1,3 +1,3 @@
package domainsocket package domainsocket
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -1,6 +1,6 @@
package http package http
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
import ( import (
"bufio" "bufio"

View File

@ -1,3 +1,3 @@
package http package http
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -1,3 +1,3 @@
package internet package internet
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -5,4 +5,4 @@
// xtaci@github for translating to Golang // xtaci@github for translating to Golang
package kcp package kcp
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -7,7 +7,7 @@ import (
"v2ray.com/core/transport/internet" "v2ray.com/core/transport/internet"
) )
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
// Here is some modification needs to be done before update quic vendor. // Here is some modification needs to be done before update quic vendor.
// * use bytespool in buffer_pool.go // * use bytespool in buffer_pool.go

View File

@ -1,3 +1,3 @@
package tcp package tcp
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -9,7 +9,7 @@ import (
"v2ray.com/core/common/net" "v2ray.com/core/common/net"
) )
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
var ( var (
_ buf.Writer = (*Conn)(nil) _ buf.Writer = (*Conn)(nil)

View File

@ -1,5 +1,5 @@
package udp package udp
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
const protocolName = "udp" const protocolName = "udp"

View File

@ -4,4 +4,4 @@ Websocket transport implements an HTTP(S) compliable, surveillance proof transpo
*/ */
package websocket package websocket
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen

View File

@ -9,7 +9,7 @@ import (
"v2ray.com/core/common/net" "v2ray.com/core/common/net"
) )
//go:generate errorgen //go:generate go run v2ray.com/core/common/errors/errorgen
var ( var (
_ buf.Writer = (*Conn)(nil) _ buf.Writer = (*Conn)(nil)