Compare commits
No commits in common. "f6e9b5525b07e38a5c787fbe78436eada36f40e7" and "cabb6c50101334b96179998a7fd82a4fbeb14fc6" have entirely different histories.
f6e9b5525b
...
cabb6c5010
|
@ -200,6 +200,7 @@ but be sure not to include the ticker or symbol of the currency
|
|||
(i.e., for `$14,567.27 USD`, enter `14567.27` or `14,567.27`).
|
||||
|
||||
* **memo**: This can be a string of characters of any length, though fewer than 20-30 characters is advised.
|
||||
Currently, **commas** in the memo field are **not** supported.
|
||||
|
||||
* *quantity*: This is similar to **proceeds**, in that the **decimal separator** must be a **period**,
|
||||
and you *cannot* include the ticker or symbol of the currency in that field.
|
||||
|
|
|
@ -34,7 +34,7 @@ so it can be successfully imported into `cryptools`.
|
|||
|
||||
* Two methods each of LIFO or FIFO (compatible w/ the concept of "specific identification")
|
||||
|
||||
* Ability to perform like-kind exchange treatment through a particular date (must use wizard or `.env` file)
|
||||
* Ability to perform like-kind exchange treatment through a particular date
|
||||
|
||||
* Compatible with any (single) home currency
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ pub fn import_and_process_final(
|
|||
&mut transactions_map,
|
||||
)?;
|
||||
|
||||
println!(" Successfully imported CSV Input File.");
|
||||
println!(" Successfully imported csv file.");
|
||||
println!("Processing the data...");
|
||||
|
||||
transactions_map = create_lots_mvmts::create_lots_and_movements(
|
||||
|
|
|
@ -28,7 +28,7 @@ pub fn import_from_csv(
|
|||
|
||||
let file = match File::open(import_file_path) {
|
||||
Ok(x) => {
|
||||
// println!("\nCSV ledger file opened successfully.\n");
|
||||
println!("\nCSV ledger file opened successfully.\n");
|
||||
x
|
||||
},
|
||||
Err(e) => {
|
||||
|
@ -90,7 +90,7 @@ ordered chronologically (i.e., beginning in column 4 - the 1st account column -
|
|||
The next column's value should be 2, then 3, etc, until the final account).";
|
||||
|
||||
// Header row variables have been set. It's now time to set up the accounts.
|
||||
println!("\nCreating accounts...");
|
||||
println!("Attempting to create accounts...");
|
||||
|
||||
let length = &headerstrings.len();
|
||||
|
||||
|
@ -153,7 +153,7 @@ fn import_transactions(
|
|||
let mut changed_action_records = 0;
|
||||
let mut changed_txn_num = Vec::new();
|
||||
|
||||
println!("Creating transactions...");
|
||||
println!("Attempting to create transactions...");
|
||||
|
||||
for result in rdr.records() {
|
||||
|
||||
|
@ -243,9 +243,9 @@ fn import_transactions(
|
|||
let tx_date = NaiveDate::parse_from_str(this_tx_date, &format_yy)
|
||||
.unwrap_or_else(|_| NaiveDate::parse_from_str(this_tx_date, &format_yyyy)
|
||||
.expect("
|
||||
FATAL: Transaction date parsing failed. You must tell the program the format of the date in your CSV Input File. The date separator \
|
||||
is expected to be a hyphen. The dating format is expected to be \"American\" (%m-%d-%y), not ISO 8601 (%y-%m-%d). You may set different \
|
||||
date format options via command line flag, environment variable or .env file. Perhaps first run with `--help` or see `.env.example.`\n")
|
||||
Failed to parse date in input file. Confirm your choice of the separator character, which is expected to be a hyphen \
|
||||
unless otherwise set via command line flag, environment variable or .env file. Also confirm your choice of dating format \
|
||||
whether it be American (%m-%d-%y) or ISO (%y-%m-%d). Run with `--help` or see `.env.example.`\n")
|
||||
);
|
||||
|
||||
let transaction = Transaction {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
## CONFIGURATION
|
||||
##
|
||||
## The defaults are shown below. If the defaults are not suitable, copy this .env.example into a new .env file,
|
||||
## If the defaults below are not suitable, copy this .env.example into a new .env file,
|
||||
## uncomment the respective enviroment variable, and set the value according to your needs.
|
||||
## Alternatively, command line flags are available for ISO_DATE and DATE_SEPARATOR_SWITCH.
|
||||
## Command line flags will override enviroment variables.
|
||||
|
@ -26,7 +26,6 @@
|
|||
# (Optional; default is not set)
|
||||
#LK_CUTOFF_DATE=YYYY-mm-DD
|
||||
|
||||
# These are the options available for choosing in which order lots are chosen for disposals.
|
||||
#1. LIFO according to the order the lot was created.
|
||||
#2. LIFO according to the basis date of the lot.
|
||||
#3. FIFO according to the order the lot was created.
|
||||
|
|
|
@ -119,7 +119,8 @@ This software will import your csv file's ledger of cryptocurrency transactions.
|
|||
It will then process it by creating 'lots' and posting 'movements' to those lots.
|
||||
Along the way, it will keep track of income, expenses, gains, and losses.
|
||||
|
||||
See examples/.env.example or run with --help to learn how to change default program behavior.
|
||||
See .env.example for environment variables that may be set in a .env file in order to
|
||||
change default program behavior.
|
||||
|
||||
Note: The software is designed to import a full history. Gains and losses may be incorrect otherwise.
|
||||
");
|
||||
|
|
30
src/setup.rs
30
src/setup.rs
|
@ -20,49 +20,47 @@ use crate::wizard;
|
|||
pub fn get_env(cmd_args: &super::Cli) -> Result<super::Cfg, Box<dyn Error>> {
|
||||
|
||||
match dotenv::dotenv() {
|
||||
Ok(_path) => { println!("Exporting temporary environment variables from .env file.") },
|
||||
Ok(_path) => { println!("Setting environment variables from .env file.") },
|
||||
Err(_e) => println!("Did not find .env file.")
|
||||
}
|
||||
|
||||
println!(" Setting runtime variables according to command line options or environment variables (the former take precedent).");
|
||||
|
||||
let iso_date: bool = if cmd_args.iso_date {
|
||||
println!(" Command line flag for ISO_DATE was set. Using YY-mm-dd or YY/mm/dd.");
|
||||
println!(" Command line flag for ISO_DATE was set. Using YY-mm-dd or YY/mm/dd.");
|
||||
true
|
||||
} else {
|
||||
match env::var("ISO_DATE") {
|
||||
Ok(val) => {
|
||||
if val == "1" || val.to_lowercase() == "true" {
|
||||
println!(" Found ISO_DATE env var: {}. Using YY-mm-dd or YY/mm/dd.", val);
|
||||
println!(" Found ISO_DATE env var: {}. Using YY-mm-dd or YY/mm/dd.", val);
|
||||
true
|
||||
} else {
|
||||
println!(" Found ISO_DATE env var: {} (not 1 or true). Using MM-dd-YY or MM/dd/YY.", val);
|
||||
println!(" Found ISO_DATE env var: {} (not 1 or true). Using MM-dd-YY or MM/dd/YY.", val);
|
||||
false
|
||||
}
|
||||
},
|
||||
Err(_e) => {
|
||||
println!(" Using default dating convention (MM-dd-YY or MM/dd/YY).");
|
||||
println!(" Using default dating convention (MM-dd-YY or MM/dd/YY).");
|
||||
false
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
let date_separator_is_slash: bool = if cmd_args.date_separator_is_slash {
|
||||
println!(" Command line flag for DATE_SEPARATOR_IS_SLASH was set. Date separator set to slash (\"/\").");
|
||||
println!(" Command line flag for DATE_SEPARATOR_IS_SLASH was set. Date separator set to slash (\"/\").");
|
||||
true
|
||||
} else {
|
||||
match env::var("DATE_SEPARATOR_IS_SLASH") {
|
||||
Ok(val) => {
|
||||
if val == "1" || val.to_ascii_lowercase() == "true" {
|
||||
println!(" Found DATE_SEPARATOR_IS_SLASH env var: {}. Date separator set to slash (\"/\").", val);
|
||||
println!(" Found DATE_SEPARATOR_IS_SLASH env var: {}. Date separator set to slash (\"/\").", val);
|
||||
true
|
||||
} else {
|
||||
println!(" Found DATE_SEPARATOR_IS_SLASH env var: {} (not 1 or true). Date separator set to hyphen (\"-\").", val);
|
||||
println!(" Found DATE_SEPARATOR_IS_SLASH env var: {} (not 1 or true). Date separator set to hyphen (\"-\").", val);
|
||||
false
|
||||
}
|
||||
}
|
||||
Err(_e) => {
|
||||
println!(" Using default date separator, hyphen (\"-\").");
|
||||
println!(" Using default date separator, hyphen (\"-\").");
|
||||
false
|
||||
},
|
||||
}
|
||||
|
@ -70,26 +68,26 @@ pub fn get_env(cmd_args: &super::Cli) -> Result<super::Cfg, Box<dyn Error>> {
|
|||
|
||||
let home_currency = match env::var("HOME_CURRENCY") {
|
||||
Ok(val) => {
|
||||
println!(" Found HOME_CURRENCY env var: {}", val);
|
||||
println!(" Found HOME_CURRENCY env var: {}", val);
|
||||
val.to_uppercase()},
|
||||
Err(_e) => {
|
||||
println!(" Using default home currency (USD).");
|
||||
println!(" Using default home currency (USD).");
|
||||
"USD".to_string()},
|
||||
};
|
||||
|
||||
let lk_cutoff_date = match env::var("LK_CUTOFF_DATE") {
|
||||
Ok(val) => {
|
||||
println!(" Found LK_CUTOFF_DATE env var: {}", val);
|
||||
println!(" Found LK_CUTOFF_DATE env var: {}", val);
|
||||
Some(val)},
|
||||
Err(_e) => None,
|
||||
};
|
||||
|
||||
let inv_costing_method = match env::var("INV_COSTING_METHOD") {
|
||||
Ok(val) => {
|
||||
println!(" Found INV_COSTING_METHOD env var: {}", val);
|
||||
println!(" Found INV_COSTING_METHOD env var: {}", val);
|
||||
val},
|
||||
Err(_e) => {
|
||||
println!(" Using default inventory costing method (LIFO by lot creation date).");
|
||||
println!(" Using default inventory costing method (LIFO by lot creation date).");
|
||||
"1".to_string()},
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue