| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| final OperatingSystemUtils os = new OperatingSystemUtils._(); |
| abstract class OperatingSystemUtils { |
| factory OperatingSystemUtils._() { |
| if (Platform.isWindows) { |
| return new _WindowsUtils(); |
| return new _PosixUtils(); |
| /// Make the given file executable. This may be a no-op on some platforms. |
| ProcessResult makeExecutable(File file); |
| class _PosixUtils implements OperatingSystemUtils { |
| ProcessResult makeExecutable(File file) { |
| return Process.runSync('chmod', ['u+x', file.path]); |
| class _WindowsUtils implements OperatingSystemUtils { |
| ProcessResult makeExecutable(File file) { |
| return new ProcessResult(0, 0, null, null); |
| Future<int> findAvailablePort() async { |
| ServerSocket socket = await ServerSocket.bind(InternetAddress.LOOPBACK_IP_V4, 0); |