blob: 2917c63efa411708fff13e9219be1378218df635 [file] [log] [blame]
// Copyright 2013 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.
#ifndef FLUTTER_SHELL_PLATFORM_WINDOWS_UWPTOOL_COMMANDS_H_
#define FLUTTER_SHELL_PLATFORM_WINDOWS_UWPTOOL_COMMANDS_H_
#include <string>
#include <vector>
namespace flutter {
// A uwptool command that can be invoked as the first argument of the uwptool
// arguments list.
class Command {
public:
Command(const std::string_view name,
const std::string_view usage,
const std::string_view description)
: name_(name), usage_(usage), description_(description) {}
virtual ~Command() {}
std::string GetCommandName() const { return name_; }
std::string GetUsage() const { return usage_; }
std::string GetDescription() const { return description_; }
// Returns true if the arguments list constitute valid arguments for this
// command.
virtual bool ValidateArgs(const std::vector<std::string>& args) const = 0;
// Invokes the command with the specified arguments list.
virtual int Run(const std::vector<std::string>& args) const = 0;
private:
std::string name_;
std::string usage_;
std::string description_;
};
// Command that prints a list of all installed applications on the system.
class ListAppsCommand : public Command {
public:
ListAppsCommand()
: Command("listapps",
"listapps",
"List installed apps by package family name") {}
bool ValidateArgs(const std::vector<std::string>& args) const override;
int Run(const std::vector<std::string>& args) const override;
};
// Command that installs the specified package and dependencies.
class InstallCommand : public Command {
public:
InstallCommand()
: Command("install",
"install PACKAGE_URI DEPENDENCY_URI...",
"Install the specified package with all listed dependencies") {}
bool ValidateArgs(const std::vector<std::string>& args) const override;
int Run(const std::vector<std::string>& args) const override;
};
// Command that uninstalls the specified package.
class UninstallCommand : public Command {
public:
UninstallCommand()
: Command("uninstall",
"uninstall PACKAGE_FAMILY_NAME",
"Uninstall the specified package") {}
bool ValidateArgs(const std::vector<std::string>& args) const override;
int Run(const std::vector<std::string>& args) const override;
};
// Command that launches the specified application package.
class LaunchCommand : public Command {
public:
LaunchCommand()
: Command("launch",
"launch PACKAGE_FAMILY_NAME",
"Launch the specified package") {}
bool ValidateArgs(const std::vector<std::string>& args) const override;
int Run(const std::vector<std::string>& args) const override;
private:
int LaunchApp(const std::wstring_view package_family,
const std::wstring_view args) const;
};
} // namespace flutter
#endif // FLUTTER_SHELL_PLATFORM_WINDOWS_UWPTOOL_COMMANDS_H_