blob: 09fd7139f4f9ef692b46668ccc3e4965508d63a1 [file] [log] [blame]
// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:meta/meta.dart';
/// Enumeration helper class
@immutable
abstract class Enum<T> {
/// The value of this enum.
final T value;
/// The relative order of this enum.
///
/// This can be used for comparison of enum values.
final int order;
/// Const constructor.
@literal
const Enum(this.value, this.order);
}
/// An [Enum] indicating the status of a build.
///
/// Values are taken from https://github.com/kharland/dart-buildbucket
@immutable
class BuildStatusEnum extends Enum<String> {
/// Indicates the build is complete.
static const BuildStatusEnum completed =
const BuildStatusEnum._('COMPLETED', 0);
/// Indicates the build is scheduled.
static const BuildStatusEnum scheduled =
const BuildStatusEnum._('SCHEDULED', 1);
/// Indicates the build is started.
static const BuildStatusEnum started = const BuildStatusEnum._('STARTED', 2);
@literal
const BuildStatusEnum._(String name, int value) : super(name, value);
static final Map<String, BuildStatusEnum> _valueToEnum =
<String, BuildStatusEnum>{
completed.value: completed,
scheduled.value: scheduled,
started.value: started,
};
/// Returns a [BuildStatusEnum] from its [value].
static BuildStatusEnum from(String value) => _valueToEnum[value];
}
/// An [Enum] Indicating the result of a build.
///
/// Values are taken from https://github.com/kharland/dart-buildbucket
@immutable
class BuildResultEnum extends Enum<String> {
/// Indicates the build was successful.
static const BuildResultEnum success = const BuildResultEnum._('SUCCESS', 0);
/// Indicates the build was cancelled.
static const BuildResultEnum cancelled =
const BuildResultEnum._('CANCELLED', 1);
/// Indicates the build failed.
static const BuildResultEnum failure = const BuildResultEnum._('FAILURE', 2);
@literal
const BuildResultEnum._(String name, int value) : super(name, value);
static final Map<String, BuildResultEnum> _valueToEnum =
<String, BuildResultEnum>{
success.value: success,
cancelled.value: cancelled,
failure.value: failure,
};
/// Returns a [BuildStatusEnum] from its [value].
static BuildResultEnum from(String value) => _valueToEnum[value];
}