exec method

  1. @override
Future<void> exec(
  1. ExecContext context
)
override

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,
  );
}