You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.7 KiB
59 lines
1.7 KiB
// Copyright 2014 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.
|
|
|
|
// Wrapper around /etc/os-release and /etc/os-release.d.
|
|
// Standard fields can come from both places depending on how we set them. They
|
|
// should always be accessed through this interface.
|
|
|
|
#ifndef LIBBRILLO_BRILLO_OSRELEASE_READER_H_
|
|
#define LIBBRILLO_BRILLO_OSRELEASE_READER_H_
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include <brillo/brillo_export.h>
|
|
#include <brillo/key_value_store.h>
|
|
#include <gtest/gtest_prod.h>
|
|
|
|
namespace brillo {
|
|
|
|
class BRILLO_EXPORT OsReleaseReader final {
|
|
public:
|
|
// Create an empty reader
|
|
OsReleaseReader() = default;
|
|
|
|
// Loads the key=value pairs from either /etc/os-release.d/<KEY> or
|
|
// /etc/os-release.
|
|
void Load();
|
|
|
|
// Same as the private Load method.
|
|
// This need to be public so that services can use it in testing mode (for
|
|
// autotest tests for example).
|
|
// This should not be used in production so suffix it with TestingOnly to
|
|
// make it obvious.
|
|
void LoadTestingOnly(const base::FilePath& root_dir);
|
|
|
|
// Getter for the given key. Returns whether the key was found on the store.
|
|
bool GetString(const std::string& key, std::string* value) const;
|
|
|
|
// Getter for all the keys in /etc/os-release.
|
|
std::vector<std::string> GetKeys() const;
|
|
|
|
private:
|
|
// The map storing all the key-value pairs.
|
|
KeyValueStore store_;
|
|
|
|
// os-release can be lazily loaded if need be.
|
|
bool initialized_;
|
|
|
|
// Load the data from a given root_dir.
|
|
BRILLO_PRIVATE void Load(const base::FilePath& root_dir);
|
|
|
|
DISALLOW_COPY_AND_ASSIGN(OsReleaseReader);
|
|
};
|
|
|
|
} // namespace brillo
|
|
|
|
#endif // LIBBRILLO_BRILLO_OSRELEASE_READER_H_
|