创造&写一个执行'执行'允许?

时间:2014-12-15 23:17:44

标签: dart

我正在用dart写一个bash脚本。

下面的代码创建一个文件。但该文件没有“执行”权限。 所以我无法执行./ex.sh

new File('ex.sh').writeAsStringSync(script_str);

也许,我需要将FileStat设置为文件。但我找不到任何API。

2 个答案:

答案 0 :(得分:2)

Haven没试过,但是如果你尝试的话会怎么样:

new File('ex.sh').writeAsString(script_str).then((final File file) {
    return file.stat().then((final FileStat stat) => stat.mode = 777);
});

答案 1 :(得分:1)

似乎这个功能还没有实现。 请参阅code.google.com/p/dart/issues/detail?id=15078

作为解决方法,只需创建一个实用程序函数来运行chmod命令。

void _runBashCommandSync(GrinderContext context, String command, {String cwd, bool log: true}) {
  context.log(command);
  ProcessResult result =
    Process.runSync('/bin/bash', ['-c', command], workingDirectory: cwd);
  if (!log) return;
  if (result.stdout.isNotEmpty) {
    context.log(result.stdout);
  }
  if (result.stderr.isNotEmpty) {
    context.log(result.stderr);
  }
  if (result.exitCode > 0) {
    context.fail("exit code ${result.exitCode}");
  }
}
_runBashCommandSync(context, 'chmod 777 ex.sh');