mirror of
https://github.com/mtkennerly/dunamai-action.git
synced 2025-06-20 14:30:48 +00:00
#2: Rewrite as a composite action
This commit is contained in:
parent
1a3a67c1e5
commit
6708a62e85
9 changed files with 68 additions and 3088 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,3 +1,4 @@
|
|||
__pycache__/
|
||||
node_modules/
|
||||
out/
|
||||
tmp*/
|
||||
|
|
|
@ -9,11 +9,3 @@ repos:
|
|||
rev: v1.1.6
|
||||
hooks:
|
||||
- id: forbid-tabs
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: build
|
||||
name: build
|
||||
language: system
|
||||
entry: npm run build
|
||||
pass_filenames: false
|
||||
files: '(\.(tsx?|jsx?)$|^package.json$|^tsconfig.json$)'
|
||||
|
|
61
action.py
Normal file
61
action.py
Normal file
|
@ -0,0 +1,61 @@
|
|||
import os
|
||||
import subprocess
|
||||
|
||||
|
||||
def run_command(command: str) -> str:
|
||||
print("Running command: {}".format(command))
|
||||
result = subprocess.run(command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
return result.stdout.decode("utf-8").strip()
|
||||
|
||||
|
||||
def set_output(name: str, value: str) -> None:
|
||||
with open(os.environ["GITHUB_OUTPUT"], "a") as file:
|
||||
file.write(["{}={}\n".format(name, value)])
|
||||
|
||||
|
||||
def export_variable(name: str, value: str) -> None:
|
||||
print("Setting environment variable: {}".format(name))
|
||||
with open(os.environ["GITHUB_ENV"], "a") as file:
|
||||
file.write(["{}={}\n".format(name, value)])
|
||||
|
||||
|
||||
def set_failed(error: Exception) -> None:
|
||||
print("::error::{}".format(error))
|
||||
|
||||
stdout = getattr(error, "stdout", None)
|
||||
if stdout is not None:
|
||||
print("stdout: {}".format(stdout))
|
||||
|
||||
stderr = getattr(error, "stderr", None)
|
||||
if stderr is not None:
|
||||
print("stderr: {}".format(stdout))
|
||||
|
||||
|
||||
def main() -> None:
|
||||
install = os.environ["INPUT_INSTALL"]
|
||||
env_var = os.environ["INPUT_ENV_VAR"]
|
||||
command = os.environ["INPUT_COMMAND"]
|
||||
args = os.environ["INPUT_ARGS"]
|
||||
|
||||
if install == "none":
|
||||
# No install.
|
||||
pass
|
||||
elif install == "latest":
|
||||
run_command("pip install dunamai")
|
||||
else:
|
||||
run_command("pip install dunamai=={}", install)
|
||||
|
||||
version = run_command("{} {}".format(command, args))
|
||||
set_output("version", version)
|
||||
print("Dynamic version: {}".format(version))
|
||||
|
||||
if env_var != "":
|
||||
export_variable(env_var, version)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
main()
|
||||
except Exception as error:
|
||||
set_failed(error)
|
||||
exit(1)
|
|
@ -30,6 +30,10 @@ inputs:
|
|||
outputs:
|
||||
version:
|
||||
description: The dynamic version.
|
||||
value: ${{ steps.main.outputs.version }}
|
||||
runs:
|
||||
using: node16
|
||||
main: public/index.js
|
||||
using: composite
|
||||
steps:
|
||||
- id: main
|
||||
shell: bash
|
||||
run: python ${{ github.action_path }}/action.py
|
||||
|
|
129
package-lock.json
generated
129
package-lock.json
generated
|
@ -1,129 +0,0 @@
|
|||
{
|
||||
"name": "dunamai-action",
|
||||
"version": "1.2.0",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "dunamai-action",
|
||||
"version": "1.2.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.10.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^16.11.7",
|
||||
"@vercel/ncc": "^0.34.0",
|
||||
"typescript": "^3.9.6"
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/core": {
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz",
|
||||
"integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==",
|
||||
"dependencies": {
|
||||
"@actions/http-client": "^2.0.1",
|
||||
"uuid": "^8.3.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/http-client": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz",
|
||||
"integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==",
|
||||
"dependencies": {
|
||||
"tunnel": "^0.0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "16.18.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.3.tgz",
|
||||
"integrity": "sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@vercel/ncc": {
|
||||
"version": "0.34.0",
|
||||
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.34.0.tgz",
|
||||
"integrity": "sha512-G9h5ZLBJ/V57Ou9vz5hI8pda/YQX5HQszCs3AmIus3XzsmRn/0Ptic5otD3xVST8QLKk7AMk7AqpsyQGN7MZ9A==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"ncc": "dist/ncc/cli.js"
|
||||
}
|
||||
},
|
||||
"node_modules/tunnel": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
|
||||
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
|
||||
"engines": {
|
||||
"node": ">=0.6.11 <=0.7.0 || >=0.7.3"
|
||||
}
|
||||
},
|
||||
"node_modules/typescript": {
|
||||
"version": "3.9.6",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.6.tgz",
|
||||
"integrity": "sha512-Pspx3oKAPJtjNwE92YS05HQoY7z2SFyOpHo9MqJor3BXAGNaPUs83CuVp9VISFkSjyRfiTpmKuAYGJB7S7hOxw==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"tsc": "bin/tsc",
|
||||
"tsserver": "bin/tsserver"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/uuid": {
|
||||
"version": "8.3.2",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
|
||||
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
|
||||
"bin": {
|
||||
"uuid": "dist/bin/uuid"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@actions/core": {
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz",
|
||||
"integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==",
|
||||
"requires": {
|
||||
"@actions/http-client": "^2.0.1",
|
||||
"uuid": "^8.3.2"
|
||||
}
|
||||
},
|
||||
"@actions/http-client": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz",
|
||||
"integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==",
|
||||
"requires": {
|
||||
"tunnel": "^0.0.6"
|
||||
}
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "16.18.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.3.tgz",
|
||||
"integrity": "sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg==",
|
||||
"dev": true
|
||||
},
|
||||
"@vercel/ncc": {
|
||||
"version": "0.34.0",
|
||||
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.34.0.tgz",
|
||||
"integrity": "sha512-G9h5ZLBJ/V57Ou9vz5hI8pda/YQX5HQszCs3AmIus3XzsmRn/0Ptic5otD3xVST8QLKk7AMk7AqpsyQGN7MZ9A==",
|
||||
"dev": true
|
||||
},
|
||||
"tunnel": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
|
||||
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
|
||||
},
|
||||
"typescript": {
|
||||
"version": "3.9.6",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.6.tgz",
|
||||
"integrity": "sha512-Pspx3oKAPJtjNwE92YS05HQoY7z2SFyOpHo9MqJor3BXAGNaPUs83CuVp9VISFkSjyRfiTpmKuAYGJB7S7hOxw==",
|
||||
"dev": true
|
||||
},
|
||||
"uuid": {
|
||||
"version": "8.3.2",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
|
||||
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
|
||||
}
|
||||
}
|
||||
}
|
20
package.json
20
package.json
|
@ -1,20 +0,0 @@
|
|||
{
|
||||
"name": "dunamai-action",
|
||||
"version": "1.2.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"build": "ncc build src/index.ts --out public"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.10.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^16.11.7",
|
||||
"@vercel/ncc": "^0.34.0",
|
||||
"typescript": "^3.9.6"
|
||||
}
|
||||
}
|
2873
public/index.js
2873
public/index.js
File diff suppressed because it is too large
Load diff
40
src/index.ts
40
src/index.ts
|
@ -1,40 +0,0 @@
|
|||
import * as core from "@actions/core";
|
||||
import { execSync } from "child_process";
|
||||
|
||||
function runCommand(command: string): Buffer {
|
||||
console.log(`Running command: ${command}`);
|
||||
return execSync(command);
|
||||
}
|
||||
|
||||
function main(): void {
|
||||
const install = core.getInput("install");
|
||||
const envVar = core.getInput("env-var");
|
||||
const command = core.getInput("command");
|
||||
const args = core.getInput("args");
|
||||
|
||||
if (install === "none") {
|
||||
// No install.
|
||||
} else if (install === "latest") {
|
||||
runCommand("pip install dunamai");
|
||||
} else {
|
||||
runCommand(`pip install dunamai==${install}`);
|
||||
}
|
||||
|
||||
const version = runCommand(`${command} ${args}`).toString().trim();
|
||||
core.setOutput("version", version);
|
||||
console.log(`Dynamic version: ${version}`);
|
||||
|
||||
if (envVar !== "") {
|
||||
console.log(`Setting environment variable: ${envVar}`);
|
||||
core.exportVariable(envVar, version);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
main();
|
||||
} catch (error) {
|
||||
core.setFailed(
|
||||
// @ts-ignore
|
||||
error.message
|
||||
);
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"target": "es5",
|
||||
"outDir": "out",
|
||||
"lib": [
|
||||
"es5"
|
||||
],
|
||||
"rootDir": "src",
|
||||
"strict": true,
|
||||
"noFallthroughCasesInSwitch": true
|
||||
},
|
||||
"include": [
|
||||
"src/*.ts"
|
||||
]
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue