Skip to content

Commit

Permalink
fix(refactor): use named imports (#879)
Browse files Browse the repository at this point in the history
Allows better tree shaking while bundling.
  • Loading branch information
viceice authored Nov 8, 2024
1 parent 5343762 commit 4d91b7f
Show file tree
Hide file tree
Showing 7 changed files with 77 additions and 36 deletions.
38 changes: 38 additions & 0 deletions .github/renovate.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,28 @@
"description": "Use ci semantic type for some deps",
"matchFileNames": [".github/workflows/**"],
"semanticCommitType": "ci"
},
{
"description": "Don't require approval for renovate",
"matchDepNames": [
"ghcr.io/renovatebot/renovate",
"renovatebot/github-action"
],
"dependencyDashboardApproval": false
},
{
"description": "Don't pin renovate updates",
"matchDepNames": ["ghcr.io/renovatebot/renovate"],
"matchFileNames": ["action.yml", "src/docker.ts"],
"pinDigests": false
},
{
"description": "Use feat! semantic type for renovate major",
"matchDepNames": ["ghcr.io/renovatebot/renovate"],
"matchFileNames": ["action.yml", "src/docker.ts"],
"matchUpdateTypes": ["major"],
"commitMessagePrefix": "feat(deps)!:",
"additionalBranchPrefix": "renovate-major"
}
],
"customManagers": [
Expand All @@ -46,6 +68,22 @@
"matchStrings": ["renovate-version: (?<currentValue>[^\\s]+)"],
"depNameTemplate": "ghcr.io/renovatebot/renovate",
"datasourceTemplate": "docker"
},
{
"description": "Update renovate version in action.yml",
"customType": "regex",
"fileMatch": ["^action\\.yml$"],
"matchStrings": ["default: '(?<currentValue>[^\\s]+)' # renovate"],
"depNameTemplate": "ghcr.io/renovatebot/renovate",
"datasourceTemplate": "docker"
},
{
"description": "Update renovate version in src/docker.ts",
"customType": "regex",
"fileMatch": ["^src/docker\\.ts$"],
"matchStrings": ["version = '(?<currentValue>[^\\s]+)'; // renovate"],
"depNameTemplate": "ghcr.io/renovatebot/renovate",
"datasourceTemplate": "docker"
}
]
}
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ image as root, do some customization and switch back to a unprivileged user.
Specify volume mounts. Defaults to `/tmp:/tmp`.
The volume mounts are separated through `;`.

This sample will mount `/tmp:/tmp`, `/home:/home` and `/foo:/bar`.
This sample will mount `/tmp:/tmp` and `/foo:/bar`.

```yml
....
Expand All @@ -148,7 +148,6 @@ jobs:
token: ${{ secrets.RENOVATE_TOKEN }}
docker-volumes: |
/tmp:/tmp ;
/home:/home ;
/foo:/bar
```

Expand Down
5 changes: 3 additions & 2 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,14 @@ inputs:
required: false
renovate-version:
description: |
Renovate version to use. Defaults to latest.
Renovate version to use.
required: false
default: 'latest'
renovate-image:
description: |
Renovate docker image name.
Defaults to `ghcr.io/renovatebot/renovate`.
required: false
default: ghcr.io/renovatebot/renovate
mount-docker-socket:
description: |
Mount the Docker socket inside the renovate container so that the commands
Expand Down
22 changes: 16 additions & 6 deletions src/docker.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,31 @@
import type { Input } from './input';
import { warning } from '@actions/core';

