Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions scripts/run-config/add-serverless.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#!/usr/bin/env tsx

import * as readline from "readline/promises";

const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});

const rivetToken = process.env.RIVET_TOKEN;
if (!rivetToken) {
console.error("Error: RIVET_TOKEN environment variable is not set");
process.exit(1);
}

const endpoint =
process.env.RIVET_ENDPOINT ||
(await rl.question("Rivet Endpoint (default: https://api.rivet.gg): ")) ||
"https://api.rivet.gg";
const namespace =
(await rl.question("Namespace (default: default): ")) || "default";
const runnerName =
(await rl.question("Runner name (default: serverless): ")) || "serverless";
const serverlessUrl =
(await rl.question(
"Serverless URL (default: http://localhost:8080/api/start): ",
)) || "http://localhost:8080/api/start";

rl.close();

const response = await fetch(
`${endpoint}/runner-configs/${runnerName}?namespace=${namespace}`,
{
method: "PUT",
headers: {
Authorization: `Bearer ${rivetToken}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
serverless: {
url: serverlessUrl,
headers: {},
runners_margin: 1,
min_runners: 1,
max_runners: 3,
slots_per_runner: 100,
request_lifespan: 15 * 60,
},
}),
},
);

if (!response.ok) {
console.error(`Error: ${response.status} ${response.statusText}`);
console.error(await response.text());
process.exit(1);
}

console.log("✅ Successfully configured serverless runner!");

47 changes: 47 additions & 0 deletions scripts/run-config/delete-run-config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#!/usr/bin/env tsx

import * as readline from "readline/promises";

const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});

const rivetToken = process.env.RIVET_TOKEN;
if (!rivetToken) {
console.error("Error: RIVET_TOKEN environment variable is not set");
process.exit(1);
}

const endpoint =
process.env.RIVET_ENDPOINT ||
(await rl.question("Rivet Endpoint (default: https://api.rivet.gg): ")) ||
"https://api.rivet.gg";
const namespace =
(await rl.question("Namespace (default: default): ")) || "default";
const runnerName = await rl.question("Runner name to delete: ");

rl.close();

if (!runnerName) {
console.error("Error: Runner name is required");
process.exit(1);
}

const response = await fetch(
`${endpoint}/runner-configs/${runnerName}?namespace=${namespace}`,
{
method: "DELETE",
headers: {
Authorization: `Bearer ${rivetToken}`,
},
},
);

if (!response.ok) {
console.error(`Error: ${response.status} ${response.statusText}`);
console.error(await response.text());
process.exit(1);
}

console.log(`✅ Successfully deleted runner configuration "${runnerName}"!`);
44 changes: 44 additions & 0 deletions scripts/run-config/list-run-config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#!/usr/bin/env tsx

import * as readline from "readline/promises";

const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});

const rivetToken = process.env.RIVET_TOKEN;
if (!rivetToken) {
console.error("Error: RIVET_TOKEN environment variable is not set");
process.exit(1);
}

const endpoint =
process.env.RIVET_ENDPOINT ||
(await rl.question("Rivet Endpoint (default: https://api.rivet.gg): ")) ||
"https://api.rivet.gg";
const namespace =
(await rl.question("Namespace (default: default): ")) || "default";

rl.close();

const response = await fetch(
`${endpoint}/runner-configs?namespace=${namespace}`,
{
method: "GET",
headers: {
Authorization: `Bearer ${rivetToken}`,
},
},
);

if (!response.ok) {
console.error(`Error: ${response.status} ${response.statusText}`);
console.error(await response.text());
process.exit(1);
}

const data = await response.json();

// Just show the raw formatted JSON
console.log(JSON.stringify(data, null, 2));
9 changes: 9 additions & 0 deletions scripts/run-config/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"name": "@rivetkit/run-config-scripts",
"private": true,
"type": "module",
"devDependencies": {
"@types/node": "^20.0.0",
"tsx": "^4.0.0"
}
}
Loading