Skip to content
This repository was archived by the owner on May 6, 2025. It is now read-only.

Commit 44443a9

Browse files
committed
optimize storage acl config
1 parent 5639e51 commit 44443a9

2 files changed

Lines changed: 67 additions & 20 deletions

File tree

lib/commands/storage.js

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
1414
Object.defineProperty(exports, "__esModule", { value: true });
1515
const fs_1 = __importDefault(require("fs"));
1616
const path_1 = __importDefault(require("path"));
17+
const inquirer_1 = __importDefault(require("inquirer"));
1718
const commander_1 = __importDefault(require("commander"));
1819
const manager_node_1 = __importDefault(require("@cloudbase/manager-node"));
1920
const utils_1 = require("../utils");
@@ -31,6 +32,12 @@ function getStorageService(envId) {
3132
return app.storage;
3233
});
3334
}
35+
const AclMap = {
36+
READONLY: '所有用户可读,仅创建者和管理员可写',
37+
PRIVATE: '仅创建者及管理员可读写',
38+
ADMINWRITE: '所有用户可读,仅管理员可写',
39+
ADMINONLY: '仅管理员可读写'
40+
};
3441
commander_1.default
3542
.command('storage:upload <localPath> <cloudPath> [envId]')
3643
.description('上传文件/文件夹')
@@ -166,18 +173,37 @@ commander_1.default
166173
const assignEnvId = yield utils_1.getEnvId(envId, configFile);
167174
const storageService = yield getStorageService(assignEnvId);
168175
const acl = yield storageService.getStorageAcl();
169-
console.log(`权限类型:${acl}`);
176+
console.log(`当前权限【${AclMap[acl]}`);
170177
});
171178
});
172179
commander_1.default
173-
.command('storage:set-acl <acl> [envId]')
180+
.command('storage:set-acl [envId]')
174181
.description('设置文件存储权限信息')
175-
.action(function (acl, envId, options) {
182+
.action(function (envId, options) {
176183
return __awaiter(this, void 0, void 0, function* () {
177-
const validAcl = ['READONLY', 'PRIVATE', 'ADMINWRITE', 'ADMINONLY'];
178-
if (!validAcl.includes(acl)) {
179-
throw new error_1.CloudBaseError('非法的权限值,仅支持:READONLY, PRIVATE, ADMINWRITE, ADMINONLY');
180-
}
184+
const { acl } = yield inquirer_1.default.prompt({
185+
type: 'list',
186+
name: 'acl',
187+
message: '选择权限',
188+
choices: [
189+
{
190+
name: '所有用户可读,仅创建者和管理员可写',
191+
value: 'READONLY'
192+
},
193+
{
194+
name: '仅创建者及管理员可读写',
195+
value: 'PRIVATE'
196+
},
197+
{
198+
name: '所有用户可读,仅管理员可写',
199+
value: 'ADMINWRITE'
200+
},
201+
{
202+
name: '仅管理员可读写',
203+
value: 'ADMINONLY'
204+
}
205+
]
206+
});
181207
const { configFile } = options.parent;
182208
const assignEnvId = yield utils_1.getEnvId(envId, configFile);
183209
const storageService = yield getStorageService(assignEnvId);

src/commands/storage.ts

Lines changed: 34 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import fs from 'fs'
22
import path from 'path'
3+
import inquirer from 'inquirer'
34
import program from 'commander'
45
import CloudBase from '@cloudbase/manager-node'
56
import { StorageService } from '@cloudbase/manager-node/types/storage'
@@ -25,6 +26,13 @@ async function getStorageService(envId: string): Promise<StorageService> {
2526
return app.storage
2627
}
2728

29+
const AclMap = {
30+
READONLY: '所有用户可读,仅创建者和管理员可写',
31+
PRIVATE: '仅创建者及管理员可读写',
32+
ADMINWRITE: '所有用户可读,仅管理员可写',
33+
ADMINONLY: '仅管理员可读写'
34+
}
35+
2836
program
2937
.command('storage:upload <localPath> <cloudPath> [envId]')
3038
.description('上传文件/文件夹')
@@ -180,23 +188,36 @@ program
180188

181189
const acl = await storageService.getStorageAcl()
182190

183-
console.log(`权限类型:${acl}`)
191+
console.log(`当前权限【${AclMap[acl]}`)
184192
})
185193

186194
program
187-
.command('storage:set-acl <acl> [envId]')
195+
.command('storage:set-acl [envId]')
188196
.description('设置文件存储权限信息')
189-
.action(async function(
190-
acl: 'READONLY' | 'PRIVATE' | 'ADMINWRITE' | 'ADMINONLY',
191-
envId: string,
192-
options
193-
) {
194-
const validAcl = ['READONLY', 'PRIVATE', 'ADMINWRITE', 'ADMINONLY']
195-
if (!validAcl.includes(acl)) {
196-
throw new CloudBaseError(
197-
'非法的权限值,仅支持:READONLY, PRIVATE, ADMINWRITE, ADMINONLY'
198-
)
199-
}
197+
.action(async function(envId: string, options) {
198+
const { acl } = await inquirer.prompt({
199+
type: 'list',
200+
name: 'acl',
201+
message: '选择权限',
202+
choices: [
203+
{
204+
name: '所有用户可读,仅创建者和管理员可写',
205+
value: 'READONLY'
206+
},
207+
{
208+
name: '仅创建者及管理员可读写',
209+
value: 'PRIVATE'
210+
},
211+
{
212+
name: '所有用户可读,仅管理员可写',
213+
value: 'ADMINWRITE'
214+
},
215+
{
216+
name: '仅管理员可读写',
217+
value: 'ADMINONLY'
218+
}
219+
]
220+
})
200221
const { configFile } = options.parent
201222
const assignEnvId = await getEnvId(envId, configFile)
202223
const storageService = await getStorageService(assignEnvId)

0 commit comments

Comments
 (0)