Adds a local fork of this package for use in the classic builder.
Code was taken at commit [d33d46d01656e1d9ee26743f0c0d7779f685dd4e][1].
Migration was done using the following steps:
# install filter-repo (https://github.com/newren/git-filter-repo/blob/main/INSTALL.md)
brew install git-filter-repo
# create a temporary clone of docker
cd ~/Projects
git clone https://github.com/docker/docker.git build_context_temp
cd build_context_temp
# commit taken from
git rev-parse --verify HEAD
d33d46d01656e1d9ee26743f0c0d7779f685dd4e
git filter-repo --analyze
# remove all code, except for the remotecontext packages, and move to build/internal docs and previous locations of it
git filter-repo \
--path 'builder/remotecontext/git' \
--path 'builder/remotecontext/urlutil' \
--path-rename builder/remotecontext:cli/command/image/build/internal
# go to the target repository
cd ~/go/src/github.com/docker/cli
# create a branch to work with
git checkout -b fork_remotecontext
# add the temporary repository as an upstream and make sure it's up-to-date
git remote add build_context_temp ~/Projects/build_context_temp
git fetch build_context_temp
# merge the upstream code
git merge --allow-unrelated-histories --signoff -S build_context_temp/master
[1]: https://github.com/docker/docker/d33d46d01656e1d9ee26743f0c0d7779f685dd4e
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
40 lines
1.3 KiB
Go
40 lines
1.3 KiB
Go
package build
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/docker/cli/cli/command/image/build/internal/urlutil"
|
|
)
|
|
|
|
// ContextType describes the type (source) of build-context specified.
|
|
type ContextType string
|
|
|
|
const (
|
|
ContextTypeStdin ContextType = "stdin" // ContextTypeStdin indicates that the build-context is a TAR archive passed through STDIN.
|
|
ContextTypeLocal ContextType = "local" // ContextTypeLocal indicates that the build-context is a local directory.
|
|
ContextTypeRemote ContextType = "remote" // ContextTypeRemote indicates that the build-context is a remote URL.
|
|
ContextTypeGit ContextType = "git" // ContextTypeGit indicates that the build-context is a GIT URL.
|
|
)
|
|
|
|
// DetectContextType detects the type (source) of the build-context.
|
|
func DetectContextType(specifiedContext string) (ContextType, error) {
|
|
switch {
|
|
case specifiedContext == "-":
|
|
return ContextTypeStdin, nil
|
|
case isLocalDir(specifiedContext):
|
|
return ContextTypeLocal, nil
|
|
case urlutil.IsGitURL(specifiedContext):
|
|
return ContextTypeGit, nil
|
|
case urlutil.IsURL(specifiedContext):
|
|
return ContextTypeRemote, nil
|
|
default:
|
|
return "", fmt.Errorf("unable to prepare context: path %q not found", specifiedContext)
|
|
}
|
|
}
|
|
|
|
func isLocalDir(c string) bool {
|
|
_, err := os.Stat(c)
|
|
return err == nil
|
|
}
|