Reviewed By: bhamodi Differential Revision: D33331422 fbshipit-source-id: 016e8dcc0c0c7f1fc353a348b54fda0d5e2ddc01
69 lines
1.3 KiB
Rust
69 lines
1.3 KiB
Rust
/*
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
use clap::arg_enum;
|
|
use std::fmt::{self, Display};
|
|
|
|
arg_enum! {
|
|
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, serde::Deserialize)]
|
|
#[serde(rename_all = "lowercase")]
|
|
pub enum Platform {
|
|
Mac,
|
|
Linux,
|
|
Windows
|
|
}
|
|
}
|
|
|
|
#[derive(
|
|
Debug,
|
|
Clone,
|
|
Copy,
|
|
PartialEq,
|
|
Eq,
|
|
PartialOrd,
|
|
Ord,
|
|
serde::Deserialize,
|
|
serde::Serialize
|
|
)]
|
|
#[serde(rename_all = "lowercase")]
|
|
pub enum PackType {
|
|
Frameworks,
|
|
Core,
|
|
}
|
|
|
|
#[derive(
|
|
Debug,
|
|
Clone,
|
|
Copy,
|
|
PartialEq,
|
|
Eq,
|
|
PartialOrd,
|
|
Ord,
|
|
serde::Deserialize,
|
|
serde::Serialize
|
|
)]
|
|
#[serde(rename_all = "lowercase")]
|
|
pub enum PackMode {
|
|
/// All paths need to be specified.
|
|
Exact,
|
|
/// Can use `*` and `!` syntax to specify patterns for inclusion and exclusion.
|
|
/// Only works on the root folder level.
|
|
Glob,
|
|
}
|
|
|
|
impl Display for PackType {
|
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
match *self {
|
|
Self::Frameworks => write!(f, "frameworks"),
|
|
Self::Core => write!(f, "core"),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Eq, PartialEq, Debug, serde::Serialize)]
|
|
pub struct HashSum(pub String);
|