rename
This commit is contained in:
parent
a34e3f8342
commit
ed05e287b7
7 changed files with 867 additions and 455 deletions
1170
Cargo.lock
generated
1170
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
34
Cargo.toml
34
Cargo.toml
|
|
@ -1,12 +1,32 @@
|
||||||
[package]
|
[package]
|
||||||
name = "ptcg-scrap"
|
name = "ptcg-tools"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
anyhow = "1.0.97"
|
anyhow = "1.0.100"
|
||||||
clap = { version = "4.5.35", features = ["derive"] }
|
camino = "1.2.2"
|
||||||
reqwest = { version = "0.12.15", default-features = false, features = ["http2", "rustls-tls"] }
|
clap = { version = "4.5.53", features = ["derive"] }
|
||||||
scraper = "0.23.1"
|
directories = "6.0.0"
|
||||||
strum = { version = "0.27.1", features = ["derive"] }
|
fluent-templates = "0.13.2"
|
||||||
tokio = { version = "1.44.1", default-features = false, features = ["fs", "rt-multi-thread", "macros"] }
|
reqwest = { version = "0.12.26", default-features = false, features = [
|
||||||
|
"brotli",
|
||||||
|
"http2",
|
||||||
|
"gzip",
|
||||||
|
"json",
|
||||||
|
"rustls-tls-native-roots",
|
||||||
|
"stream",
|
||||||
|
] }
|
||||||
|
serde = { version = "1.0.228", default-features = false, features = [
|
||||||
|
"derive",
|
||||||
|
"std",
|
||||||
|
] }
|
||||||
|
strum = { version = "0.27.2", features = ["derive"] }
|
||||||
|
tokio = { version = "1.48.0", default-features = false, features = ["fs", "rt-multi-thread", "macros"] }
|
||||||
|
tracing = "0.1.44"
|
||||||
|
tracing-subscriber = { version = "0.3.22", default-features = false, features = [
|
||||||
|
"fmt",
|
||||||
|
"json",
|
||||||
|
"env-filter",
|
||||||
|
] }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
## PTCG Scrapper
|
## PTCG Tools
|
||||||
|
|
|
||||||
80
cliff.toml
Normal file
80
cliff.toml
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
[changelog]
|
||||||
|
# changelog header
|
||||||
|
header = """
|
||||||
|
# Changelog\n
|
||||||
|
"""
|
||||||
|
# template for the changelog body
|
||||||
|
# https://tera.netlify.app/docs
|
||||||
|
body = """
|
||||||
|
{% if version %}\
|
||||||
|
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
|
||||||
|
{% else %}\
|
||||||
|
## [unreleased]
|
||||||
|
{% endif %}\
|
||||||
|
{% for group, commits in commits | group_by(attribute="group") %}
|
||||||
|
### {{ group | upper_first }}
|
||||||
|
{% for commit in commits %}
|
||||||
|
- {% if commit.breaking %}[**breaking**] {% endif %}{{ commit.message | upper_first }}\
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}\n
|
||||||
|
"""
|
||||||
|
# remove the leading and trailing whitespace from the template
|
||||||
|
trim = true
|
||||||
|
# changelog footer
|
||||||
|
footer = """
|
||||||
|
"""
|
||||||
|
# postprocessors
|
||||||
|
postprocessors = [
|
||||||
|
{ pattern = '<REPO>', replace = "https://oolong.ludwig.dog/pitbuster/ptcg-tools" },
|
||||||
|
]
|
||||||
|
[git]
|
||||||
|
# parse the commits based on https://www.conventionalcommits.org
|
||||||
|
conventional_commits = true
|
||||||
|
# filter out the commits that are not conventional
|
||||||
|
filter_unconventional = true
|
||||||
|
# process each line of a commit as an individual commit
|
||||||
|
split_commits = false
|
||||||
|
# regex for preprocessing the commit messages
|
||||||
|
commit_preprocessors = [
|
||||||
|
{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](<REPO>/issues/${2}))" }, # replace issue numbers
|
||||||
|
]
|
||||||
|
# regex for parsing and grouping commits
|
||||||
|
commit_parsers = [
|
||||||
|
{ message = "^feat", group = "Features" },
|
||||||
|
{ message = "^fix", group = "Bug Fixes" },
|
||||||
|
{ message = "^doc", group = "Documentation" },
|
||||||
|
{ message = "^chore(docs)", group = "Documentation" },
|
||||||
|
{ message = "^perf", group = "Performance" },
|
||||||
|
{ message = "^refactor", group = "Refactor" },
|
||||||
|
{ message = "^style", group = "Styling" },
|
||||||
|
{ message = "^test", group = "Testing" },
|
||||||
|
{ message = "^release:", skip = true },
|
||||||
|
{ message = "^chore\\(release\\):", skip = true },
|
||||||
|
{ message = "^chore\\(changelog\\):", skip = true },
|
||||||
|
{ message = "^chore\\(deps\\)", skip = true },
|
||||||
|
{ message = "^chore\\(pr\\)", skip = true },
|
||||||
|
{ message = "^chore\\(pull\\)", skip = true },
|
||||||
|
{ message = "^chore|ci", group = "Miscellaneous Tasks" },
|
||||||
|
{ body = ".*security", group = "Security" },
|
||||||
|
{ message = "^revert", group = "Revert" },
|
||||||
|
]
|
||||||
|
# extract external references
|
||||||
|
link_parsers = [
|
||||||
|
{ pattern = "#(\\d+)", href = "https://oolong.ludwig.dog/pitbuster/ptcg-tools/issues/$1" },
|
||||||
|
]
|
||||||
|
# protect breaking changes from being skipped due to matching a skipping commit_parser
|
||||||
|
protect_breaking_commits = false
|
||||||
|
# filter out the commits that are not matched by commit parsers
|
||||||
|
filter_commits = false
|
||||||
|
# glob pattern for matching git tags
|
||||||
|
tag_pattern = "[0-9]*"
|
||||||
|
# regex for skipping tags
|
||||||
|
skip_tags = "v0.1.0-beta.1"
|
||||||
|
# regex for ignoring tags
|
||||||
|
ignore_tags = ""
|
||||||
|
# sort the tags topologically
|
||||||
|
topo_order = false
|
||||||
|
# sort the commits inside sections by oldest/newest order
|
||||||
|
sort_commits = "oldest"
|
||||||
|
# limit the number of commits included in the changelog.
|
||||||
|
# limit_commits = 42
|
||||||
32
src/logging.rs
Normal file
32
src/logging.rs
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
use anyhow::{Result, anyhow};
|
||||||
|
use camino::Utf8PathBuf;
|
||||||
|
use directories::ProjectDirs;
|
||||||
|
use tracing_subscriber::Layer;
|
||||||
|
use tracing_subscriber::layer::SubscriberExt;
|
||||||
|
use tracing_subscriber::util::SubscriberInitExt;
|
||||||
|
|
||||||
|
const APP_NAME: &str = "ptcg-tools";
|
||||||
|
|
||||||
|
/// Sets up logging for the application. Since the mode we will need logging for is a TUI, we can't
|
||||||
|
/// print our logs into stdout, so we will log into a file instead.
|
||||||
|
pub async fn initialize_logging() -> Result<()> {
|
||||||
|
let user_directory = ProjectDirs::from("cl", "bstr", APP_NAME)
|
||||||
|
.ok_or_else(|| anyhow!("failed to get ProjectDirs"))?
|
||||||
|
.data_dir()
|
||||||
|
.to_path_buf();
|
||||||
|
let user_directory = Utf8PathBuf::try_from(user_directory)?;
|
||||||
|
tokio::fs::create_dir_all(&user_directory).await?;
|
||||||
|
let log_path = user_directory.join(format!("{APP_NAME}.log"));
|
||||||
|
let log_file = std::fs::File::create(log_path)?;
|
||||||
|
let file_subscriber = tracing_subscriber::fmt::layer()
|
||||||
|
.with_file(true)
|
||||||
|
.with_line_number(true)
|
||||||
|
.with_writer(log_file)
|
||||||
|
.with_target(false)
|
||||||
|
.with_ansi(false)
|
||||||
|
.with_filter(tracing_subscriber::filter::EnvFilter::from(format!(
|
||||||
|
"{APP_NAME}=debug"
|
||||||
|
)));
|
||||||
|
tracing_subscriber::registry().with(file_subscriber).init();
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
@ -8,10 +8,13 @@ pub mod cli;
|
||||||
pub mod downloader;
|
pub mod downloader;
|
||||||
pub mod editions;
|
pub mod editions;
|
||||||
pub mod lang;
|
pub mod lang;
|
||||||
|
pub mod logging;
|
||||||
|
pub mod malie;
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> Result<()> {
|
async fn main() -> Result<()> {
|
||||||
let args = cli::Args::parse();
|
let args = cli::Args::parse();
|
||||||
|
logging::initialize_logging().await?;
|
||||||
let client = reqwest::Client::new();
|
let client = reqwest::Client::new();
|
||||||
let edition =
|
let edition =
|
||||||
editions::EditionCode::from_str(&args.code).context("Couldn't parse edition code")?;
|
editions::EditionCode::from_str(&args.code).context("Couldn't parse edition code")?;
|
||||||
|
|
|
||||||
1
src/malie/mod.rs
Normal file
1
src/malie/mod.rs
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
//! Module to interact with the PTCG data from malie.io
|
||||||
Loading…
Add table
Reference in a new issue