Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ac407794 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "aflags: read protos from all containers" into main

parents 78986f59 206d44af
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

members = [
    "aconfig",
    "aconfig_device_paths",
    "aconfig_protos",
    "aconfig_storage_file",
    "aconfig_storage_read_api",
+38 −0
Original line number Diff line number Diff line
// Copyright (C) 2024 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

rust_defaults {
    name: "libaconfig_device_paths.defaults",
    edition: "2021",
    clippy_lints: "android",
    lints: "android",
    srcs: ["src/lib.rs"],
    rustlibs: [
        "libaconfig_protos",
        "libanyhow",
        "libprotobuf",
        "libregex",
    ],
}

rust_library {
    name: "libaconfig_device_paths",
    crate_name: "aconfig_device_paths",
    host_supported: true,
    defaults: ["libaconfig_device_paths.defaults"],
}
+9 −0
Original line number Diff line number Diff line
[package]
name = "aconfig_device_paths"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
anyhow = "1.0.82"
+6 −0
Original line number Diff line number Diff line
[
    "/system/etc/aconfig_flags.pb",
    "/system_ext/etc/aconfig_flags.pb",
    "/product/etc/aconfig_flags.pb",
    "/vendor/etc/aconfig_flags.pb",
]
+47 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

//! Library for finding all aconfig on-device protobuf file paths.

use anyhow::Result;
use std::path::PathBuf;

use std::fs;

/// Determine all paths that contain an aconfig protobuf file.
pub fn parsed_flags_proto_paths() -> Result<Vec<PathBuf>> {
    let mut result: Vec<PathBuf> = include!("../partition_aconfig_flags_paths.txt")
        .map(|s| PathBuf::from(s.to_string()))
        .to_vec();
    for dir in fs::read_dir("/apex")? {
        let dir = dir?;

        // Only scan the currently active version of each mainline module; skip the @version dirs.
        if dir.file_name().as_encoded_bytes().iter().any(|&b| b == b'@') {
            continue;
        }

        let mut path = PathBuf::from("/apex");
        path.push(dir.path());
        path.push("etc");
        path.push("aconfig_flags.pb");
        if path.exists() {
            result.push(path);
        }
    }

    Ok(result)
}
Loading