2020-07-14 08:41:00 -07:00
|
|
|
import * as core from '@actions/core'
|
|
|
|
import * as path from 'path'
|
|
|
|
import * as tc from '@actions/tool-cache'
|
2020-07-14 13:07:34 -07:00
|
|
|
import * as fs from 'fs';
|
2020-07-14 08:41:00 -07:00
|
|
|
|
|
|
|
const matchers = [
|
|
|
|
'android-lint-file-matcher.json',
|
|
|
|
'android-lint-line-matcher.json',
|
|
|
|
'gradle-matcher.json',
|
|
|
|
'kotlin-error-matcher.json',
|
|
|
|
'kotlin-warning-matcher.json'
|
|
|
|
]
|
|
|
|
|
2020-07-14 13:07:34 -07:00
|
|
|
const licenses = {
|
|
|
|
'android-sdk-license': '\n24333f8a63b6825ea9c5514f83c2829b004d1fee'
|
|
|
|
}
|
|
|
|
|
2020-07-14 08:41:00 -07:00
|
|
|
let tempDirectory = process.env['RUNNER_TEMP'] || ''
|
|
|
|
|
|
|
|
const IS_WINDOWS = process.platform === 'win32'
|
|
|
|
|
|
|
|
const cmdToolsVersion = '6609375'
|
|
|
|
|
|
|
|
let cmdToolsOS: string
|
|
|
|
if (process.platform === 'win32') {
|
|
|
|
cmdToolsOS = 'win'
|
|
|
|
}
|
|
|
|
if (process.platform === 'darwin') {
|
|
|
|
cmdToolsOS = 'mac'
|
|
|
|
}
|
|
|
|
if (process.platform === 'linux') {
|
|
|
|
cmdToolsOS = 'linux'
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!tempDirectory) {
|
|
|
|
let baseLocation
|
|
|
|
if (IS_WINDOWS) {
|
|
|
|
// On windows use the USERPROFILE env variable
|
|
|
|
baseLocation = process.env['USERPROFILE'] || 'C:\\'
|
|
|
|
} else {
|
|
|
|
if (process.platform === 'darwin') {
|
|
|
|
baseLocation = '/Users'
|
|
|
|
} else {
|
|
|
|
baseLocation = '/home'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
tempDirectory = path.join(baseLocation, 'actions', 'temp')
|
|
|
|
}
|
|
|
|
|
|
|
|
async function run(): Promise<void> {
|
|
|
|
const tempDir: string = path.join(
|
|
|
|
tempDirectory,
|
|
|
|
`temp_${Math.floor(Math.random() * 2000000000)}`
|
|
|
|
)
|
|
|
|
|
|
|
|
const androidHome = path.join(tempDir, 'android')
|
2020-07-14 13:07:34 -07:00
|
|
|
const cmdlineTools = path.join(androidHome, 'cmdline-tools')
|
2020-07-14 08:41:00 -07:00
|
|
|
|
|
|
|
const cmdToolsZip = await tc.downloadTool(
|
|
|
|
`https://dl.google.com/android/repository/commandlinetools-${cmdToolsOS}-${cmdToolsVersion}_latest.zip`
|
|
|
|
)
|
|
|
|
|
|
|
|
core.debug('extract android commandlinetools')
|
2020-07-14 13:07:34 -07:00
|
|
|
await tc.extractZip(cmdToolsZip, cmdlineTools)
|
2020-07-14 08:41:00 -07:00
|
|
|
|
|
|
|
core.exportVariable('ANDROID_HOME', androidHome)
|
2020-07-14 13:07:34 -07:00
|
|
|
core.exportVariable('ANDROID_SDK_ROOT', androidHome)
|
2020-07-14 08:41:00 -07:00
|
|
|
|
2020-07-14 13:07:34 -07:00
|
|
|
core.addPath(path.join(cmdlineTools, 'tools', 'bin'))
|
|
|
|
|
|
|
|
const licenseDir = path.join(androidHome, 'licenses')
|
|
|
|
fs.existsSync(licenseDir) || fs.mkdirSync(licenseDir)
|
|
|
|
for (const [licenseName, licenseHash] of Object.entries(licenses)) {
|
|
|
|
const licenseFile = path.join(licenseDir, licenseName)
|
|
|
|
fs.appendFileSync(licenseFile, licenseHash)
|
|
|
|
}
|
2020-07-14 08:41:00 -07:00
|
|
|
|
|
|
|
core.debug('add matchers')
|
|
|
|
const matchersPath = path.join(__dirname, '..', '.github')
|
|
|
|
for (const matcher of matchers) {
|
|
|
|
console.log(`##[add-matcher]${path.join(matchersPath, matcher)}`)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
run()
|