mirror of
https://github.com/italicsjenga/agb.git
synced 2024-12-24 00:31:34 +11:00
Extract utils
This commit is contained in:
parent
d8ca41ec3d
commit
f2f0f771fb
|
@ -3,6 +3,7 @@ use clap::Command;
|
||||||
|
|
||||||
mod publish;
|
mod publish;
|
||||||
mod release;
|
mod release;
|
||||||
|
mod utils;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
use clap::{Arg, ArgAction, ArgMatches};
|
use clap::{Arg, ArgAction, ArgMatches};
|
||||||
use std::collections::{HashMap, HashSet};
|
use std::collections::{HashMap, HashSet};
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::Path;
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
|
use std::thread;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use std::{env, thread};
|
|
||||||
use toml_edit::Document;
|
use toml_edit::Document;
|
||||||
|
|
||||||
|
use crate::utils::*;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
FindRootDirectory,
|
FindRootDirectory,
|
||||||
|
@ -31,7 +33,7 @@ pub fn command() -> clap::Command {
|
||||||
pub fn publish(matches: &ArgMatches) -> Result<(), Error> {
|
pub fn publish(matches: &ArgMatches) -> Result<(), Error> {
|
||||||
let dry_run = matches.get_one::<bool>("Dry run").expect("defined by clap");
|
let dry_run = matches.get_one::<bool>("Dry run").expect("defined by clap");
|
||||||
|
|
||||||
let root_directory = find_agb_root_directory()?;
|
let root_directory = find_agb_root_directory().map_err(|_| Error::FindRootDirectory)?;
|
||||||
|
|
||||||
let mut fully_published_crates: HashSet<String> = HashSet::new();
|
let mut fully_published_crates: HashSet<String> = HashSet::new();
|
||||||
let mut published_crates: HashSet<String> = HashSet::new();
|
let mut published_crates: HashSet<String> = HashSet::new();
|
||||||
|
@ -86,19 +88,6 @@ pub fn publish(matches: &ArgMatches) -> Result<(), Error> {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn find_agb_root_directory() -> Result<PathBuf, Error> {
|
|
||||||
let mut current_path = env::current_dir().map_err(|_| Error::FindRootDirectory)?;
|
|
||||||
|
|
||||||
while !current_path.clone().join("justfile").exists() {
|
|
||||||
current_path = current_path
|
|
||||||
.parent()
|
|
||||||
.ok_or(Error::FindRootDirectory)?
|
|
||||||
.to_owned();
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(current_path)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn check_if_released(crate_to_publish: &str, expected_version: &str) -> Result<bool, Error> {
|
fn check_if_released(crate_to_publish: &str, expected_version: &str) -> Result<bool, Error> {
|
||||||
let url_to_poll = &get_url_to_poll(crate_to_publish);
|
let url_to_poll = &get_url_to_poll(crate_to_publish);
|
||||||
|
|
||||||
|
@ -220,16 +209,9 @@ mod test {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn should_find_root_directory() -> Result<(), Error> {
|
|
||||||
assert_ne!(find_agb_root_directory()?.to_string_lossy(), "");
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn should_read_version() -> Result<(), Error> {
|
fn should_read_version() -> Result<(), Error> {
|
||||||
let root_directory = find_agb_root_directory()?;
|
let root_directory = crate::utils::find_agb_root_directory().unwrap();
|
||||||
let my_version = read_cargo_toml_version(&root_directory.join("tools"))?;
|
let my_version = read_cargo_toml_version(&root_directory.join("tools"))?;
|
||||||
|
|
||||||
assert_eq!(my_version, "0.1.0");
|
assert_eq!(my_version, "0.1.0");
|
||||||
|
@ -238,7 +220,7 @@ mod test {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn should_detect_dependencies() -> Result<(), Error> {
|
fn should_detect_dependencies() -> Result<(), Error> {
|
||||||
let root_directory = find_agb_root_directory()?;
|
let root_directory = crate::utils::find_agb_root_directory().unwrap();
|
||||||
let deps = get_agb_dependencies(&root_directory.join("agb"))?;
|
let deps = get_agb_dependencies(&root_directory.join("agb"))?;
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
|
|
27
tools/src/utils.rs
Normal file
27
tools/src/utils.rs
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
use std::{env, path::PathBuf};
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct FindRootDirectoryError;
|
||||||
|
|
||||||
|
pub fn find_agb_root_directory() -> Result<PathBuf, FindRootDirectoryError> {
|
||||||
|
let mut current_path = env::current_dir().map_err(|_| FindRootDirectoryError)?;
|
||||||
|
|
||||||
|
while !current_path.clone().join("justfile").exists() {
|
||||||
|
current_path = current_path
|
||||||
|
.parent()
|
||||||
|
.ok_or(FindRootDirectoryError)?
|
||||||
|
.to_owned();
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(current_path)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::find_agb_root_directory;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn find_agb_root_directory_works() {
|
||||||
|
find_agb_root_directory().unwrap();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue