Implement remove imported package

This commit is contained in:
raychu86 2020-09-02 18:57:33 -07:00
parent db997ac90a
commit 1ab7c49e72
3 changed files with 40 additions and 2 deletions

View File

@ -46,4 +46,20 @@ impl ImportsDirectory {
Ok(()) Ok(())
} }
/// Removes an imported package in the imports directory at the provided path.
pub fn remove_import(path: &PathBuf, package_name: &str) -> Result<(), ImportsDirectoryError> {
let mut path = path.to_owned();
if path.is_dir() && !path.ends_with(IMPORTS_DIRECTORY_NAME) {
path.push(PathBuf::from(IMPORTS_DIRECTORY_NAME));
}
path.push(PathBuf::from(package_name));
if path.is_dir() && path.exists() {
fs::remove_dir_all(&path).map_err(ImportsDirectoryError::Removing)?;
}
Ok(())
}
} }

View File

@ -36,4 +36,9 @@ impl LeoPackage {
pub fn initialize(package_name: &str, is_lib: bool, path: &PathBuf) -> Result<(), PackageError> { pub fn initialize(package_name: &str, is_lib: bool, path: &PathBuf) -> Result<(), PackageError> {
package::Package::initialize(package_name, is_lib, path) package::Package::initialize(package_name, is_lib, path)
} }
/// Removes an imported Leo package
pub fn remove_imported_package(package_name: &str, path: &PathBuf) -> Result<(), PackageError> {
package::Package::remove_imported_package(package_name, path)
}
} }

View File

@ -1,5 +1,22 @@
// Copyright (C) 2019-2020 Aleo Systems Inc.
// This file is part of the Leo library.
// The Leo library is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// The Leo library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with the Leo library. If not, see <https://www.gnu.org/licenses/>.
use crate::{ use crate::{
errors::PackageError, errors::PackageError,
imports::ImportsDirectory,
inputs::{InputFile, InputsDirectory, StateFile}, inputs::{InputFile, InputsDirectory, StateFile},
root::{Gitignore, Manifest, README}, root::{Gitignore, Manifest, README},
source::{LibraryFile, MainFile, SourceDirectory}, source::{LibraryFile, MainFile, SourceDirectory},
@ -167,7 +184,7 @@ impl Package {
} }
/// Removes the package at the given path /// Removes the package at the given path
pub fn remove_package(_package_name: &str) -> Result<(), PackageError> { pub fn remove_imported_package(package_name: &str, path: &PathBuf) -> Result<(), PackageError> {
unimplemented!() Ok(ImportsDirectory::remove_import(path, package_name)?)
} }
} }