Поддельная go среда из сценария оболочки - PullRequest
0 голосов
/ 24 января 2020

Я использую Ultimate с плагином goland и dep. Я раньше тоже работал на улице GOPATH. Обычно без идеи я использую сценарий оболочки и Makefile для сборки проекта и был до сих пор доволен этим. Идея с dep интеграцией, конечно, заставляет меня работать внутри GOPATH/src. Есть ли способ настроить эту среду IDE для запуска сценария оболочки, который будет подделывать среду проекта, устанавливать GOPATH, GOBIN и делать счастливым dep и избавляться от ... is not within a known GOPATH/src и «отсутствующего» импорта.

Я пытался запустить его через ./build/env.sh idea ., но все еще не получен импорт и ... is not within a known GOPATH/src. Пытался поиграть и с настройками проекта, кажется, ничто не может удовлетворить это gep.

env. sh

#!/bin/sh

set -e

if [ ! -f "build/env.sh" ]; then
    echo "$0 must be run from the root of the repository."
    exit 2
fi

project="proj"
repositoryRoot="domain.com/username"

# Create fake Go workspace if it doesn't exist yet.
workspace="$PWD/build/_workspace"
root="$PWD"
dir="$workspace/src/$repositoryRoot"
if [ ! -L "$dir/$project" ]; then
    mkdir -p "$dir"
    cd "$dir"
    ln -s ../../../../../. $project
    cd "$root"
fi

# Set up the environment to use the workspace.
# Also add Godeps workspace so we build using canned dependencies.
GOPATH="$workspace"
GOBIN="$PWD/build/bin"

# Run the command inside the workspace.
cd "$dir/$project"
PWD="$dir/$project"

# Launch the arguments with the configured environment.
exec "$@"

Makefile

.PHONY: all test clean

GOBIN = build/bin

all:
    build/env.sh go get github.com/golang/dep/cmd/dep
    build/env.sh $(GOBIN)/dep ensure
    build/env.sh go build -v -o $(GOBIN)/proj

1 Ответ

0 голосов
/ 24 января 2020

Короткий ответ - нет, вы не можете. GoLand / IntelliJ IDEA Ultimate с плагином Go не может работать желаемым образом. Они уважают макет Go Workspace, и вы должны структурировать свой код следующим образом.

Если вы переключитесь с dep на Go Модули, то вы сможете создать свой проект где угодно, а не имеют те же ограничения, что и режим GOPATH. Здесь вы можете узнать больше о работе с Go Модулями .

...