|
|
|
@ -3,17 +3,14 @@ import * as fs from 'fs'
|
|
|
|
|
import * as fsHelper from './fs-helper'
|
|
|
|
|
import * as gitCommandManager from './git-command-manager'
|
|
|
|
|
import * as githubApiHelper from './github-api-helper'
|
|
|
|
|
import * as httpClient from '@actions/http-client'
|
|
|
|
|
import * as io from '@actions/io'
|
|
|
|
|
import * as path from 'path'
|
|
|
|
|
import * as refHelper from './ref-helper'
|
|
|
|
|
import * as stateHelper from './state-helper'
|
|
|
|
|
import * as url from 'url'
|
|
|
|
|
import {IGitCommandManager} from './git-command-manager'
|
|
|
|
|
|
|
|
|
|
const serverUrl = 'https://github.com/'
|
|
|
|
|
const authConfigKey = `http.${serverUrl}.extraheader`
|
|
|
|
|
// const proxyConfigKey = `http.${serverUrl}.proxy`
|
|
|
|
|
|
|
|
|
|
export interface ISourceSettings {
|
|
|
|
|
repositoryPath: string
|
|
|
|
@ -95,13 +92,11 @@ export async function getSource(settings: ISourceSettings): Promise<void> {
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Remove possible previous proxy and extraheader
|
|
|
|
|
// await removeGitConfig(git, proxyConfigKey)
|
|
|
|
|
// Remove possible previous extraheader
|
|
|
|
|
await removeGitConfig(git, authConfigKey)
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
// Config proxy and extraheader
|
|
|
|
|
// await configureProxy(git)
|
|
|
|
|
// Config extraheader
|
|
|
|
|
await configureAuthToken(git, settings.authToken)
|
|
|
|
|
|
|
|
|
|
// LFS install
|
|
|
|
@ -134,7 +129,6 @@ export async function getSource(settings: ISourceSettings): Promise<void> {
|
|
|
|
|
await git.log1()
|
|
|
|
|
} finally {
|
|
|
|
|
if (!settings.persistCredentials) {
|
|
|
|
|
// await removeGitConfig(git, proxyConfigKey)
|
|
|
|
|
await removeGitConfig(git, authConfigKey)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -150,7 +144,6 @@ export async function cleanup(repositoryPath: string): Promise<void> {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Remove proxy and extraheader
|
|
|
|
|
let git: IGitCommandManager
|
|
|
|
|
try {
|
|
|
|
|
git = await gitCommandManager.CreateCommandManager(repositoryPath, false)
|
|
|
|
@ -158,7 +151,7 @@ export async function cleanup(repositoryPath: string): Promise<void> {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// await removeGitConfig(git, proxyConfigKey)
|
|
|
|
|
// Remove extraheader
|
|
|
|
|
await removeGitConfig(git, authConfigKey)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -268,34 +261,6 @@ async function prepareExistingDirectory(
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// async function configureProxy(git: IGitCommandManager): Promise<void> {
|
|
|
|
|
// const proxyUrl = httpClient.getProxyUrl(serverUrl)
|
|
|
|
|
// const parsedUrl = url.parse(proxyUrl)
|
|
|
|
|
// const placeholder = parsedUrl.auth
|
|
|
|
|
// ? proxyUrl.replace(parsedUrl.auth, '***')
|
|
|
|
|
// : ''
|
|
|
|
|
|
|
|
|
|
// // Configure a placeholder value. This approach avoids the credential being captured
|
|
|
|
|
// // by process creation audit events, which are commonly logged. For more information,
|
|
|
|
|
// // refer to https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/manage/component-updates/command-line-process-auditing
|
|
|
|
|
// await git.config(proxyConfigKey, placeholder || proxyUrl)
|
|
|
|
|
|
|
|
|
|
// if (placeholder) {
|
|
|
|
|
// // Replace the value in the config file
|
|
|
|
|
// const configPath = path.join(git.getWorkingDirectory(), '.git', 'config')
|
|
|
|
|
// let content = (await fs.promises.readFile(configPath)).toString()
|
|
|
|
|
// const placeholderIndex = content.indexOf(placeholder)
|
|
|
|
|
// if (
|
|
|
|
|
// placeholderIndex < 0 ||
|
|
|
|
|
// placeholderIndex != content.lastIndexOf(placeholder)
|
|
|
|
|
// ) {
|
|
|
|
|
// throw new Error('Unable to replace auth placeholder in .git/config')
|
|
|
|
|
// }
|
|
|
|
|
// content = content.replace(placeholder, proxyUrl)
|
|
|
|
|
// await fs.promises.writeFile(configPath, content)
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
async function configureAuthToken(
|
|
|
|
|
git: IGitCommandManager,
|
|
|
|
|
authToken: string
|
|
|
|
|