mirror of
https://github.com/renovatebot/github-action.git
synced 2025-12-17 09:22:36 +00:00
* refactor: convert project to typescript * fix: image as last argument of docker run * ci: remove example as the build can act as example * fix: set tokenEnv to RENOVATE_TOKEN * fix: add trailing single quite to Docker --env arguments * fix: mount volume with config file to Docker container * chore: remove Prettier trailingComma on all This puts it back at the default, which is es5 style. * fix: correct package main to dist/indes.js * fix: use @actions/exec to execute docker child process * fix: use async/await for exec Co-authored-by: Michael Kriese <michael.kriese@visualon.de> * fix: use async/await in the runner Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
55 lines
1.4 KiB
TypeScript
55 lines
1.4 KiB
TypeScript
import Docker from './docker';
|
|
import { exec } from '@actions/exec';
|
|
import fs from 'fs';
|
|
import path from 'path';
|
|
|
|
class Renovate {
|
|
private configFileEnv = 'RENOVATE_CONFIG_FILE';
|
|
private tokenEnv = 'RENOVATE_TOKEN';
|
|
private configFileMountDir = '/github-action';
|
|
|
|
private configFile: string;
|
|
private docker: Docker;
|
|
|
|
constructor(configFile: string, private token: string) {
|
|
this.configFile = path.resolve(configFile);
|
|
|
|
this.validateArguments();
|
|
|
|
this.docker = new Docker();
|
|
}
|
|
|
|
async runDockerContainer(): Promise<void> {
|
|
const commandArguments = [
|
|
'--rm',
|
|
`--env ${this.configFileEnv}=${this.configFileMountPath()}`,
|
|
`--env ${this.tokenEnv}=${this.token}`,
|
|
`--volume ${this.configFile}:${this.configFileMountPath()}`,
|
|
this.docker.image(),
|
|
];
|
|
const command = `docker run ${commandArguments.join(' ')}`;
|
|
|
|
const code = await exec(command);
|
|
if (code !== 0) {
|
|
new Error(`'docker run' failed with exit code ${code}.`);
|
|
}
|
|
}
|
|
|
|
private validateArguments(): void {
|
|
if (!fs.existsSync(this.configFile)) {
|
|
throw new Error(
|
|
`Could not locate configuration file '${this.configFile}'.`
|
|
);
|
|
}
|
|
}
|
|
|
|
private configFileName(): string {
|
|
return path.basename(this.configFile);
|
|
}
|
|
|
|
private configFileMountPath(): string {
|
|
return path.join(this.configFileMountDir, this.configFileName());
|
|
}
|
|
}
|
|
|
|
export default Renovate;
|