diff --git a/.vscode/launch.json b/.vscode/launch.json index 9dc9c56..7e9c7c7 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -16,6 +16,17 @@ "env": { "HTTP_BIND_PORT": "3333" } + }, + { + "type": "pwa-node", + "request": "launch", + "name": "web:libertylinks-cli", + "skipFiles": [ + "/**" + ], + "program": "${workspaceFolder:dtp-libertylinks}/dtp-libertylinks-cli.js", + "console": "integratedTerminal", + "args": ["--action=make-bucket", "images"] } ] } \ No newline at end of file diff --git a/app/services/minio.js b/app/services/minio.js index 2aa1ebc..f4548b1 100644 --- a/app/services/minio.js +++ b/app/services/minio.js @@ -32,6 +32,16 @@ class MinioService extends SiteService { this.log.info(`stopping ${module.exports.name} service`); } + async makeBucket (name, region) { + try { + const result = await this.minio.makeBucket(name, region); + return result; + } catch (error) { + this.log.error('failed to create bucket on MinIO', { name, region, error }); + throw error; + } + } + async uploadFile (fileInfo) { try { const result = await this.minio.fPutObject( diff --git a/dtp-libertylinks-cli.js b/dtp-libertylinks-cli.js index bd8a2e0..e93057d 100644 --- a/dtp-libertylinks-cli.js +++ b/dtp-libertylinks-cli.js @@ -91,6 +91,16 @@ module.deleteOtpAccount = async (target) => { } }; +module.makeBucket = async (target) => { + const { minio: minioService } = module.services; + try { + module.log.info('creating bucket', { target }); + await minioService.makeBucket(target, 'us-east-1'); + } catch (error) { + module.log.error('failed to create bucket', { target, error }); + } +}; + /* * SERVER INIT */ @@ -137,6 +147,10 @@ module.deleteOtpAccount = async (target) => { await module.revokePermission(target, module.app.options.permission); break; + case 'make-bucket': + await module.makeBucket(target); + break; + case 'delete-otp': await module.deleteOtpAccount(target); break;