openfare_lib/extension/commands/
project_dependencies_locks.rs

1use super::common;
2use crate::extension::common::Extension;
3use anyhow::Result;
4use structopt::{self, StructOpt};
5
6pub const COMMAND_NAME: &str = "project-dependencies-locks";
7
8#[derive(Debug, StructOpt, Clone)]
9#[structopt(
10    name = "no_version",
11    no_version,
12    global_settings = &[structopt::clap::AppSettings::DisableVersion]
13)]
14#[structopt(global_setting = structopt::clap::AppSettings::TrailingVarArg)]
15pub struct Arguments {
16    /// Working directory.
17    #[structopt(name = "working-directory", long)]
18    pub working_directory: String,
19
20    #[structopt(name = "extension-args", long)]
21    pub extension_args: Vec<String>,
22}
23
24pub fn run_command<T: Extension + std::fmt::Debug>(args: &Arguments, extension: &T) -> Result<()> {
25    let working_directory = std::path::PathBuf::from(&args.working_directory);
26    let result = extension.project_dependencies_locks(&working_directory, &args.extension_args);
27    common::communicate_result(result)?;
28    Ok(())
29}
30
31#[derive(Clone, Debug, Default, serde::Serialize, serde::Deserialize)]
32pub struct ProjectDependenciesLocks {
33    pub project_path: std::path::PathBuf,
34    pub package_locks: crate::package::PackageLocks,
35}