aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/action.rs13
-rw-r--r--src/util.rs12
2 files changed, 19 insertions, 6 deletions
diff --git a/src/action.rs b/src/action.rs
index 5ebf34a..3041c0b 100644
--- a/src/action.rs
+++ b/src/action.rs
@@ -195,14 +195,21 @@ fn remove(packages: Vec<String>) -> Result<(), String> {
}
fn list() -> Result<(), String> {
- for entry in fs::read_dir(BASE_CONFIG_PATH)
+ if !nix::unistd::geteuid().is_root() {
+ return Err("list must be run as root".to_string());
+ }
+
+ for entry in fs::read_dir(BASE_REPO_PATH)
.map_err(|e| format!("failed to iterate package directory: {}", e))?
{
let entry = entry.map_err(|e| e.to_string())?;
let path = entry.path();
- if path.is_file() {
+ if path.is_dir() {
+ let oid = util::get_commit_hash(&path)
+ .map_err(|e| format!("failed to get commit hash: {e}"))?;
+ let oid = oid.as_str().unwrap();
if let Some(stem) = path.file_stem() {
- println!("{}", stem.to_string_lossy());
+ println!("{} ({})", stem.to_string_lossy(), oid);
}
}
}
diff --git a/src/util.rs b/src/util.rs
index 8508377..7bd2142 100644
--- a/src/util.rs
+++ b/src/util.rs
@@ -1,4 +1,4 @@
-use git2::{Cred, FetchOptions, RemoteCallbacks, Repository, build::CheckoutBuilder};
+use git2::{Buf, Cred, FetchOptions, RemoteCallbacks, Repository, build::CheckoutBuilder};
use std::env;
use std::fs;
use std::io;
@@ -71,6 +71,14 @@ pub fn dir_size(path: &Path) -> std::io::Result<u64> {
Ok(size)
}
+pub fn get_commit_hash(path: &Path) -> Result<Buf, git2::Error> {
+ let repo = Repository::open(path)?;
+ let head = repo.head()?;
+
+ let commit = head.peel_to_commit()?;
+ Ok(repo.find_object(commit.id(), None)?.short_id()?)
+}
+
pub fn get_editor() -> String {
env::var("VISUAL")
.or_else(|_| env::var("EDITOR"))
@@ -147,11 +155,9 @@ pub fn yn_prompt(prompt: &str) -> bool {
print!("{} [y/n]: ", prompt);
io::stdout().flush().unwrap();
- // Read input from user
let mut input = String::new();
io::stdin().read_line(&mut input).unwrap();
- // Normalize input
let input = input.trim().to_lowercase();
match input.as_str() {
commit/demo.png?id=2c3e681b5c75484f7708a4a16961282eda8aa198&follow=1'>higher quality image for readmeGravatar BanceDev 1-0/+0 2024-09-10added better demo to readmeGravatar BanceDev 2-0/+10 2024-09-10added handling for when prompt gets longer than terminal widthGravatar BanceDev 1-0/+36 2024-09-10added support for multiline promptsGravatar BanceDev 1-4/+35 2024-09-10lua api functions for getting terminal width and heightGravatar BanceDev 4-0/+46 2024-09-09added coloring to help commandGravatar BanceDev 1-2/+2 2024-09-09add aliasing to init.luaGravatar BanceDev 9-14/+258 2024-09-09bugfix to inline backspace and delete on multiline bufferGravatar BanceDev 1-7/+23 2024-09-09fixed line wrapping when deleting inlineGravatar BanceDev 1-0/+8 2024-09-09updated gitignoreGravatar BanceDev 2-1/+2 2024-09-09fixed wrapping bug due to not using updated prompt_lengthGravatar BanceDev 1-3/+6 2024-09-09added stripping of escape sequences from prompt size to allow for coloringGravatar BanceDev 1-5/+26 2024-09-09added support for init.lua for configuring shellGravatar BanceDev 8-38/+180 2024-09-09docs: update pathGravatar Christopher Lane 1-1/+1 2024-09-08added getenv and putenv to Lua APIGravatar BanceDev 2-5/+33 2024-09-08added lua api functions for indexing historyGravatar BanceDev 2-0/+35 2024-09-08added support for cli args for lua scriptsGravatar BanceDev 4-3/+28 2024-09-07added --version flagGravatar BanceDev 1-1/+9 2024-09-07fixed error in install.sh instructionsGravatar BanceDev 1-1/+1 2024-09-07fixed bug with cursor alignment when adding text within the bufferGravatar BanceDev 1-1/+11 2024-09-06added API guide to readmeGravatar BanceDev 1-1/+5 2024-09-06Update README.mdGravatar Lance Borden 1-1/+1 2024-09-06better readmeGravatar BanceDev 2-2/+14