diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/commands/list.rs | 12 | ||||
-rw-r--r-- | src/db.rs | 13 | ||||
-rw-r--r-- | src/input.rs | 17 |
3 files changed, 34 insertions, 8 deletions
diff --git a/src/commands/list.rs b/src/commands/list.rs index bc9e67e..585efe2 100644 --- a/src/commands/list.rs +++ b/src/commands/list.rs | |||
@@ -1,6 +1,6 @@ | |||
1 | use std::io::{Error, ErrorKind}; | 1 | use std::io::{Error, ErrorKind}; |
2 | 2 | ||
3 | use crate::{db::{lists_insert, lists_remove, config_change_current_list, lists_get_all_ids, config_get_current_list, lists_get}, Modloader, config::Cfg, input::{Input, Subcmd}}; | 3 | use crate::{db::{lists_insert, lists_remove, config_change_current_list, lists_get_all_ids, config_get_current_list, lists_get, lists_version}, Modloader, config::Cfg, input::{Input, Subcmd}}; |
4 | 4 | ||
5 | #[derive(Debug, Clone, PartialEq, Eq)] | 5 | #[derive(Debug, Clone, PartialEq, Eq)] |
6 | pub struct List { | 6 | pub struct List { |
@@ -10,7 +10,7 @@ pub struct List { | |||
10 | pub download_folder: String, | 10 | pub download_folder: String, |
11 | } | 11 | } |
12 | 12 | ||
13 | pub fn list(config: Cfg, input: Input) -> Result<(), Box<dyn std::error::Error>> { | 13 | pub async fn list(config: Cfg, input: Input) -> Result<(), Box<dyn std::error::Error>> { |
14 | 14 | ||
15 | match input.subcommand.ok_or("")? { | 15 | match input.subcommand.ok_or("")? { |
16 | Subcmd::Add => { | 16 | Subcmd::Add => { |
@@ -22,6 +22,9 @@ pub fn list(config: Cfg, input: Input) -> Result<(), Box<dyn std::error::Error>> | |||
22 | Subcmd::Remove => { | 22 | Subcmd::Remove => { |
23 | remove(config, input.args.ok_or("")?) | 23 | remove(config, input.args.ok_or("")?) |
24 | }, | 24 | }, |
25 | Subcmd::Version => { | ||
26 | version(config, input.args.ok_or("NO_VERSION")?) | ||
27 | } | ||
25 | _ => { | 28 | _ => { |
26 | Err(Box::new(Error::new(ErrorKind::InvalidInput, "WRONG_SUBCOMMAND"))) | 29 | Err(Box::new(Error::new(ErrorKind::InvalidInput, "WRONG_SUBCOMMAND"))) |
27 | } | 30 | } |
@@ -70,3 +73,8 @@ fn remove(config: Cfg, args: Vec<String>) -> Result<(), Box<dyn std::error::Erro | |||
70 | _ => panic!("list arguments should never be zero or lower"), | 73 | _ => panic!("list arguments should never be zero or lower"), |
71 | } | 74 | } |
72 | } | 75 | } |
76 | |||
77 | fn version(config: Cfg, args: Vec<String>) -> Result<(), Box<dyn std::error::Error>> { | ||
78 | lists_version(config.clone(), config_get_current_list(config.clone())?, String::from(&args[0])) | ||
79 | //update the list & with -- args | ||
80 | } | ||
@@ -32,7 +32,6 @@ pub fn mods_get_all_ids(config: Cfg) -> Result<Vec<String>, Box<dyn std::error:: | |||
32 | })?; | 32 | })?; |
33 | 33 | ||
34 | for id in id_iter { | 34 | for id in id_iter { |
35 | //println!("Found id {:?}", id.as_ref().unwrap()); | ||
36 | mods.push(id?); | 35 | mods.push(id?); |
37 | } | 36 | } |
38 | 37 | ||
@@ -53,7 +52,6 @@ pub fn mods_get_id(config: Cfg, name: String) -> Result<String, Box<dyn std::err | |||
53 | })?; | 52 | })?; |
54 | 53 | ||
55 | for id in id_iter { | 54 | for id in id_iter { |
56 | //println!("Found id {:?}", id.as_ref().unwrap()); | ||
57 | mod_id = id?; | 55 | mod_id = id?; |
58 | }; | 56 | }; |
59 | 57 | ||
@@ -74,7 +72,6 @@ pub fn mods_get_name(config: Cfg, id: String) -> Result<String, Box<dyn std::err | |||
74 | })?; | 72 | })?; |
75 | 73 | ||
76 | for name in name_iter { | 74 | for name in name_iter { |
77 | //println!("Found id {:?}", id.as_ref().unwrap()); | ||
78 | mod_name = name?; | 75 | mod_name = name?; |
79 | }; | 76 | }; |
80 | 77 | ||
@@ -394,6 +391,14 @@ pub fn lists_get(config: Cfg, list_id: String) -> Result<List, Box<dyn std::erro | |||
394 | Ok(list) | 391 | Ok(list) |
395 | } | 392 | } |
396 | 393 | ||
394 | pub fn lists_version(config: Cfg, list_id: String, version: String) -> Result<(), Box<dyn std::error::Error>> { | ||
395 | let data = devdir(format!("{}/data.db", config.data).as_str()); | ||
396 | let connection = Connection::open(data).unwrap(); | ||
397 | |||
398 | connection.execute("UPDATE lists SET mc_version = ? WHERE id = ?", [version, list_id])?; | ||
399 | Ok(()) | ||
400 | } | ||
401 | |||
397 | pub fn lists_get_all_ids(config: Cfg) -> Result<Vec<String>, Box<dyn std::error::Error>> { | 402 | pub fn lists_get_all_ids(config: Cfg) -> Result<Vec<String>, Box<dyn std::error::Error>> { |
398 | let data = devdir(format!("{}/data.db", config.data).as_str()); | 403 | let data = devdir(format!("{}/data.db", config.data).as_str()); |
399 | let connection = Connection::open(data).unwrap(); | 404 | let connection = Connection::open(data).unwrap(); |
@@ -510,7 +515,7 @@ pub fn db_setup(config: Cfg) -> Result<(), Box<dyn std::error::Error>> { | |||
510 | "CREATE TABLE 'user_config' ( 'id' TEXT, 'value' TEXT ); | 515 | "CREATE TABLE 'user_config' ( 'id' TEXT, 'value' TEXT ); |
511 | CREATE TABLE 'mods' ( 'id' TEXT, 'name' TEXT, 'versions' TEXT ); | 516 | CREATE TABLE 'mods' ( 'id' TEXT, 'name' TEXT, 'versions' TEXT ); |
512 | CREATE TABLE 'lists' ( 'id' TEXT, 'mc_version' TEXT, 'modloader' TEXT, 'download_folder' TEXT ); | 517 | CREATE TABLE 'lists' ( 'id' TEXT, 'mc_version' TEXT, 'modloader' TEXT, 'download_folder' TEXT ); |
513 | INSERT INTO 'user_config' VALUES ( 'db_version', '0.3' ); | 518 | INSERT INTO 'user_config' VALUES ( 'db_version', '0.4' ); |
514 | INSERT INTO 'user_config' VALUES ( 'current_list', '...' )", | 519 | INSERT INTO 'user_config' VALUES ( 'current_list', '...' )", |
515 | )?; | 520 | )?; |
516 | 521 | ||
diff --git a/src/input.rs b/src/input.rs index 09d05a1..d048775 100644 --- a/src/input.rs +++ b/src/input.rs | |||
@@ -46,7 +46,18 @@ impl Input { | |||
46 | } | 46 | } |
47 | 47 | ||
48 | if version { | 48 | if version { |
49 | println!("Modlist by FxQnLr v{}", env!("CARGO_PKG_VERSION")); | 49 | match std::env::var("DEV") { |
50 | Ok(dev) => { | ||
51 | let devint = dev.parse::<i32>().unwrap(); | ||
52 | if devint >= 1 { | ||
53 | println!("Modlist by FxQnLr v{} (DEV)", env!("CARGO_PKG_VERSION")); | ||
54 | } else { | ||
55 | println!("Modlist by FxQnLr v{}", env!("CARGO_PKG_VERSION")); | ||
56 | } | ||
57 | }, | ||
58 | Err(..) => println!("Modlist by FxQnLr v{}", env!("CARGO_PKG_VERSION")), | ||
59 | } | ||
60 | |||
50 | std::process::exit(0); | 61 | std::process::exit(0); |
51 | } | 62 | } |
52 | 63 | ||
@@ -101,6 +112,7 @@ pub enum Subcmd { | |||
101 | Add, | 112 | Add, |
102 | Remove, | 113 | Remove, |
103 | Change, | 114 | Change, |
115 | Version, | ||
104 | Export, | 116 | Export, |
105 | Import, | 117 | Import, |
106 | } | 118 | } |
@@ -111,6 +123,7 @@ impl Subcmd { | |||
111 | "add" => Self::Add, | 123 | "add" => Self::Add, |
112 | "remove" => Self::Remove, | 124 | "remove" => Self::Remove, |
113 | "change" => Self::Change, | 125 | "change" => Self::Change, |
126 | "version" => Self::Version, | ||
114 | "export" => Self::Export, | 127 | "export" => Self::Export, |
115 | "import" => Self::Import, | 128 | "import" => Self::Import, |
116 | _ => return Err(MLError::new(ErrorType::ArgumentError, "SUBCMD_NOT_FOUND")) | 129 | _ => return Err(MLError::new(ErrorType::ArgumentError, "SUBCMD_NOT_FOUND")) |
@@ -132,7 +145,7 @@ pub async fn get_input(config: Cfg) -> Result<(), Box<dyn std::error::Error>> { | |||
132 | modification(config, input).await | 145 | modification(config, input).await |
133 | }, | 146 | }, |
134 | Cmd::List => { | 147 | Cmd::List => { |
135 | list(config, input) | 148 | list(config, input).await |
136 | }, | 149 | }, |
137 | Cmd::Update => { | 150 | Cmd::Update => { |
138 | update(config, input).await | 151 | update(config, input).await |