WIP
This commit is contained in:
		
							parent
							
								
									de1d9931b1
								
							
						
					
					
						commit
						0725850ad0
					
				
					 4 changed files with 164 additions and 12 deletions
				
			
		| 
						 | 
					@ -10,6 +10,7 @@ pub struct Calculation {
 | 
				
			||||||
pub fn calculate(query: &str) -> Option<Calculation> {
 | 
					pub fn calculate(query: &str) -> Option<Calculation> {
 | 
				
			||||||
	debug!("Got query {}", query);
 | 
						debug!("Got query {}", query);
 | 
				
			||||||
	let mut parser = Parser::new(Lexer::new(query));
 | 
						let mut parser = Parser::new(Lexer::new(query));
 | 
				
			||||||
 | 
						debug!("Parse tree: {:?}", parser.parse());
 | 
				
			||||||
	// debug!("final token was: {:?}", lexer.next());
 | 
						// debug!("final token was: {:?}", lexer.next());
 | 
				
			||||||
	// debug!("Tokens: {:?}", lexer.lex_all());
 | 
						// debug!("Tokens: {:?}", lexer.lex_all());
 | 
				
			||||||
	None
 | 
						None
 | 
				
			||||||
| 
						 | 
					@ -18,6 +19,14 @@ pub fn calculate(query: &str) -> Option<Calculation> {
 | 
				
			||||||
// TODO: put into own crate with dependency astro-float = "0.9.2" so I can use more than f64
 | 
					// TODO: put into own crate with dependency astro-float = "0.9.2" so I can use more than f64
 | 
				
			||||||
#[derive(Debug)]
 | 
					#[derive(Debug)]
 | 
				
			||||||
enum Token {
 | 
					enum Token {
 | 
				
			||||||
 | 
						Op(Op),
 | 
				
			||||||
 | 
						Atom(f64),
 | 
				
			||||||
 | 
					/*	Number(f64),
 | 
				
			||||||
 | 
						Func(Func),*/
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[derive(Debug)]
 | 
				
			||||||
 | 
					enum Op {
 | 
				
			||||||
	Add,
 | 
						Add,
 | 
				
			||||||
	Subtract,
 | 
						Subtract,
 | 
				
			||||||
	Multiply,
 | 
						Multiply,
 | 
				
			||||||
| 
						 | 
					@ -25,8 +34,12 @@ enum Token {
 | 
				
			||||||
	Exponent,
 | 
						Exponent,
 | 
				
			||||||
	LParen,
 | 
						LParen,
 | 
				
			||||||
	RParen,
 | 
						RParen,
 | 
				
			||||||
 | 
						Func(Func)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[derive(Debug)]
 | 
				
			||||||
 | 
					enum Atom {
 | 
				
			||||||
	Number(f64),
 | 
						Number(f64),
 | 
				
			||||||
	Func(Func),
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[derive(Debug)]
 | 
					#[derive(Debug)]
 | 
				
			||||||
| 
						 | 
					@ -46,7 +59,7 @@ enum Func {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[derive(Debug)]
 | 
					#[derive(Debug)]
 | 
				
			||||||
enum Fault {
 | 
					enum LexErr {
 | 
				
			||||||
	Eof,
 | 
						Eof,
 | 
				
			||||||
	Invalid,
 | 
						Invalid,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -64,7 +77,7 @@ impl Lexer<'_> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fn new(data: &str) -> Lexer { Lexer {data, data_ptr: data, idx: 0} }
 | 
						fn new(data: &str) -> Lexer { Lexer {data, data_ptr: data, idx: 0} }
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	fn next(&mut self) -> Result<Token, Fault> {
 | 
						fn next(&mut self) -> Result<Token, LexErr> {
 | 
				
			||||||
		match self.data.chars().nth(self.idx) {
 | 
							match self.data.chars().nth(self.idx) {
 | 
				
			||||||
			Some(val) => {
 | 
								Some(val) => {
 | 
				
			||||||
				debug!("lexing char '{}' at idx {}", val, self.idx);
 | 
									debug!("lexing char '{}' at idx {}", val, self.idx);
 | 
				
			||||||
| 
						 | 
					@ -89,16 +102,16 @@ impl Lexer<'_> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						match self.data[start..self.idx].parse() {
 | 
											match self.data[start..self.idx].parse() {
 | 
				
			||||||
							Ok(val) => Ok(Token::Number(val)),
 | 
												Ok(val) => Ok(Token::Number(val)),
 | 
				
			||||||
							Err(e) => Err(Fault::Invalid),
 | 
												Err(e) => Err(LexErr::Invalid),
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					_ => {
 | 
										_ => {
 | 
				
			||||||
						debug!("got invalid char '{}'", val);
 | 
											debug!("got invalid char '{}'", val);
 | 
				
			||||||
						Err(Fault::Invalid)
 | 
											Err(LexErr::Invalid)
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			None => Err(Fault::Eof),
 | 
								None => Err(LexErr::Eof),
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -107,8 +120,8 @@ impl Lexer<'_> {
 | 
				
			||||||
		let mut tokens: Vec<Token> = vec![];
 | 
							let mut tokens: Vec<Token> = vec![];
 | 
				
			||||||
		loop {
 | 
							loop {
 | 
				
			||||||
			match self.next() {
 | 
								match self.next() {
 | 
				
			||||||
				Err(Fault::Eof) => return Some(tokens),
 | 
									Err(LexErr::Eof) => return Some(tokens),
 | 
				
			||||||
				Err(Fault::Invalid) => return None,
 | 
									Err(LexErr::Invalid) => return None,
 | 
				
			||||||
				Ok(tok) => tokens.push(tok),
 | 
									Ok(tok) => tokens.push(tok),
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			// debug!("tokens: {:?}", tokens);
 | 
								// debug!("tokens: {:?}", tokens);
 | 
				
			||||||
| 
						 | 
					@ -120,14 +133,42 @@ struct Parser<'a> {
 | 
				
			||||||
	lex: Lexer<'a>,
 | 
						lex: Lexer<'a>,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[derive(Debug)]
 | 
				
			||||||
 | 
					enum ParseErr {
 | 
				
			||||||
 | 
						Eof,
 | 
				
			||||||
 | 
						Invalid,
 | 
				
			||||||
 | 
						// TODO, add more or maybe just use an option instead
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl Parser<'_> {
 | 
					impl Parser<'_> {
 | 
				
			||||||
	fn new(lex: Lexer) -> Parser { Parser {lex} }
 | 
						fn new(lex: Lexer) -> Parser { Parser {lex} }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fn parse(&mut self) -> Option<TokenTree>
 | 
						fn parse(&mut self) -> Option<Expr> {
 | 
				
			||||||
 | 
							self.parse_expr(0.0).ok()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fn parse_expr(&mut self, min_bp: f64) -> Result<Expr, ParseErr> {
 | 
				
			||||||
 | 
							while let Ok(val) = self.lexer.next() {debug!("token: {:?}", )}
 | 
				
			||||||
 | 
							match self.lex.next().ok()? {
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								_ => return Err(ParseErr::Invalid),
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*#[derive(Debug)]
 | 
				
			||||||
 | 
					enum Op {
 | 
				
			||||||
 | 
						Add(Expr, Expr),
 | 
				
			||||||
 | 
						Sub(Expr, Expr),
 | 
				
			||||||
 | 
						Mul(Expr, Expr),
 | 
				
			||||||
 | 
						Div(Expr, Expr),
 | 
				
			||||||
 | 
						Func(Func, Expr),
 | 
				
			||||||
 | 
					}*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TODO: look at that parser video again
 | 
					// TODO: look at that parser video again
 | 
				
			||||||
enum TokenTree {
 | 
					#[derive(Debug)]
 | 
				
			||||||
	Leaf(Token),
 | 
					enum Expr {
 | 
				
			||||||
	Thingy(TokenTree, TokenTree)
 | 
						Atom(Token),
 | 
				
			||||||
 | 
						Node(Op, Vec<Expr>),
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										34
									
								
								cert.pem
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								cert.pem
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					-----BEGIN CERTIFICATE-----
 | 
				
			||||||
 | 
					MIIF7zCCA9egAwIBAgIUb46GxLSqbrjV/nlD+ovwlYcyzOcwDQYJKoZIhvcNAQEL
 | 
				
			||||||
 | 
					BQAwgYYxCzAJBgNVBAYTAlhYMRIwEAYDVQQIDAlTdGF0ZU5hbWUxETAPBgNVBAcM
 | 
				
			||||||
 | 
					CENpdHlOYW1lMRQwEgYDVQQKDAtDb21wYW55TmFtZTEbMBkGA1UECwwSQ29tcGFu
 | 
				
			||||||
 | 
					eVNlY3Rpb25OYW1lMR0wGwYDVQQDDBRDb21tb25OYW1lT3JIb3N0bmFtZTAeFw0y
 | 
				
			||||||
 | 
					NTA2MjEwNTA1NTlaFw0zNTA2MTkwNTA1NTlaMIGGMQswCQYDVQQGEwJYWDESMBAG
 | 
				
			||||||
 | 
					A1UECAwJU3RhdGVOYW1lMREwDwYDVQQHDAhDaXR5TmFtZTEUMBIGA1UECgwLQ29t
 | 
				
			||||||
 | 
					cGFueU5hbWUxGzAZBgNVBAsMEkNvbXBhbnlTZWN0aW9uTmFtZTEdMBsGA1UEAwwU
 | 
				
			||||||
 | 
					Q29tbW9uTmFtZU9ySG9zdG5hbWUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
 | 
				
			||||||
 | 
					AoICAQC28URbBWcTpvOar679u4CwsAHQ+i+9iPBvjRG/ShdvXkAgWm+t/BvKi9JG
 | 
				
			||||||
 | 
					FOAn49IKOpcteY15qvDFRPDKk8YWoiwdMQSKRNEwEow3YlIs6xX94+PNdwsjaqy/
 | 
				
			||||||
 | 
					mhJTMh0xrElZJ5+B4mDXQHOzdS6fe0SlNhqEAkFaIuUNX1NAks7yRnkC5LGkSHHj
 | 
				
			||||||
 | 
					gD2ZThwyZ+cstvT7WEUN9uMz/FfLuQQLrVZDydE9tsoQo0CIl1l0NLiE0BN5RIwi
 | 
				
			||||||
 | 
					i6Gkao74jlxh6tXv7XcOTxZ1aV3F92qMKN1NtWFEqpC2PDdfLG5iAlwamKguD24N
 | 
				
			||||||
 | 
					RMDC9CGCiutE4lRhRQWkC89NSxOkG25MGRvK0jut7MiKOia/Xk5uJI2Rid9IWFKv
 | 
				
			||||||
 | 
					xnuT5AW9PCbjM0OSkw2G0PzthUAO1jrOyA2R50oh/YGsdslELhlpZSiu/StSx+0U
 | 
				
			||||||
 | 
					x0E9dcQHvnlllU5BrYXbDkoSCiejhD4xV35KmhIwtz7pr2cajfeJ5r7Em/hSBVbS
 | 
				
			||||||
 | 
					Zqbv5OmGgxTSSDLUTaLJA015vLnLNCV5al/iGzXKl1FOwTIzRLv+og/jK70rwOGX
 | 
				
			||||||
 | 
					Red2JnKntqfBEnR51gky9axyyz3dAMEE1rCc+oOv7ycZoEKwPdXiyneOCLT40QT6
 | 
				
			||||||
 | 
					No1UrMJCa32a4+YJgbANB8igFwwhdapD5N+qvpCWtiKsdnbPeQIDAQABo1MwUTAd
 | 
				
			||||||
 | 
					BgNVHQ4EFgQUq3zHWtMlNawKBIPiOECsuPWTB7IwHwYDVR0jBBgwFoAUq3zHWtMl
 | 
				
			||||||
 | 
					NawKBIPiOECsuPWTB7IwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOC
 | 
				
			||||||
 | 
					AgEAtoERmowTDvnZFV4ETGmj3mPXNLXaqSUDRAB5ol9N4NlRU/vFjI70sYV7uco9
 | 
				
			||||||
 | 
					628Wc5SLbA66wSmpnq5t1MeTjjra6o6bj5wOKixo1gmpUq7Ru1JmVWsNIo/Zv4ew
 | 
				
			||||||
 | 
					rmCxuapHL0U9R0P1qpJe0tYzSMFikgkFmHyL86HcuW8B/Ps3bGaGlamqmIK3HlP4
 | 
				
			||||||
 | 
					Ib+sOtInNZ1Td8eYTIYO5Nk5ko/4rjZrv9+3aZdjde1z/M2VduGGH8TCExD55Rbv
 | 
				
			||||||
 | 
					+UL8fGIEkfSNTeiA5SAN3dfqcra703mfOJfjJeoubfk8KowfGb/bVKv8Z8rkEDOj
 | 
				
			||||||
 | 
					so+sOgbq1xnSaQov7WRqYZ0yKZA0u8Arc0L8CX/rwgwoBkQafySEI/32Mqt0R4/w
 | 
				
			||||||
 | 
					MkmGZLSFTcIFrQVE+wBHTilQ1PfUmAA6kh7ks7SGwlc6KxTAtYZHWklCqib0efaJ
 | 
				
			||||||
 | 
					AbODBc97vLrR5qoH0VFSGLnjDVEYHb6TREqsCZR+9EP/JcsTRJ8RTeDVg8RnN2a6
 | 
				
			||||||
 | 
					uy01L7A3d1xnXPux45fpwgGTOEig2sD0BTHZW/bl53xQr8gJvwyr78cIVmycT/6N
 | 
				
			||||||
 | 
					K0AmYBPQWZLf6rxtommjMgf2DtvhPm6VrbHV7epk8cw8tOVRPD5uLjZzKxgFoZez
 | 
				
			||||||
 | 
					ZYNjSUse3ChC7l4FhjmTiI5DWOrS/qYbWYi9rzvG6QZwHss=
 | 
				
			||||||
 | 
					-----END CERTIFICATE-----
 | 
				
			||||||
							
								
								
									
										52
									
								
								key.pem
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								key.pem
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,52 @@
 | 
				
			||||||
 | 
					-----BEGIN PRIVATE KEY-----
 | 
				
			||||||
 | 
					MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQC28URbBWcTpvOa
 | 
				
			||||||
 | 
					r679u4CwsAHQ+i+9iPBvjRG/ShdvXkAgWm+t/BvKi9JGFOAn49IKOpcteY15qvDF
 | 
				
			||||||
 | 
					RPDKk8YWoiwdMQSKRNEwEow3YlIs6xX94+PNdwsjaqy/mhJTMh0xrElZJ5+B4mDX
 | 
				
			||||||
 | 
					QHOzdS6fe0SlNhqEAkFaIuUNX1NAks7yRnkC5LGkSHHjgD2ZThwyZ+cstvT7WEUN
 | 
				
			||||||
 | 
					9uMz/FfLuQQLrVZDydE9tsoQo0CIl1l0NLiE0BN5RIwii6Gkao74jlxh6tXv7XcO
 | 
				
			||||||
 | 
					TxZ1aV3F92qMKN1NtWFEqpC2PDdfLG5iAlwamKguD24NRMDC9CGCiutE4lRhRQWk
 | 
				
			||||||
 | 
					C89NSxOkG25MGRvK0jut7MiKOia/Xk5uJI2Rid9IWFKvxnuT5AW9PCbjM0OSkw2G
 | 
				
			||||||
 | 
					0PzthUAO1jrOyA2R50oh/YGsdslELhlpZSiu/StSx+0Ux0E9dcQHvnlllU5BrYXb
 | 
				
			||||||
 | 
					DkoSCiejhD4xV35KmhIwtz7pr2cajfeJ5r7Em/hSBVbSZqbv5OmGgxTSSDLUTaLJ
 | 
				
			||||||
 | 
					A015vLnLNCV5al/iGzXKl1FOwTIzRLv+og/jK70rwOGXRed2JnKntqfBEnR51gky
 | 
				
			||||||
 | 
					9axyyz3dAMEE1rCc+oOv7ycZoEKwPdXiyneOCLT40QT6No1UrMJCa32a4+YJgbAN
 | 
				
			||||||
 | 
					B8igFwwhdapD5N+qvpCWtiKsdnbPeQIDAQABAoICAALHmEMkqAWbK66QB7UhSe48
 | 
				
			||||||
 | 
					z7l0ImIQrrb1mB59EjHJOD6EiUJfc/2D4tvqYECsgqW3G30saifxWsLjxcpiuTA2
 | 
				
			||||||
 | 
					nhngUGAQD1IZ2pQwpyPkNyQC0b8qaquotZDPhekOmkrJ+Y0AF3D5Mk3+LVPfznz/
 | 
				
			||||||
 | 
					F8XOQ0uTwal7ZfNlyAveNqaYcktcV+hxkQSAfnnHTBpITGCab6in0Rxj24fyCCms
 | 
				
			||||||
 | 
					n5zleaEgOAyIUlPVSh1ZMeaT5eT4/BBdH8mAyXcuqRtMScmgOPMc1Q6m84xblxPA
 | 
				
			||||||
 | 
					JuTHEBwGivPK3Gbvpw7/ftiaSb41gsJnvPr0qjHeQ9jQhLdkk9iKth82oZc18kVg
 | 
				
			||||||
 | 
					ipF1TdSHz1EauoczyHM27aN1ZdPibkaic8QdPya0086sn+uXDRPELivV1xSMSHsH
 | 
				
			||||||
 | 
					xpEuANeL874X5h9Cpv4vWcJnQrbs81C4cXI46Mrc561uKljDVtvYFXvpdZuJ4GNp
 | 
				
			||||||
 | 
					C9zNNLp1ssmME9uLjLYIbmek/shb9XMpn7XhV0poWUZPGijI7qGLe6OoOqXdKoes
 | 
				
			||||||
 | 
					KMXkVJ5omfd/GvvmisJQaFcstqPO54MscFm4cBXQ0U+DxGT0QtSNi4YHtNs8EMdw
 | 
				
			||||||
 | 
					2AYlLN/DIzIm+YeR+rWNf8TYZbS1CazQj/ee4DTPAprKsumaR8/Cw+ACl6ICpUFA
 | 
				
			||||||
 | 
					bHMCd65TcV94F+LU7L5VAoIBAQDv8oPAUMeaFpY524h9k33HlNmvrmA5aF9tbeEp
 | 
				
			||||||
 | 
					b0QJpisldK8w8Rx9/7PS3NP5DO2z1GbNW8+iZE+QH03fIa1QeNBWISnfK8VUkUHn
 | 
				
			||||||
 | 
					8j6Q52O0bxC2v+a76U0MdP4JqfrihuHXvjH++9FN/KVwpAJlj7Fq8HugymEpi8+Y
 | 
				
			||||||
 | 
					Xv4VnzSm/sdbThvbSHzSGo8Y38dbN7pM6tOen36mxcAnOlH6GnTFEWYmo/f5jj8b
 | 
				
			||||||
 | 
					I/+rI8pmeDK6HPZFXw8FonEykX2My8OrN4iGLkFqlFfdgXHtuuPDLImxOCiJN0y7
 | 
				
			||||||
 | 
					bizq412/kh7Fbg7Q3oSULd9tmojVi3em4QWvxlxbOwIXjyT1AoIBAQDDLnOsvy2G
 | 
				
			||||||
 | 
					ajFvKJ3bSrh3OQdGFyJn0nquZtgzDXsatrItaBYZtUIqnRsfjQZqyvoYNRDqs9QR
 | 
				
			||||||
 | 
					xmqB7guPkqLN/mk+mAjmHWPs0oP0Y9S2IXl5/CRIuM3ZcVTVVsPC8lOrXAH3X1jZ
 | 
				
			||||||
 | 
					OJiUG/fUUJoonDPnFZLGajefmFsUWjyIr85VOUMhYsq2lA3ZTyM6rQLX3gM//36u
 | 
				
			||||||
 | 
					d70K1kXPWoWIsbaztPpqBSJK05EjztVmkUYbPKqHVz+8TD4Xr1baSC1Q0KuHqrr1
 | 
				
			||||||
 | 
					451biNN/TSG5GOgdJRZcVXh0imp+xQjB3x2UmwNKk4uRXRWnoa0QlhKm0kbapaGP
 | 
				
			||||||
 | 
					QVCUgwlQOA31AoIBAGmvhbx1WBVUkYKWYX3+Ms5vj5pD0fo3MKEAXsZjTbJ6UFLF
 | 
				
			||||||
 | 
					HE0QRh5xPAFKZssxmJk2mrklEUVTrX+rah83tCDXtdvZ65lyrA3dlQvWtRwZ7t6Q
 | 
				
			||||||
 | 
					dOopiDWIQvmTpjkXd3vDMUJXcan/vGb/OtdsRen56olRtwJRYY5tGFjirkNTxlsv
 | 
				
			||||||
 | 
					qRtcQgTJ3sCkFhc8qZBR8Wrjm6YoVh6ax1H/7A+fC4OpcDbgzd5Lexw3NOtqbkHH
 | 
				
			||||||
 | 
					+3/iNc7EWdd/fyBo2MXlEiAd67I+OW36POFBnK67PIrA2T0HoUMe6ls74ejrkGVK
 | 
				
			||||||
 | 
					tOb83OW+vOKPefPKty5nqaIFRv3u/sroKLm7wOkCggEAFBsR4WakKud/hiLZ9///
 | 
				
			||||||
 | 
					dpCSVj8F1UoSRyri9Idb+gl92z2QoT9RvJAIfjyJv7B/CMVWo8a4fshAqne6CyUg
 | 
				
			||||||
 | 
					zjV54+/HYuT+KSQaYa9y9vwFxnIZzr/yvIZ3Ja7VZZyOz+UfcrsIrP+uf/tNkTpo
 | 
				
			||||||
 | 
					VuyYUCKhxvykFDWelD8jYzUw/Qh0CNljZmFj99G2IFI4K8J79Ti9dP1ypM4jzNNX
 | 
				
			||||||
 | 
					VBhyaJqo/QjgWnLmzZh91R376cxbCKwNLblw4AG44a1ztZJ5SPVmYvP6frZeiwuI
 | 
				
			||||||
 | 
					AMg3COGMJyDK0r57b+meGFKCeo9pTGJcizHajDUUXdQHwdWBZP6Q4O/qfBHvgKr1
 | 
				
			||||||
 | 
					jQKCAQEA4UaBpHUcO9TG5NEMX+IOMurcuYnlf+12ImGix21A2ylOI7RIfA/RCfgK
 | 
				
			||||||
 | 
					7UAwT9OqTNhvgJ9DCth7y6TJ6/4UnKJ1duaM7sP6vX3Vq8z0zixYDZJ2bE4COgBJ
 | 
				
			||||||
 | 
					tzAOLM22cpIJj98XhCdMOzkVse7vQDpBJPmTh19pqfuFnGLmsIIdLuo64Xa+6bvB
 | 
				
			||||||
 | 
					p21edHgxH1pl82rfnvMTMzoicH0mQZQD+l19O6togwhpJY1YbPaqGlCavlQqMKyC
 | 
				
			||||||
 | 
					r8fseEBic1de7Y9XaG25TS+lZVg53vOB2BNZM6Z8CjeRf3rdZZd+cCqa7aFsdmER
 | 
				
			||||||
 | 
					hfHYKzHGaDbp/aPWH8HQzfs6QxGRog==
 | 
				
			||||||
 | 
					-----END PRIVATE KEY-----
 | 
				
			||||||
							
								
								
									
										25
									
								
								shell.nix
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										25
									
								
								shell.nix
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,25 @@
 | 
				
			||||||
 | 
					{ pkgs ? import <nixpkgs> {}, lib ? pkgs.lib }:
 | 
				
			||||||
 | 
					pkgs.mkShellNoCC {
 | 
				
			||||||
 | 
						packages = with pkgs; [ rustup nats-server caddy postgresql clang pkg-config tmux /*you'll *need* tmux*/ ];
 | 
				
			||||||
 | 
						buildInputs = with pkgs; [ openssl clang foundationdb ];
 | 
				
			||||||
 | 
						LIBCLANG_PATH = lib.makeLibraryPath [ pkgs.libclang ];
 | 
				
			||||||
 | 
						shellHook = ''
 | 
				
			||||||
 | 
							rustup install stable
 | 
				
			||||||
 | 
							rustup default stable
 | 
				
			||||||
 | 
							export RUST_LOG=debug
 | 
				
			||||||
 | 
							export NATS_URL="127.0.0.1:4222"
 | 
				
			||||||
 | 
							export NATS_CERT=$(cat cert.pem)
 | 
				
			||||||
 | 
							export NATS_KEY=$(cat key.pem)
 | 
				
			||||||
 | 
							export ASKLYPHE_URL="http://127.0.0.1:8002"
 | 
				
			||||||
 | 
							export AUTH_URL="http://127.0.0.1:8001"
 | 
				
			||||||
 | 
							export DB_URL="postgres://127.0.0.1:5432/user"
 | 
				
			||||||
 | 
							export SMTP_DISABLE=1
 | 
				
			||||||
 | 
							export SMTP_USERNAME=""
 | 
				
			||||||
 | 
							export SMTP_PASSWORD=""
 | 
				
			||||||
 | 
							export SMTP_URL=""
 | 
				
			||||||
 | 
							export POSTGRESQL_PASSWORD="user"
 | 
				
			||||||
 | 
							# lmao
 | 
				
			||||||
 | 
							echo WARNING: RUSTFLAGS="-A dead_code -A unused"
 | 
				
			||||||
 | 
							export RUSTFLAGS="-A dead_code -A unused"
 | 
				
			||||||
 | 
						'';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue