From ee7293791cca801298b21d361f084e8ee15aa26e Mon Sep 17 00:00:00 2001 From: MedzikUser Date: Mon, 24 Jan 2022 19:33:44 +0100 Subject: [PATCH] add create default config if not exist, create CHANGELOG.md --- .github/workflows/build-release-binaries.yml | 8 +++++ CHANGELOG.md | 35 ++++++++++++++++++++ config.toml | 2 ++ src/api/rate_limit.rs | 2 +- src/config/toml.rs | 2 +- src/main.rs | 26 ++++++++++++--- 6 files changed, 69 insertions(+), 6 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 config.toml diff --git a/.github/workflows/build-release-binaries.yml b/.github/workflows/build-release-binaries.yml index 84b5fe6..e507e04 100644 --- a/.github/workflows/build-release-binaries.yml +++ b/.github/workflows/build-release-binaries.yml @@ -96,6 +96,14 @@ jobs: shell: bash if: startsWith(github.ref, 'refs/tags/v') + - name: Get CHANGELOG.md entry + id: changelog_reader + uses: mindsers/changelog-reader-action@v1 + with: + version: ${{ steps.tag_name.outputs.current_version }} + path: ./CHANGELOG.md + if: startsWith(github.ref, 'refs/tags/v') + - name: Publish uses: svenstaro/upload-release-action@v2 with: diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..8315741 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,35 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/) +and this project adheres to [Semantic Versioning](http://semver.org/). + + + +## [Unreleased] +### CLI +- create default config + +### Library +- rustls + +## [0.0.1] - 2022-01-23 +### CLI +- commands + - credits + - delete + - info + - upload +- toml config parser + +### Library +- image info +- rate limit +- image info +- delete image +- upload image + + +[Unreleased]: https://github.com/MedzikUser/imgurs/compare/v0.0.1...HEAD +[0.0.1]: https://github.com/MedzikUser/imgurs/commits/v0.0.1 diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..d773f4f --- /dev/null +++ b/config.toml @@ -0,0 +1,2 @@ +[imgur] +id = '3e3ce0d7ac14d56' diff --git a/src/api/rate_limit.rs b/src/api/rate_limit.rs index 4eec875..f1ddbde 100644 --- a/src/api/rate_limit.rs +++ b/src/api/rate_limit.rs @@ -6,7 +6,7 @@ use serde_derive::{Deserialize, Serialize}; pub struct RateLimitInfo { pub data: RateLimitData, pub success: bool, - pub status: i8, + pub status: i32, } #[derive(Debug, Serialize, Deserialize)] diff --git a/src/config/toml.rs b/src/config/toml.rs index ca9e922..9a83a4c 100644 --- a/src/config/toml.rs +++ b/src/config/toml.rs @@ -15,7 +15,7 @@ pub struct ConfigImgur { pub fn parse() -> Result { let config_dir = config_dir().unwrap(); - let file_dir: String = String::from(config_dir.to_string_lossy()) + "/imgur/config.toml"; + let file_dir: String = String::from(config_dir.to_string_lossy()) + "/imgurs/config.toml"; let toml_str = read_to_string(file_dir).map_err(|err| err.to_string())?; diff --git a/src/main.rs b/src/main.rs index 6ab3068..c41b6d2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,9 +3,13 @@ mod config; use cli::parse::parse; -use log::error; +use dirs::config_dir; +use log::warn; use simple_logger::SimpleLogger; -use std::process::exit; +use std::{path::Path, fs::create_dir_all}; + +use std::fs::File; +use std::io::Write as _; use imgurs::api::ImgurHandle; @@ -14,8 +18,22 @@ async fn main() { SimpleLogger::new().init().unwrap(); let config = config::toml::parse().unwrap_or_else(|error| { - error!("Parse toml config: {}", error); - exit(1); + warn!("Parse toml config: {}! Creating config file...", error); + + let default_config = include_str!(concat!("../config.toml")); + + let sys_config_dir = config_dir().unwrap(); + let config_dir = format!("{}/imgurs/config.toml", sys_config_dir.to_string_lossy()); + let config_path = Path::new(&config_dir); + + let prefix = config_path.parent().unwrap(); + create_dir_all(prefix).unwrap(); + + let mut file_ref = File::create(config_path).expect("create failed"); + + file_ref.write_all(default_config.as_bytes()).expect("failed write default config to file"); + + config::toml::parse().unwrap() }); let client = ImgurHandle::new((&config.imgur.id).to_string());