Files
objectstorage/ts/cli.ts
Juergen Kunz 1f281bd7c8 feat(core): rebrand to @lossless.zone/objectstorage
- Rename from @lossless.zone/s3container to @lossless.zone/objectstorage
- Replace @push.rocks/smarts3 with @push.rocks/smartstorage
- Change env var prefix from S3_ to OBJST_
- Rename S3Container class to ObjectStorageContainer
- Update web component prefix from s3c- to objst-
- Update UI labels, CLI flags, documentation, and Docker config
2026-03-14 23:56:02 +00:00

78 lines
2.2 KiB
TypeScript

import { ObjectStorageContainer } from './classes/objectstoragecontainer.ts';
import type { IObjectStorageConfig } from './types.ts';
export async function runCli(): Promise<void> {
const args = Deno.args;
const command = args[0];
if (!command || command === 'help') {
printHelp();
return;
}
if (command === 'server') {
const configOverrides: Partial<IObjectStorageConfig> = {};
// Parse CLI args
for (let i = 1; i < args.length; i++) {
switch (args[i]) {
case '--storage-port':
configOverrides.objstPort = parseInt(args[++i], 10);
break;
case '--ui-port':
configOverrides.uiPort = parseInt(args[++i], 10);
break;
case '--storage-dir':
configOverrides.storageDirectory = args[++i];
break;
case '--ephemeral':
// Use a temp directory for storage
configOverrides.storageDirectory = './.nogit/objstdata';
break;
}
}
const container = new ObjectStorageContainer(configOverrides);
// Graceful shutdown
const shutdown = async () => {
console.log('\nShutting down...');
await container.stop();
Deno.exit(0);
};
Deno.addSignalListener('SIGINT', shutdown);
Deno.addSignalListener('SIGTERM', shutdown);
await container.start();
} else {
console.error(`Unknown command: ${command}`);
printHelp();
Deno.exit(1);
}
}
function printHelp(): void {
console.log(`
ObjectStorage - S3-compatible object storage server with management UI
Usage:
objectstorage server [options]
Options:
--ephemeral Use local .nogit/objstdata for storage
--storage-port PORT Storage API port (default: 9000, env: OBJST_PORT)
--ui-port PORT Management UI port (default: 3000, env: UI_PORT)
--storage-dir DIR Storage directory (default: /data, env: OBJST_STORAGE_DIR)
Environment Variables:
OBJST_PORT Storage API port
UI_PORT Management UI port
OBJST_STORAGE_DIR Storage directory
OBJST_ACCESS_KEY Access key (default: admin)
OBJST_SECRET_KEY Secret key (default: admin)
OBJST_ADMIN_PASSWORD Admin UI password (default: admin)
OBJST_REGION Storage region (default: us-east-1)
`);
}