| // Copyright 2019 The Chromium OS 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 DEV_INSTALL_DEV_INSTALL_H_ |
| #define DEV_INSTALL_DEV_INSTALL_H_ |
| |
| #include <sys/stat.h> |
| |
| #include <istream> |
| #include <string> |
| #include <vector> |
| |
| #include <base/files/file_path.h> |
| #include <base/macros.h> |
| |
| namespace dev_install { |
| |
| class DevInstall { |
| public: |
| DevInstall(); |
| DevInstall(const std::string& binhost, |
| const std::string& binhost_version, |
| bool reinstall, |
| bool uninstall, |
| bool yes, |
| bool only_bootstrap, |
| uint32_t jobs); |
| |
| // Run the dev_install routine. |
| int Run(); |
| |
| // Whether the system is currently in dev mode. |
| virtual bool IsDevMode() const; |
| |
| // Prompts the user. |
| virtual bool PromptUser(std::istream& input, const std::string& prompt); |
| |
| // Delete a path recursively on the same mount point. |
| virtual bool DeletePath(const struct stat& base_stat, |
| const base::FilePath& dir); |
| |
| // Create a directory if it doesn't yet exist, and chmod it to 0755. |
| bool CreateMissingDirectory(const base::FilePath& dir); |
| |
| // Write the data to the file. |
| bool WriteFile(const base::FilePath& file, const std::string& data); |
| |
| // Clear the /usr/local state. |
| virtual bool ClearStateDir(const base::FilePath& dir); |
| |
| // Initialize the /usr/local state. |
| virtual bool InitializeStateDir(const base::FilePath& dir); |
| |
| // Load any runtime state we'll use later on. |
| bool LoadRuntimeSettings(const base::FilePath& lsb_release); |
| |
| // Initialize binhost_ setting from other settings. |
| void InitializeBinhost(); |
| |
| // Download & manually install the bootstrap packages. |
| virtual bool DownloadAndInstallBootstrapPackage(const std::string& package); |
| virtual bool DownloadAndInstallBootstrapPackages( |
| const base::FilePath& listing); |
| |
| // Configure the portage tooling state. |
| virtual bool ConfigurePortage(); |
| |
| // Install the extra set of packages. |
| virtual bool InstallExtraPackages(); |
| |
| // Unittest helpers. |
| void SetReinstallForTest(bool reinstall) { reinstall_ = reinstall; } |
| void SetUninstallForTest(bool uninstall) { uninstall_ = uninstall; } |
| void SetYesForTest(bool yes) { yes_ = yes; } |
| void SetStateDirForTest(const base::FilePath& dir) { state_dir_ = dir; } |
| void SetBootstrapForTest(bool bootstrap) { only_bootstrap_ = bootstrap; } |
| std::string GetDevserverUrlForTest() { return devserver_url_; } |
| std::string GetBoardForTest() { return board_; } |
| std::string GetBinhostVersionForTest() { return binhost_version_; } |
| |
| private: |
| bool reinstall_; |
| bool uninstall_; |
| bool yes_; |
| bool only_bootstrap_; |
| base::FilePath state_dir_; |
| std::string binhost_; |
| std::string binhost_version_; |
| int jobs_; |
| // The URL to the devserver for local developer builds. |
| std::string devserver_url_; |
| // The active board for calculating default binhost. |
| std::string board_; |
| |
| DISALLOW_COPY_AND_ASSIGN(DevInstall); |
| }; |
| |
| } // namespace dev_install |
| |
| #endif // DEV_INSTALL_DEV_INSTALL_H_ |