initial commit
commit
3b8d2c5d99
@ -0,0 +1 @@
|
|||||||
|
/target
|
@ -0,0 +1,11 @@
|
|||||||
|
[package]
|
||||||
|
name = "ame"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
git2 = "*"
|
||||||
|
serde_json = "*"
|
||||||
|
ureq = "*"
|
@ -0,0 +1,6 @@
|
|||||||
|
debug:
|
||||||
|
cargo build
|
||||||
|
release:
|
||||||
|
cargo build --release
|
||||||
|
clean:
|
||||||
|
rm -rf target/ Cargo.lock
|
@ -0,0 +1,31 @@
|
|||||||
|
use git2::Repository;
|
||||||
|
use std::{fs, path::Path, process::exit};
|
||||||
|
use serde_json::Value;
|
||||||
|
|
||||||
|
pub fn clone(pkg: &str) {
|
||||||
|
let url = format!("https://aur.archlinux.org/{}.git", pkg);
|
||||||
|
let aurl = format!("https://aur.archlinux.org/packages/{}", pkg);
|
||||||
|
let ajsurl = format!("https://aur.archlinux.org/rpc/?v=5&type=info&arg={}", pkg);
|
||||||
|
let homedir = std::env::var("HOME").unwrap();
|
||||||
|
let cachedir = format!("{}/.cache/ame/{}", homedir, pkg);
|
||||||
|
let path = Path::new(&cachedir);
|
||||||
|
|
||||||
|
if path.exists() {
|
||||||
|
fs::remove_dir_all(path).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
let aresp = ureq::get(&aurl).call().unwrap_or_else(|error| {
|
||||||
|
println!("{}", error);
|
||||||
|
exit(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
if aresp.status() == 200 {
|
||||||
|
println!("Cloning {} ...", pkg);
|
||||||
|
Repository::clone(&url, &path).unwrap();
|
||||||
|
} else {
|
||||||
|
println!("Error, repository {} not found", pkg);
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("{}", deps);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
pub fn help() {
|
||||||
|
println!("\
|
||||||
|
Usage:\n
|
||||||
|
\"ame -S pkg\" - install a package
|
||||||
|
\"ame -R pkg\" - remove a package\
|
||||||
|
")
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
mod clone;
|
||||||
|
mod uninstall;
|
||||||
|
mod help;
|
||||||
|
use crate::{clone::clone, help::help, uninstall::uninstall};
|
||||||
|
use std::{env, process::exit};
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let args: Vec<String> = env::args().collect();
|
||||||
|
|
||||||
|
if args.len() < 3 {
|
||||||
|
help();
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
let oper = &args[1];
|
||||||
|
|
||||||
|
if oper == "-S" {
|
||||||
|
for arg in env::args().skip(2) {
|
||||||
|
clone(&arg);
|
||||||
|
}
|
||||||
|
} else if oper == "-R" {
|
||||||
|
for arg in env::args().skip(2) {
|
||||||
|
uninstall(&arg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
use std::process::Command;
|
||||||
|
|
||||||
|
pub fn uninstall(pkg: &str) {
|
||||||
|
let errstr = format!("Could not remove package {}", pkg);
|
||||||
|
Command::new("pacman")
|
||||||
|
.arg("-R")
|
||||||
|
.arg(&pkg)
|
||||||
|
.output()
|
||||||
|
.expect(&errstr);
|
||||||
|
}
|
Loading…
Reference in New Issue