class Docker {
export class Docker {
private static readonly image = 'ghcr.io/renovatebot/renovate';
private static readonly version = 'latest';

private readonly dockerImage: string;
private readonly fullTag: string;

constructor(input: Input) {
const tag = input.getVersion();
let image = input.getDockerImage();
let version = input.getVersion();

this.dockerImage = input.getDockerImage() ?? Docker.image;
this.fullTag = tag ?? 'latest';
if (!image) {
warning(`No Docker image specified, using ${Docker.image}`);
image = Docker.image;
}
if (!version) {
warning(`No Docker version specified, using ${Docker.version}`);
version = Docker.version;
}

this.dockerImage = image;
this.fullTag = version;
}

image(): string {
return `${this.dockerImage}:${this.fullTag}`;
}
}

export default Docker;
8 changes: 4 additions & 4 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as core from '@actions/core';
import Input from './input';
import Renovate from './renovate';
import { Input } from './input';
import { Renovate } from './renovate';
import { setFailed } from '@actions/core';

async function run(): Promise<void> {
try {
Expand All @@ -10,7 +10,7 @@ async function run(): Promise<void> {
await renovate.runDockerContainer();
} catch (error) {
console.error(error);
core.setFailed(error as Error);
setFailed(error as Error);
}
}

Expand Down
31 changes: 13 additions & 18 deletions src/input.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import * as core from '@actions/core';
import { getInput } from '@actions/core';
import path from 'path';

interface EnvironmentVariable {
export interface EnvironmentVariable {
key: string;
value: string;
}

class Input {
export class Input {
readonly options = {
envRegex:
/^(?:RENOVATE_\w+|LOG_LEVEL|GITHUB_COM_TOKEN|NODE_OPTIONS|(?:HTTPS?|NO)_PROXY|(?:https?|no)_proxy)$/,
Expand All @@ -27,7 +27,7 @@ class Input {
private readonly _configurationFile: Readonly<EnvironmentVariable>;

constructor() {
const envRegexInput = core.getInput('env-regex');
const envRegexInput = getInput('env-regex');
const envRegex = envRegexInput
? new RegExp(envRegexInput)
: this.options.envRegex;
Expand Down Expand Up @@ -61,41 +61,39 @@ class Input {
}

getDockerImage(): string | null {
return core.getInput('renovate-image') || null;
return getInput('renovate-image') || null;
}

getVersion(): string | null {
const version = core.getInput('renovate-version');
return !!version && version !== '' ? version : null;
return getInput('renovate-version') || null;
}

mountDockerSocket(): boolean {
return core.getInput('mount-docker-socket') === 'true';
return getInput('mount-docker-socket') === 'true';
}

dockerSocketHostPath(): string {
return core.getInput('docker-socket-host-path') || '/var/run/docker.sock';
return getInput('docker-socket-host-path') || '/var/run/docker.sock';
}

getDockerCmdFile(): string | null {
const cmdFile = core.getInput('docker-cmd-file');
const cmdFile = getInput('docker-cmd-file');
return !!cmdFile && cmdFile !== '' ? path.resolve(cmdFile) : null;
}

getDockerUser(): string | null {
return core.getInput('docker-user') || null;
return getInput('docker-user') || null;
}

getDockerVolumeMounts(): string[] {
return core
.getInput('docker-volumes')
return getInput('docker-volumes')
.split(';')
.map((v) => v.trim())
.filter((v) => !!v);
}

getDockerNetwork(): string {
return core.getInput('docker-network');
return getInput('docker-network');
}

/**
Expand All @@ -117,7 +115,7 @@ class Input {
env: string,
optional: boolean,
): EnvironmentVariable {
const fromInput = core.getInput(input);
const fromInput = getInput(input);
const fromEnv = this._environmentVariables.get(env);

if (fromInput === '' && fromEnv === undefined && !optional) {
Expand All @@ -136,6 +134,3 @@ class Input {
return { key: env, value: fromEnv !== undefined ? fromEnv : '' };
}
}

export default Input;
export { EnvironmentVariable, Input };
6 changes: 2 additions & 4 deletions src/renovate.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import Docker from './docker';
import { Docker } from './docker';
import { Input } from './input';
import { exec } from '@actions/exec';
import fs from 'fs/promises';
import path from 'path';

class Renovate {
export class Renovate {
static dockerGroupRegex = /^docker:x:(?<groupId>[1-9][0-9]*):/m;
private configFileMountDir = '/github-action';

Expand Down Expand Up @@ -126,5 +126,3 @@ class Renovate {
}
}
}

export default Renovate;

0 comments on commit 4d91b7f

Please sign in to comment.