| Index: pkg/fasta/lib/src/environment_variable.dart
|
| diff --git a/pkg/fasta/lib/src/environment_variable.dart b/pkg/fasta/lib/src/environment_variable.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c58ab1771ebcb3abb30052fd238106cde485bbce
|
| --- /dev/null
|
| +++ b/pkg/fasta/lib/src/environment_variable.dart
|
| @@ -0,0 +1,72 @@
|
| +// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +library fasta.environment_variable;
|
| +
|
| +import 'dart:async' show
|
| + Future;
|
| +
|
| +import 'dart:io' show
|
| + Directory,
|
| + File,
|
| + Platform;
|
| +
|
| +import 'errors.dart' show
|
| + inputError;
|
| +
|
| +class EnvironmentVariable {
|
| + final String name;
|
| +
|
| + final String what;
|
| +
|
| + const EnvironmentVariable(this.name, this.what);
|
| +
|
| + Future<String> get value async {
|
| + String value = Platform.environment[name];
|
| + if (value == null) return variableNotDefined();
|
| + await validate(value);
|
| + return value;
|
| + }
|
| +
|
| + Future<Null> validate(String value) => new Future<Null>.value();
|
| +
|
| + variableNotDefined() {
|
| + inputError(null, null,
|
| + "The environment variable '$name' isn't defined. $what");
|
| + }
|
| +}
|
| +
|
| +class EnvironmentVariableFile extends EnvironmentVariable {
|
| + const EnvironmentVariableFile(String name, String what)
|
| + : super(name, what);
|
| +
|
| + Future<Null> validate(String value) async {
|
| + if (!await new File(value).exists()) notFound(value);
|
| + return null;
|
| + }
|
| +
|
| + notFound(String value) {
|
| + inputError(null, null,"The environment variable '$name' has the value "
|
| + "'$value', that isn't a file. $what");
|
| + }
|
| +}
|
| +
|
| +class EnvironmentVariableDirectory extends EnvironmentVariable {
|
| + const EnvironmentVariableDirectory(String name, String what)
|
| + : super(name, what);
|
| +
|
| + Future<Null> validate(String value) async {
|
| + if (!await new Directory(value).exists()) notFound(value);
|
| + return null;
|
| + }
|
| +
|
| + notFound(String value) {
|
| + inputError(null, null, "The environment variable '$name' has the value "
|
| + "'$value', that isn't a directory. $what");
|
| + }
|
| +}
|
| +
|
| +Future<bool> fileExists(Uri base, String path) async {
|
| + return await new File.fromUri(base.resolve(path)).exists();
|
| +}
|
|
|