Provide windows support for new feature

This commit is contained in:
Hiers 2024-12-26 08:48:30 +00:00
parent 5c4092ff32
commit d076e6b855
3 changed files with 32 additions and 9 deletions

View file

@ -5,17 +5,35 @@ release: src/kanji_search.rs src/main.rs src/sentence_search.rs src/util.rs src/
cargo build --release cargo build --release
clean: clean:
rm -r target/debug/ ifeq ($(OS),Windows_NT)
rm -r target/release/ powershell "if (Test-Path .\target\debug) { rm -r .\target\debug };\
if (Test-Path .\target\release) { rm -r .\target\release }"
else
rm -rf target/debug/
rm -rf target/release/
endif
install: target/release/ykdt install: target/release/ykdt*
ifeq ($(OS),Windows_NT)
powershell "if (-Not (Test-Path $(DESTDIR)\"C:\Program Files\ykdt\")) { mkdir $(DESTDIR)\"C:\Program Files\ykdt\" };\
[Environment]::SetEnvironmentVariable(\"Path\", $$env:Path + \";C:\Program Files\ykdt\", \"Machine\");\
cp target\release\ykdt.exe $(DESTDIR)\"C:\Program Files\ykdt\";\
cp kanji_strokes $(DESTDIR)\"C:\Program Files\ykdt\""
else
mkdir -p $(DESTDIR)/usr/bin mkdir -p $(DESTDIR)/usr/bin
mkdir -p $(DESTDIR)/usr/local/share/ykdt mkdir -p $(DESTDIR)/usr/local/share/ykdt
cp target/release/ykdt $(DESTDIR)/usr/bin cp target/release/ykdt $(DESTDIR)/usr/bin
cp kanji_strokes $(DESTDIR)/usr/local/share/ykdt cp kanji_strokes $(DESTDIR)/usr/local/share/ykdt
endif
uninstall: uninstall:
ifeq ($(OS),Windows_NT)
powershell $$path = "([System.Environment]::GetEnvironmentVariable(\"PATH\", \"Machine\").Split(\";\") | Where-Object { $$_ -ne \"C:\Program Files\ykdt\" }) -join \";\";\
[System.Environment]::SetEnvironmentVariable(\"PATH\",$$path,\"Machine\");\
if (Test-Path $(DESTDIR)\"C:\Program Files\ykdt\") { rm -r $(DESTDIR)\"C:\Program Files\ykdt\" }"
else
rm $(DESTDIR)/usr/bin/ykdt rm $(DESTDIR)/usr/bin/ykdt
rm -r $(DESTDIR)/usr/local/share/ykdt rm -r $(DESTDIR)/usr/local/share/ykdt
endif
.PHONY: build release install uninstall clean .PHONY: build release install uninstall clean

View file

@ -148,10 +148,15 @@ fn search_by_strokes(query: &mut String, radk_list: &[radk::Membership], n: usiz
} }
pub fn get_stroke_info() -> Result<Vec<String>, std::io::Error> { pub fn get_stroke_info() -> Result<Vec<String>, std::io::Error> {
#[allow(deprecated)] let file: String;
let file = fs::read_to_string("/usr/local/share/ykdt/kanji_strokes")?; #[cfg(unix)]
{
file = fs::read_to_string("/usr/local/share/ykdt/kanji_strokes")?;
}
#[cfg(windows)]
{
file = fs::read_to_string("C:\\Program Files\\ykdt\\kanji_strokes")?;
}
let stroke_info: Vec<String> = Vec::from_iter(file.split('\n').map(|s| s.to_owned())); let stroke_info: Vec<String> = Vec::from_iter(file.split('\n').map(|s| s.to_owned()));
Ok(stroke_info) Ok(stroke_info)
} }

View file

@ -285,7 +285,7 @@ fn get_radkfile_path() -> Option<PathBuf> {
None => { None => {
unsafe { unsafe {
let mut path: Vec<u16> = Vec::with_capacity(MAX_PATH as usize); let mut path: Vec<u16> = Vec::with_capacity(MAX_PATH as usize);
match SHGetFolderPathW(0, CSIDL_PROFILE as i32, 0, 0, path.as_mut_ptr()) { match SHGetFolderPathW(std::ptr::null_mut(), CSIDL_PROFILE as i32, std::ptr::null_mut(), 0, path.as_mut_ptr()) {
S_OK => { S_OK => {
let len = wcslen(path.as_ptr()); let len = wcslen(path.as_ptr());
path.set_len(len); path.set_len(len);