exec method
Run command.
The contents of katana.yaml and the arguments of the command are passed to context.
コマンドを実行します。
contextにkatana.yamlの内容やコマンドの引数が渡されます。
Implementation
@override
Future<void> exec(ExecContext context) async {
final args = context.args.where((arg) => !arg.startsWith("--")).toList();
final region = context.args.contains("--region");
final path = args.get(3, "");
if (path.isEmpty) {
error(
"[path] is not specified. Please enter [path] according to the following command.\r\nkatana code server worker [path] [--region]\r\n",
);
return;
}
if (!validateFilePath(path)) {
error(
"Invalid path: $path. Please enter a valid path according to the following command.\r\nkatana code server worker [path] [--region]\r\n",
);
return;
}
if (region && !_checkCloudflareRegionWorker(context)) {
return;
}
label(
"Create server code for Cloudflare Workers in `$directory/$path.ts`.");
final parentPath = path.parentPath();
if (parentPath.isNotEmpty) {
final parentDir = Directory("$directory/$parentPath");
if (!parentDir.existsSync()) {
await parentDir.create(recursive: true);
}
}
await generateDartCode("$directory/$path", path, ext: "ts");
final parentDir = Directory("lib/functions");
if (!parentDir.existsSync()) {
await parentDir.create(recursive: true);
}
await CodeServerCloudflareFunctionsActionCliCode(region: region)
.generateDartCode("lib/functions/$path", path);
await _registerCloudflareWorker(
path: path,
className: "${_cloudflareClassName(path)}Worker",
region: region,
);
}