Skip to content
Closed
Show file tree
Hide file tree
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 Apr 5, 2023
9b4006e
Added the Frogbot badge to the README (#745)
eyalbe4 Apr 13, 2023
1381a8b
Merge remote-tracking branch 'upstream/dev' into mastercore
sverdlov93 Apr 19, 2023
f8e3a22
Merge remote-tracking branch 'upstream/dev' into mastercore
sverdlov93 Apr 19, 2023
4f7259c
Merge remote-tracking branch 'origin/dev'
omerzi May 2, 2023
932793d
Merge remote-tracking branch 'origin/dev'
omerzi May 3, 2023
2ddeac0
Merge branch 'dev'
eyalbe4 May 16, 2023
11ce1e8
Merge branch 'dev' into master
talarian1 May 17, 2023
521d832
Merge branch 'dev'
talarian1 May 17, 2023
f470da2
Merge remote-tracking branch 'origin/dev'
talarian1 May 17, 2023
2c85766
Merge remote-tracking branch 'origin/dev'
omerzi May 21, 2023
ae0b91d
Merge remote-tracking branch 'origin/dev'
talarian1 May 23, 2023
5a53932
Merge remote-tracking branch 'upstream/dev'
yahavi May 23, 2023
c07d9fb
Merge remote-tracking branch 'upstream/dev'
yahavi May 23, 2023
7040b6a
Merge remote-tracking branch 'origin/dev'
talarian1 May 24, 2023
e91d430
Merge branch 'dev'
eyalbe4 May 26, 2023
2680fdb
Upgrade jfrog-cli-core to 2.34.6
talarian1 May 28, 2023
b4ddac8
Merge branch 'master' into dev
eyalbe4 May 31, 2023
6dca5e7
Merge branch 'dev'
eyalbe4 May 31, 2023
9fa7b09
Merge remote-tracking branch 'origin/dev'
talarian1 May 31, 2023
a46fb01
Merge branch 'dev'
yahavi Jun 1, 2023
94469f4
Merge branch 'dev'
eyalbe4 Jun 4, 2023
b330d82
Merge branch 'dev'
eyalbe4 Jun 10, 2023
7141b4c
Merge branch 'master' into dev
omerzi Jun 27, 2023
ec17933
Merge branch 'dev'
eyalbe4 Jun 27, 2023
83ced5a
Merge branch 'dev'
RobiNino Jun 29, 2023
9e57a49
Merge branch 'dev'
yahavi Jul 4, 2023
fe4c82a
Merge branch 'master' into dev
omerzi Jul 12, 2023
47a0f3f
Upgrade jfrog-cli-core to 2.38.0
omerzi Jul 12, 2023
40e7d2d
Remove Secrets Scanner Sacanners Names config (#862)
talarian1 Jul 16, 2023
0be3aae
Upgrade jfrog-cli-core to 2.39.0
omerzi Jul 18, 2023
0a4b112
Merge remote-tracking branch 'origin/dev'
omerzi Jul 19, 2023
64ee611
Merge remote-tracking branch 'origin/dev'
omerzi Jul 19, 2023
d32579e
Merge remote-tracking branch 'origin/dev'
omerzi Jul 23, 2023
f79600c
Merge branch 'dev'
eyalbe4 Jul 31, 2023
db385fe
Merge branch 'dev'
eyalbe4 Aug 3, 2023
7f8edc8
Merge remote-tracking branch 'origin/dev'
omerzi Aug 15, 2023
85f562e
Merge branch 'dev'
eyalbe4 Aug 23, 2023
0b5d33b
Merge remote-tracking branch 'origin/dev'
omerzi Aug 24, 2023
ab61366
Merge branch 'dev'
eyalbe4 Aug 25, 2023
b41d4f0
Merge branch 'dev'
attiasas Aug 28, 2023
a02bfdf
Merge branch 'dev'
attiasas Aug 28, 2023
4bc9682
Merge branch 'dev'
eyalbe4 Sep 11, 2023
0a13b66
Merge remote-tracking branch 'upstream/dev'
sverdlov93 Sep 12, 2023
bab627c
Merge branch 'master' of https://github.com/jfrog/jfrog-cli-core
sverdlov93 Sep 12, 2023
3042a43
Merge remote-tracking branch 'upstream/dev'
sverdlov93 Sep 12, 2023
6b129f1
Merge remote-tracking branch 'upstream/dev' (#955)
attiasas Sep 13, 2023
6acb9a2
Merge branch 'dev'
EyalDelarea Sep 13, 2023
be4499c
Merge branch 'dev'
RobiNino Sep 14, 2023
202e914
Merge remote-tracking branch 'origin/dev'
omerzi Sep 19, 2023
b39fdf4
Merge remote-tracking branch 'upstream/dev'
sverdlov93 Sep 19, 2023
c1bb6cf
Merge remote-tracking branch 'jfrog-prod/dev'
eranturgeman Oct 3, 2023
fc0ae72
Merge branch 'dev'
yahavi Oct 4, 2023
bf7f0ce
Merge branch 'dev'
EyalDelarea Oct 5, 2023
f513574
Merge remote-tracking branch 'origin/dev'
yahavi Oct 11, 2023
597ddcd
Upgrade jfrog-cli-core to 2.45.1
yahavi Oct 11, 2023
b922413
Upgrade jfrog-cli-core to 2.45.2
omerzi Oct 17, 2023
f5d0ad0
Merge remote-tracking branch 'origin/dev'
yahavi Oct 18, 2023
45beee8
Upgrade jfrog-cli-core to 2.45.3
yahavi Oct 18, 2023
8eb1c37
Merge remote-tracking branch 'upstream/dev'
yahavi Oct 22, 2023
9161487
Merge remote-tracking branch 'origin/dev'
attiasas Nov 8, 2023
dca01d2
Promote version to 2.46.1
omerzi Nov 9, 2023
82fecb0
Promote version to 2.46.2
omerzi Nov 16, 2023
d4e93a4
Merge remote-tracking branch 'upstream/dev'
yahavi Nov 30, 2023
8a8a5de
Merge remote-tracking branch 'origin/master' into dev
omerzi Dec 3, 2023
dfb6e8c
Merge remote-tracking branch 'origin/dev'
omerzi Dec 3, 2023
9b44d66
Merge remote-tracking branch 'origin' into dev
Or-Geva Dec 11, 2023
4c57380
Merge branch 'dev'
eyalbe4 Dec 15, 2023
931eb29
Merge branch 'dev'
eyalbe4 Dec 18, 2023
b25e685
Merge remote-tracking branch 'origin/dev'
omerzi Dec 19, 2023
c825598
Merge branch 'dev'
eyalbe4 Dec 21, 2023
4f4127c
Merge branch 'dev'
eyalbe4 Dec 25, 2023
c6fd4b1
Upgrade jfrog-cli-core to v2.47.9
omerzi Dec 27, 2023
39b06f7
Promote version to v2.47.10
omerzi Jan 7, 2024
8129e67
Merge branch 'dev'
eyalbe4 Jan 23, 2024
5e828b6
Upgrade jfrog-cli-core to 2.47.12 (#1119)
eranturgeman Jan 25, 2024
e481028
Merge remote-tracking branch 'origin/dev'
yahavi Feb 20, 2024
6d62ade
Merge remote-tracking branch 'origin/dev'
yahavi Feb 21, 2024
c333812
Merge branch 'master' into dev
RobiNino Mar 18, 2024
def18c5
Promoted version to 2.49.0
RobiNino Mar 18, 2024
a063de8
Merge remote-tracking branch 'upstream/dev'
sverdlov93 Mar 28, 2024
670986e
Merge remote-tracking branch 'upstream/dev'
EyalDelarea Apr 15, 2024
9f2f331
Merge branch 'master' into dev
yahavi May 9, 2024
102e9bb
Upgrade jfrog-cli-core to 2.52.0
yahavi May 9, 2024
bf51565
Merge branch 'dev'
EyalDelarea May 22, 2024
0e5f28c
Upgrade jfrog-cli-core to 2.53.0
EyalDelarea May 22, 2024
a291658
Merge branch 'dev'
eyalbe4 Jun 10, 2024
5396c66
Merge branch 'dev'
RobiNino Jun 27, 2024
0a8f806
Merge remote-tracking branch 'upstream/dev'
yahavi Jul 21, 2024
de2c4bf
Merge branch 'dev'
eyalbe4 Jul 23, 2024
ee2d82d
Merge branch 'dev'
RobiNino Jul 31, 2024
5ce9dde
Merge branch 'dev'
RobiNino Aug 5, 2024
f6e9b75
Merge branch 'dev'
RobiNino Aug 6, 2024
7c6d44b
Merge branch 'dev'
eyalbe4 Aug 14, 2024
2f1cbb7
Merge remote-tracking branch 'upstream/dev'
sverdlov93 Aug 14, 2024
99fd0f6
Merge branch 'dev'
eyalbe4 Aug 20, 2024
dbdb1c4
Rename env var (#1239)
eyalbe4 Aug 21, 2024
97c0713
Promote to v2.55.4 (#1247)
eyalbe4 Aug 26, 2024
1729e8e
Update go.mod and go.sum with latest version of jfrog-client-go (#1250)
Or-Geva Aug 28, 2024
5af5855
Add missing priorityResolution and cdnRedirect to repository template…
sverdlov93 Aug 28, 2024
f62dd0c
Upgrade jfrog-cli-core to 2.55.5 (#1251)
RobiNino Aug 29, 2024
233f8ab
Resolve conflicts
eyalbe4 Aug 29, 2024
f029a88
Merge branch 'master' into dev
RobiNino Sep 4, 2024
fe73fb2
Merge branch 'dev'
eyalbe4 Sep 19, 2024
e7ec399
Merge branch 'dev'
eyalbe4 Sep 23, 2024
bde88fb
cocoapods-audit
barv-jfrog Sep 30, 2024
792863c
Merge branch 'master' of https://github.com/jfrog/jfrog-cli-core into…
barv-jfrog Sep 30, 2024
75d41cc
cocoapods-audit
barv-jfrog Sep 30, 2024
eebf63d
Merge branch 'dev' into cocoapods-audit
eyalbe4 Sep 30, 2024
793f52a
Merge branch 'dev' into cocoapods-audit
eyalbe4 Oct 15, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
177 changes: 177 additions & 0 deletions artifactory/commands/cocoapods/podcommand.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
package cocoapods

Copy link
Contributor

@eyalbe4 eyalbe4 Oct 15, 2024

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-security go module.

Copy link
Contributor

@srmish-jfrog srmish-jfrog Oct 31, 2024

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 SetArtifactoryAsResolutionServer functions being defined in jfrog-cli-security, only here (jfrog-cli-core)

Copy link
Contributor

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

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
}
2 changes: 2 additions & 0 deletions common/commands/configfile.go
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,8 @@ func handleInteractiveConfigCreation(configFile *ConfigFile, confType project.Pr
return configFile.configGradle()
case project.Terraform:
return configFile.setDeployer(false)
case project.Cocoapods:
return configFile.setDeployerResolver()
}
return
}
Expand Down
2 changes: 2 additions & 0 deletions common/project/projectconfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ const (
Dotnet
Build
Terraform
Cocoapods
)

type ConfigType string
Expand All @@ -62,6 +63,7 @@ var ProjectTypes = []string{
"dotnet",
"build",
"terraform",
"cocoapods",
}

func (projectType ProjectType) String() string {
Expand Down
Loading