// Copyright 2018 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.

#ifndef PERIDOT_BIN_SESSIONCTL_SESSION_CTL_CONSTANTS_H_
#define PERIDOT_BIN_SESSIONCTL_SESSION_CTL_CONSTANTS_H_

namespace modular {

// Commands available to SessionCtlApp.
constexpr char kAddModCommandString[] = "add_mod";
constexpr char kDeleteStoryCommandString[] = "delete_story";
constexpr char kListStoriesCommandString[] = "list_stories";
constexpr char kLoginGuestCommandString[] = "login_guest";
constexpr char kRemoveModCommandString[] = "remove_mod";
constexpr char kRestartSessionCommandString[] = "restart_session";

// Flags to pass to SessionCtlApp.
constexpr char kJsonOutFlagString[] = "json_out";
constexpr char kFocusModFlagString[] = "focus_mod";
constexpr char kFocusStoryFlagString[] = "focus_story";
constexpr char kModNameFlagString[] = "mod_name";
constexpr char kModUrlFlagString[] = "mod_url";
constexpr char kStoryIdFlagString[] = "story_id";
constexpr char kStoryNameFlagString[] = "story_name";

// Internal error string returned from SessionCtlApp.ExecuteCommand() if
// the user does not set a required flag.
constexpr char kGetUsageErrorString[] = "GetUsage";

constexpr char kSessionCtlServiceGlobPath[] =
    "/hub/c/sessionmgr.cmx/*/out/debug/sessionctl";
constexpr char kBasemgrDebugServiceGlobPath[] =
    "/hub/c/basemgr.cmx/*/out/debug/basemgr";
}  // namespace modular

#endif  // PERIDOT_BIN_SESSIONCTL_SESSION_CTL_CONSTANTS_H_
