// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// @dart = 2.8

import '../base/process.dart';

import 'fuchsia_device.dart';

// Usage: session_control <command> [<args>]
//
// Various operations to control sessions.
//
// Options:
// --help            display usage information
//
// Commands:
// launch            Launch a new session.
// restart           Restart the current session.
// add               Add an element to the current session.
//
// Usage: session_control launch <session_url>
//
// Launch a new session.
//
// Options:
// --help            display usage information
//
// Usage: session_control restart
//
// Restart the current session.
//
// Options:
// --help            display usage information
//
//
// Usage: session_control add <element_url>
//
// Add an element to the current session.
//
// Options:
// --help            display usage information

/// A simple wrapper around the 'session_control' tool running on the Fuchsia device.
class FuchsiaSessionControl {
  /// Instructs session_control on the device to add the app at [url] as an element.
  ///
  /// [url] should be formatted as a Fuchsia-style package URL, e.g.:
  ///     fuchsia-pkg://fuchsia.com/flutter_gallery#meta/flutter_gallery.cmx
  /// Returns true on success and false on failure.
  Future<bool> add(FuchsiaDevice device, String url) async {
    final RunResult result = await device.shell('session_control add $url');
    return result.exitCode == 0;
  }
}