Copy setting and keymap files from legacy config locations
This commit is contained in:
parent
5f6e4c7d91
commit
f2d92d640d
3 changed files with 45 additions and 19 deletions
|
@ -42,9 +42,7 @@ use zed::{
|
|||
|
||||
fn main() {
|
||||
let http = http::client();
|
||||
fs::create_dir_all(&*zed::paths::LANGUAGES_DIR).expect("could not create languages path");
|
||||
fs::create_dir_all(&*zed::paths::DB_DIR).expect("could not create database path");
|
||||
fs::create_dir_all(&*zed::paths::LOGS_DIR).expect("could not create logs path");
|
||||
init_paths();
|
||||
init_logger();
|
||||
|
||||
log::info!("========== starting zed ==========");
|
||||
|
@ -195,6 +193,28 @@ fn main() {
|
|||
});
|
||||
}
|
||||
|
||||
fn init_paths() {
|
||||
fs::create_dir_all(&*zed::paths::CONFIG_DIR).expect("could not create config path");
|
||||
fs::create_dir_all(&*zed::paths::LANGUAGES_DIR).expect("could not create languages path");
|
||||
fs::create_dir_all(&*zed::paths::DB_DIR).expect("could not create database path");
|
||||
fs::create_dir_all(&*zed::paths::LOGS_DIR).expect("could not create logs path");
|
||||
|
||||
// Copy setting files from legacy locations. TODO: remove this after a few releases.
|
||||
thread::spawn(|| {
|
||||
if fs::metadata(&*zed::paths::legacy::SETTINGS).is_ok()
|
||||
&& fs::metadata(&*zed::paths::SETTINGS).is_err()
|
||||
{
|
||||
fs::copy(&*zed::paths::legacy::SETTINGS, &*zed::paths::SETTINGS).log_err();
|
||||
}
|
||||
|
||||
if fs::metadata(&*zed::paths::legacy::KEYMAP).is_ok()
|
||||
&& fs::metadata(&*zed::paths::KEYMAP).is_err()
|
||||
{
|
||||
fs::copy(&*zed::paths::legacy::KEYMAP, &*zed::paths::KEYMAP).log_err();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
fn init_logger() {
|
||||
if stdout_is_a_pty() {
|
||||
env_logger::init();
|
||||
|
|
|
@ -1,22 +1,24 @@
|
|||
use std::{env, path::PathBuf};
|
||||
use std::path::PathBuf;
|
||||
|
||||
use lazy_static::lazy_static;
|
||||
|
||||
lazy_static! {
|
||||
lazy_static::lazy_static! {
|
||||
static ref HOME: PathBuf = dirs::home_dir().expect("failed to determine home directory");
|
||||
static ref CACHE_DIR: PathBuf = dirs::cache_dir()
|
||||
.expect("failed to determine cache directory")
|
||||
.join("Zed");
|
||||
pub static ref CONFIG_DIR: PathBuf = env::var_os("XDG_CONFIG_HOME")
|
||||
.map(|home| home.into())
|
||||
.unwrap_or_else(|| HOME.join(".config"))
|
||||
.join("zed");
|
||||
pub static ref CONFIG_DIR: PathBuf = HOME.join(".config").join("zed");
|
||||
pub static ref LOGS_DIR: PathBuf = HOME.join("Library/Logs/Zed");
|
||||
pub static ref LANGUAGES_DIR: PathBuf = CACHE_DIR.join("languages");
|
||||
pub static ref DB_DIR: PathBuf = CACHE_DIR.join("db");
|
||||
pub static ref LANGUAGES_DIR: PathBuf = HOME.join("Library/Application Support/Zed/languages");
|
||||
pub static ref DB_DIR: PathBuf = HOME.join("Library/Application Support/Zed/db");
|
||||
pub static ref DB: PathBuf = DB_DIR.join("zed.db");
|
||||
pub static ref SETTINGS: PathBuf = CONFIG_DIR.join("settings.json");
|
||||
pub static ref KEYMAP: PathBuf = CONFIG_DIR.join("keymap.json");
|
||||
pub static ref LOG: PathBuf = LOGS_DIR.join("Zed.log");
|
||||
pub static ref OLD_LOG: PathBuf = LOGS_DIR.join("Zed.log.old");
|
||||
}
|
||||
|
||||
pub mod legacy {
|
||||
use std::path::PathBuf;
|
||||
|
||||
lazy_static::lazy_static! {
|
||||
static ref CONFIG_DIR: PathBuf = super::HOME.join(".zed");
|
||||
pub static ref SETTINGS: PathBuf = CONFIG_DIR.join("settings.json");
|
||||
pub static ref KEYMAP: PathBuf = CONFIG_DIR.join("keymap.json");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -223,11 +223,11 @@ pub fn initialize_workspace(
|
|||
},
|
||||
"schemas": [
|
||||
{
|
||||
"fileMatch": [".zed/settings.json"],
|
||||
"fileMatch": [schema_file_match(&*paths::SETTINGS)],
|
||||
"schema": settings_file_json_schema(theme_names, language_names),
|
||||
},
|
||||
{
|
||||
"fileMatch": [".zed/keymap.json"],
|
||||
"fileMatch": [schema_file_match(&*paths::KEYMAP)],
|
||||
"schema": keymap_file_json_schema(&action_names),
|
||||
}
|
||||
]
|
||||
|
@ -385,7 +385,6 @@ fn open_config_file(
|
|||
cx.spawn(|workspace, mut cx| async move {
|
||||
let fs = &app_state.fs;
|
||||
if !fs.is_file(path).await {
|
||||
fs.create_dir(&paths::CONFIG_DIR).await?;
|
||||
fs.create_file(path, Default::default()).await?;
|
||||
fs.save(path, &default_content(), Default::default())
|
||||
.await?;
|
||||
|
@ -481,6 +480,11 @@ fn open_bundled_config_file(
|
|||
});
|
||||
}
|
||||
|
||||
fn schema_file_match(path: &Path) -> &Path {
|
||||
path.strip_prefix(path.parent().unwrap().parent().unwrap())
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue