@ -80,23 +80,51 @@ variable "configure_code_server" {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					variable  " package_managers "  { 
 
					 
					 
					 
					variable  " package_managers "  { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  type         = map ( string ) 
 
					 
					 
					 
					  type  = object ( { 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					  description  = < < EOF 
 
					 
					 
					 
					    npm     = optional ( list ( string ) ,  [ ] ) 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					A  map  of  package  manager  names  to  their  respective  artifactory  repositories . 
 
					 
					 
					 
					    go      = optional ( list ( string ) ,  [ ] ) 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					For  example : 
 
					 
					 
					 
					    pypi    = optional ( list ( string ) ,  [ ] ) 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    { 
 
					 
					 
					 
					    docker  = optional ( list ( string ) ,  [ ] ) 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					      " npm " :  " YOUR_NPM_REPO_KEY " , 
 
					 
					 
					 
					  } ) 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					      " go " :  " YOUR_GO_REPO_KEY " , 
 
					 
					 
					 
					  description  = < < - EOF 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					      " pypi " :  " YOUR_PYPI_REPO_KEY " , 
 
					 
					 
					 
					    A  map  of  package  manager  names  to  their  respective  artifactory  repositories .  Unused  package  managers  can  be  omitted . 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					      " docker " :  " YOUR_DOCKER_REPO_KEY " 
 
					 
					 
					 
					    For  example : 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    } 
 
					 
					 
					 
					      { 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					EOF 
 
					 
					 
					 
					        npm     = [ " GLOBAL_NPM_REPO_KEY " ,  " @SCOPED:NPM_REPO_KEY " ] 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        go      = [ " YOUR_GO_REPO_KEY " ,  " ANOTHER_GO_REPO_KEY " ] 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        pypi    = [ " YOUR_PYPI_REPO_KEY " ,  " ANOTHER_PYPI_REPO_KEY " ] 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        docker  = [ " YOUR_DOCKER_REPO_KEY " ,  " ANOTHER_DOCKER_REPO_KEY " ] 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					      } 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					  EOF 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					locals  { 
 
					 
					 
					 
					locals  { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  #  The  username  field  to  use  for  artifactory 
 
					 
					 
					 
					  #  The  username  field  to  use  for  artifactory 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  username    = var . username_field  ==  " email "  ?  data . coder_workspace_owner . me . email  :  data . coder_workspace_owner . me . name 
 
					 
					 
					 
					  username    = var . username_field  ==  " email "  ?  data . coder_workspace_owner . me . email  :  data . coder_workspace_owner . me . name 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  jfrog_host  = replace ( var . jfrog_url ,  " https:// " ,  " " ) 
 
					 
					 
					 
					  jfrog_host  = split ( " :// " ,  var . jfrog_url ) [ 1 ] 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					  common_values  = { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    JFROG_URL                 = var . jfrog_url 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    JFROG_HOST                = local . jfrog_host 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    JFROG_SERVER_ID           = var . jfrog_server_id 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ARTIFACTORY_USERNAME      = local . username 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ARTIFACTORY_EMAIL         = data . coder_workspace_owner . me . email 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ARTIFACTORY_ACCESS_TOKEN  = artifactory_scoped_token . me . access_token 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					  } 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					  npmrc  = templatefile ( 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    " ${ path . module } /.npmrc.tftpl " , 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    merge ( 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					      local . common_values , 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					      { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        REPOS  = [ 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					          for  r  in  var . package_managers . npm  : 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					          strcontains ( r ,  " : " )  ?  zipmap ( [ " SCOPE " ,  " NAME " ] ,  [ " ${ split ( " : " ,  r ) [ 0 ] } : " ,  split ( " : " ,  r ) [ 1 ] ] )  :  {  SCOPE  = " " ,  NAME  = r  } 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        ] 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					      } 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					  ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					  pip_conf  = templatefile ( 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    " ${ path . module } /pip.conf.tftpl " ,  merge ( local . common_values ,  {  REPOS  = var . package_managers . pypi  } ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					  ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					#  Configure  the  Artifactory  provider 
 
					 
					 
					 
					#  Configure  the  Artifactory  provider 
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -123,19 +151,22 @@ resource "coder_script" "jfrog" {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  agent_id      = var . agent_id 
 
					 
					 
					 
					  agent_id      = var . agent_id 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  display_name  = " jfrog " 
 
					 
					 
					 
					  display_name  = " jfrog " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  icon          = " /icon/jfrog.svg " 
 
					 
					 
					 
					  icon          = " /icon/jfrog.svg " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  script  = templatefile ( " ${ path . module } /run.sh " ,  { 
 
					 
					 
					 
					  script  = templatefile ( " ${ path . module } /run.sh " ,  merge ( 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    JFROG_URL  :  var . jfrog_url , 
 
					 
					 
					 
					    local . common_values , 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    JFROG_HOST  :  local . jfrog_host , 
 
					 
					 
					 
					    { 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    JFROG_SERVER_ID  :  var . jfrog_server_id , 
 
					 
					 
					 
					      CONFIGURE_CODE_SERVER  = var . configure_code_server 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    ARTIFACTORY_USERNAME  :  local . username , 
 
					 
					 
					 
					      HAS_NPM                = length ( var . package_managers . npm )  = =  0  ?  " "  :  " YES " 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    ARTIFACTORY_EMAIL  :  data . coder_workspace_owner . me . email , 
 
					 
					 
					 
					      NPMRC                  = local . npmrc 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    ARTIFACTORY_ACCESS_TOKEN  :  artifactory_scoped_token . me . access_token , 
 
					 
					 
					 
					      REPOSITORY_NPM         = try ( element ( var . package_managers . npm ,  0 ) ,  " " ) 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    CONFIGURE_CODE_SERVER  :  var . configure_code_server , 
 
					 
					 
					 
					      HAS_GO                 = length ( var . package_managers . go )  = =  0  ?  " "  :  " YES " 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    REPOSITORY_NPM  :  lookup ( var . package_managers ,  " npm " ,  " " ) , 
 
					 
					 
					 
					      REPOSITORY_GO          = try ( element ( var . package_managers . go ,  0 ) ,  " " ) 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    REPOSITORY_GO  :  lookup ( var . package_managers ,  " go " ,  " " ) , 
 
					 
					 
					 
					      HAS_PYPI               = length ( var . package_managers . pypi )  = =  0  ?  " "  :  " YES " 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    REPOSITORY_PYPI  :  lookup ( var . package_managers ,  " pypi " ,  " " ) , 
 
					 
					 
					 
					      PIP_CONF               = local . pip_conf 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    REPOSITORY_DOCKER  :  lookup ( var . package_managers ,  " docker " ,  " " ) , 
 
					 
					 
					 
					      REPOSITORY_PYPI        = try ( element ( var . package_managers . pypi ,  0 ) ,  " " ) 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					  } ) 
 
					 
					 
					 
					      HAS_DOCKER             = length ( var . package_managers . docker )  = =  0  ?  " "  :  " YES " 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					      REGISTER_DOCKER        = join ( " \ n " ,  formatlist ( " register_docker  \ " % s \ " " ,  var . package_managers . docker ) ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    } 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					  ) ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  run_on_start  = true 
 
					 
					 
					 
					  run_on_start  = true 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -161,10 +192,13 @@ resource "coder_env" "jfrog_ide_store_connection" {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					resource  " coder_env "  " goproxy "  { 
 
					 
					 
					 
					resource  " coder_env "  " goproxy "  { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  count     = l ookup( var . package_managers ,  " go " ,  " " )  = =  " "   ?  0  :  1 
 
					 
					 
					 
					  count     = l ength( var . package_managers . go )  = =  0   ?  0  :  1 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					  agent_id  = var . agent_id 
 
					 
					 
					 
					  agent_id  = var . agent_id 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  name      = " GOPROXY " 
 
					 
					 
					 
					  name      = " GOPROXY " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  value     = " https:// ${ local . username } : ${ artifactory_scoped_token . me . access_token } @ ${ local . jfrog_host } /artifactory/api/go/ ${ lookup ( var . package_managers ,  " go " ,  " " ) } " 
 
					 
					 
					 
					  value  = join ( " , " ,  [ 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    for  repo  in  var . package_managers . go  : 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    " https:// ${ local . username } : ${ artifactory_scoped_token . me . access_token } @ ${ local . jfrog_host } /artifactory/api/go/ ${ repo } " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					  ] ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					output  " access_token "  { 
 
					 
					 
					 
					output  " access_token "  {