-
Notifications
You must be signed in to change notification settings - Fork 88
Cocoapods config for Artifactory repositories #1274
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from all commits
Commits
Show all changes
110 commits
Select commit
Hold shift + click to select a range
4d20901
Upgrade jfrog-cli-core to 2.31.1 (#739)
omerzi 9b4006e
Added the Frogbot badge to the README (#745)
eyalbe4 1381a8b
Merge remote-tracking branch 'upstream/dev' into mastercore
sverdlov93 f8e3a22
Merge remote-tracking branch 'upstream/dev' into mastercore
sverdlov93 4f7259c
Merge remote-tracking branch 'origin/dev'
omerzi 932793d
Merge remote-tracking branch 'origin/dev'
omerzi 2ddeac0
Merge branch 'dev'
eyalbe4 11ce1e8
Merge branch 'dev' into master
talarian1 521d832
Merge branch 'dev'
talarian1 f470da2
Merge remote-tracking branch 'origin/dev'
talarian1 2c85766
Merge remote-tracking branch 'origin/dev'
omerzi ae0b91d
Merge remote-tracking branch 'origin/dev'
talarian1 5a53932
Merge remote-tracking branch 'upstream/dev'
yahavi c07d9fb
Merge remote-tracking branch 'upstream/dev'
yahavi 7040b6a
Merge remote-tracking branch 'origin/dev'
talarian1 e91d430
Merge branch 'dev'
eyalbe4 2680fdb
Upgrade jfrog-cli-core to 2.34.6
talarian1 b4ddac8
Merge branch 'master' into dev
eyalbe4 6dca5e7
Merge branch 'dev'
eyalbe4 9fa7b09
Merge remote-tracking branch 'origin/dev'
talarian1 a46fb01
Merge branch 'dev'
yahavi 94469f4
Merge branch 'dev'
eyalbe4 b330d82
Merge branch 'dev'
eyalbe4 7141b4c
Merge branch 'master' into dev
omerzi ec17933
Merge branch 'dev'
eyalbe4 83ced5a
Merge branch 'dev'
RobiNino 9e57a49
Merge branch 'dev'
yahavi fe4c82a
Merge branch 'master' into dev
omerzi 47a0f3f
Upgrade jfrog-cli-core to 2.38.0
omerzi 40e7d2d
Remove Secrets Scanner Sacanners Names config (#862)
talarian1 0be3aae
Upgrade jfrog-cli-core to 2.39.0
omerzi 0a4b112
Merge remote-tracking branch 'origin/dev'
omerzi 64ee611
Merge remote-tracking branch 'origin/dev'
omerzi d32579e
Merge remote-tracking branch 'origin/dev'
omerzi f79600c
Merge branch 'dev'
eyalbe4 db385fe
Merge branch 'dev'
eyalbe4 7f8edc8
Merge remote-tracking branch 'origin/dev'
omerzi 85f562e
Merge branch 'dev'
eyalbe4 0b5d33b
Merge remote-tracking branch 'origin/dev'
omerzi ab61366
Merge branch 'dev'
eyalbe4 b41d4f0
Merge branch 'dev'
attiasas a02bfdf
Merge branch 'dev'
attiasas 4bc9682
Merge branch 'dev'
eyalbe4 0a13b66
Merge remote-tracking branch 'upstream/dev'
sverdlov93 bab627c
Merge branch 'master' of https://github.com/jfrog/jfrog-cli-core
sverdlov93 3042a43
Merge remote-tracking branch 'upstream/dev'
sverdlov93 6b129f1
Merge remote-tracking branch 'upstream/dev' (#955)
attiasas 6acb9a2
Merge branch 'dev'
EyalDelarea be4499c
Merge branch 'dev'
RobiNino 202e914
Merge remote-tracking branch 'origin/dev'
omerzi b39fdf4
Merge remote-tracking branch 'upstream/dev'
sverdlov93 c1bb6cf
Merge remote-tracking branch 'jfrog-prod/dev'
eranturgeman fc0ae72
Merge branch 'dev'
yahavi bf7f0ce
Merge branch 'dev'
EyalDelarea f513574
Merge remote-tracking branch 'origin/dev'
yahavi 597ddcd
Upgrade jfrog-cli-core to 2.45.1
yahavi b922413
Upgrade jfrog-cli-core to 2.45.2
omerzi f5d0ad0
Merge remote-tracking branch 'origin/dev'
yahavi 45beee8
Upgrade jfrog-cli-core to 2.45.3
yahavi 8eb1c37
Merge remote-tracking branch 'upstream/dev'
yahavi 9161487
Merge remote-tracking branch 'origin/dev'
attiasas dca01d2
Promote version to 2.46.1
omerzi 82fecb0
Promote version to 2.46.2
omerzi d4e93a4
Merge remote-tracking branch 'upstream/dev'
yahavi 8a8a5de
Merge remote-tracking branch 'origin/master' into dev
omerzi dfb6e8c
Merge remote-tracking branch 'origin/dev'
omerzi 9b44d66
Merge remote-tracking branch 'origin' into dev
Or-Geva 4c57380
Merge branch 'dev'
eyalbe4 931eb29
Merge branch 'dev'
eyalbe4 b25e685
Merge remote-tracking branch 'origin/dev'
omerzi c825598
Merge branch 'dev'
eyalbe4 4f4127c
Merge branch 'dev'
eyalbe4 c6fd4b1
Upgrade jfrog-cli-core to v2.47.9
omerzi 39b06f7
Promote version to v2.47.10
omerzi 8129e67
Merge branch 'dev'
eyalbe4 5e828b6
Upgrade jfrog-cli-core to 2.47.12 (#1119)
eranturgeman e481028
Merge remote-tracking branch 'origin/dev'
yahavi 6d62ade
Merge remote-tracking branch 'origin/dev'
yahavi c333812
Merge branch 'master' into dev
RobiNino def18c5
Promoted version to 2.49.0
RobiNino a063de8
Merge remote-tracking branch 'upstream/dev'
sverdlov93 670986e
Merge remote-tracking branch 'upstream/dev'
EyalDelarea 9f2f331
Merge branch 'master' into dev
yahavi 102e9bb
Upgrade jfrog-cli-core to 2.52.0
yahavi bf51565
Merge branch 'dev'
EyalDelarea 0e5f28c
Upgrade jfrog-cli-core to 2.53.0
EyalDelarea a291658
Merge branch 'dev'
eyalbe4 5396c66
Merge branch 'dev'
RobiNino 0a8f806
Merge remote-tracking branch 'upstream/dev'
yahavi de2c4bf
Merge branch 'dev'
eyalbe4 ee2d82d
Merge branch 'dev'
RobiNino 5ce9dde
Merge branch 'dev'
RobiNino f6e9b75
Merge branch 'dev'
RobiNino 7c6d44b
Merge branch 'dev'
eyalbe4 2f1cbb7
Merge remote-tracking branch 'upstream/dev'
sverdlov93 99fd0f6
Merge branch 'dev'
eyalbe4 dbdb1c4
Rename env var (#1239)
eyalbe4 97c0713
Promote to v2.55.4 (#1247)
eyalbe4 1729e8e
Update go.mod and go.sum with latest version of jfrog-client-go (#1250)
Or-Geva 5af5855
Add missing priorityResolution and cdnRedirect to repository template…
sverdlov93 f62dd0c
Upgrade jfrog-cli-core to 2.55.5 (#1251)
RobiNino 233f8ab
Resolve conflicts
eyalbe4 f029a88
Merge branch 'master' into dev
RobiNino fe73fb2
Merge branch 'dev'
eyalbe4 e7ec399
Merge branch 'dev'
eyalbe4 bde88fb
cocoapods-audit
barv-jfrog 792863c
Merge branch 'master' of https://github.com/jfrog/jfrog-cli-core into…
barv-jfrog 75d41cc
cocoapods-audit
barv-jfrog eebf63d
Merge branch 'dev' into cocoapods-audit
eyalbe4 793f52a
Merge branch 'dev' into cocoapods-audit
eyalbe4 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,177 @@ | ||
| package cocoapods | ||
|
|
||
| import ( | ||
| "bytes" | ||
| "fmt" | ||
| "github.com/jfrog/gofrog/version" | ||
| "github.com/jfrog/jfrog-cli-core/v2/utils/config" | ||
| "github.com/jfrog/jfrog-cli-core/v2/utils/coreutils" | ||
| "github.com/jfrog/jfrog-cli-core/v2/utils/ioutils" | ||
| "github.com/jfrog/jfrog-client-go/auth" | ||
| "github.com/jfrog/jfrog-client-go/utils/errorutils" | ||
| "github.com/jfrog/jfrog-client-go/utils/log" | ||
| "os" | ||
| "os/exec" | ||
| "path/filepath" | ||
| "strings" | ||
| ) | ||
|
|
||
| const ( | ||
| minSupportedPodVersion = "1.15.2" | ||
| podNetRcfileName = ".netrc" | ||
| podrcBackupFileName = ".jfrog.netrc.backup" | ||
| ) | ||
|
|
||
| type PodCommand struct { | ||
| cmdName string | ||
| serverDetails *config.ServerDetails | ||
| podVersion *version.Version | ||
| authArtDetails auth.ServiceDetails | ||
| restoreNetrcFunc func() error | ||
| workingDirectory string | ||
| executablePath string | ||
| } | ||
|
|
||
| func GetPodVersionAndExecPath() (*version.Version, string, error) { | ||
| podExecPath, err := exec.LookPath("pod") | ||
| if err != nil { | ||
| return nil, "", fmt.Errorf("errcould not find the 'pod' executable in the system PATH %w", err) | ||
| } | ||
| log.Debug("Using pod executable:", podExecPath) | ||
| versionData, _, err := RunPodCmd(podExecPath, "", []string{"--version"}) | ||
| if err != nil { | ||
| return nil, "", err | ||
| } | ||
| return version.NewVersion(strings.TrimSpace(string(versionData))), podExecPath, nil | ||
| } | ||
|
|
||
| func RunPodCmd(executablePath, srcPath string, podArgs []string) (stdResult, errResult []byte, err error) { | ||
| args := make([]string, 0) | ||
| for i := 0; i < len(podArgs); i++ { | ||
| if strings.TrimSpace(podArgs[i]) != "" { | ||
| args = append(args, podArgs[i]) | ||
| } | ||
| } | ||
| log.Debug("Running 'pod " + strings.Join(podArgs, " ") + "' command.") | ||
| command := exec.Command(executablePath, args...) | ||
| command.Dir = srcPath | ||
| outBuffer := bytes.NewBuffer([]byte{}) | ||
| command.Stdout = outBuffer | ||
| errBuffer := bytes.NewBuffer([]byte{}) | ||
| command.Stderr = errBuffer | ||
| err = command.Run() | ||
| errResult = errBuffer.Bytes() | ||
| stdResult = outBuffer.Bytes() | ||
| if err != nil { | ||
| err = fmt.Errorf("error while running '%s %s': %s\n%s", executablePath, strings.Join(args, " "), err.Error(), strings.TrimSpace(string(errResult))) | ||
| return | ||
| } | ||
| log.Debug("npm '" + strings.Join(args, " ") + "' standard output is:\n" + strings.TrimSpace(string(stdResult))) | ||
| return | ||
| } | ||
|
|
||
| func (pc *PodCommand) SetServerDetails(serverDetails *config.ServerDetails) *PodCommand { | ||
| pc.serverDetails = serverDetails | ||
| return pc | ||
| } | ||
|
|
||
| func (pc *PodCommand) RestoreNetrcFunc() func() error { | ||
| return pc.restoreNetrcFunc | ||
| } | ||
|
|
||
| func (pc *PodCommand) GetData() ([]byte, error) { | ||
| var filteredConf []string | ||
| filteredConf = append(filteredConf, "machine ", pc.serverDetails.Url, "\n") | ||
| filteredConf = append(filteredConf, "login ", pc.serverDetails.User, "\n") | ||
| filteredConf = append(filteredConf, "password ", pc.serverDetails.AccessToken, "\n") | ||
|
|
||
| return []byte(strings.Join(filteredConf, "")), nil | ||
| } | ||
|
|
||
| func (pc *PodCommand) CreateTempNetrc() error { | ||
| data, err := pc.GetData() | ||
| if err != nil { | ||
| return err | ||
| } | ||
| if err = removeNetrcIfExists(pc.workingDirectory); err != nil { | ||
| return err | ||
| } | ||
| log.Debug("Creating temporary .netrc file.") | ||
| return errorutils.CheckError(os.WriteFile(filepath.Join(pc.workingDirectory, podNetRcfileName), data, 0755)) | ||
| } | ||
|
|
||
| func (pc *PodCommand) setRestoreNetrcFunc() error { | ||
| restoreNetrcFunc, err := ioutils.BackupFile(filepath.Join(pc.workingDirectory, podNetRcfileName), podrcBackupFileName) | ||
| if err != nil { | ||
| return err | ||
| } | ||
| pc.restoreNetrcFunc = func() error { | ||
| return restoreNetrcFunc() | ||
| } | ||
| return nil | ||
| } | ||
|
|
||
| func (pc *PodCommand) setArtifactoryAuth() error { | ||
| authArtDetails, err := pc.serverDetails.CreateArtAuthConfig() | ||
| if err != nil { | ||
| return err | ||
| } | ||
| if authArtDetails.GetSshAuthHeaders() != nil { | ||
| return errorutils.CheckErrorf("SSH authentication is not supported in this command") | ||
| } | ||
| pc.authArtDetails = authArtDetails | ||
| return nil | ||
| } | ||
|
|
||
| func NewPodInstallCommand() *PodCommand { | ||
| return &PodCommand{cmdName: "install"} | ||
| } | ||
|
|
||
| func (pc *PodCommand) PreparePrerequisites() error { | ||
| log.Debug("Preparing prerequisites...") | ||
| var err error | ||
| pc.podVersion, pc.executablePath, err = GetPodVersionAndExecPath() | ||
| if err != nil { | ||
| return err | ||
| } | ||
| if pc.podVersion.Compare(minSupportedPodVersion) > 0 { | ||
| return errorutils.CheckErrorf( | ||
| "JFrog CLI cocoapods %s command requires cocoapods client version %s or higher. The Current version is: %s", pc.cmdName, minSupportedPodVersion, pc.podVersion.GetVersion()) | ||
| } | ||
|
|
||
| pc.workingDirectory, err = coreutils.GetWorkingDirectory() | ||
| if err != nil { | ||
| return err | ||
| } | ||
| log.Debug("Working directory set to:", pc.workingDirectory) | ||
| if err = pc.setArtifactoryAuth(); err != nil { | ||
| return err | ||
| } | ||
|
|
||
| return pc.setRestoreNetrcFunc() | ||
| } | ||
|
|
||
| func removeNetrcIfExists(workingDirectory string) error { | ||
| if _, err := os.Stat(filepath.Join(workingDirectory, podNetRcfileName)); err != nil { | ||
| if os.IsNotExist(err) { | ||
| return nil | ||
| } | ||
| return errorutils.CheckError(err) | ||
| } | ||
|
|
||
| log.Debug("Removing existing .npmrc file") | ||
| return errorutils.CheckError(os.Remove(filepath.Join(workingDirectory, podNetRcfileName))) | ||
| } | ||
|
|
||
| func SetArtifactoryAsResolutionServer(serverDetails *config.ServerDetails, depsRepo string) (clearResolutionServerFunc func() error, err error) { | ||
| podCmd := NewPodInstallCommand().SetServerDetails(serverDetails) | ||
| if err = podCmd.PreparePrerequisites(); err != nil { | ||
| return | ||
| } | ||
| if err = podCmd.CreateTempNetrc(); err != nil { | ||
| return | ||
| } | ||
| clearResolutionServerFunc = podCmd.RestoreNetrcFunc() | ||
| log.Info(fmt.Sprintf("Resolving dependecies from '%s' from repo '%s'", serverDetails.Url, depsRepo)) | ||
| return | ||
| } | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This command (and file) should be moved to be inside the
jfrog-cli-securitygo module.Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why? This isn't the "audit" command, it's just for setting RT as the dep resolution server... I didn't see any
SetArtifactoryAsResolutionServerfunctions being defined injfrog-cli-security, only here (jfrog-cli-core)There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will move it to reduce cross-team dependencies