-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathCargo.toml
More file actions
117 lines (109 loc) · 4.97 KB
/
Copy pathCargo.toml
File metadata and controls
117 lines (109 loc) · 4.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
[package]
name = "hotdata-cli"
version = "0.37.0"
edition = "2024"
repository = "https://github.com/hotdata-dev/hotdata-cli"
description = "CLI tool for Hotdata.dev"
homepage = "https://www.hotdata.dev"
publish = false
[[bin]]
name = "hotdata"
path = "src/main.rs"
[dependencies]
# Hotdata Rust SDK. The CLI's sync wrapper (src/sdk.rs) drives this async SDK
# behind a shared multi-thread tokio runtime. The `arrow` feature backs result
# decode; `upload_file` runs the presigned direct-to-storage upload flow
# (see src/sdk.rs::Api::upload).
hotdata = { version = "0.19.0", features = ["arrow"] }
# Shared multi-thread runtime for the sync wrapper; block_on is called
# concurrently from rayon worker threads (see src/indexes.rs). The presigned
# upload (src/sdk.rs::Api::upload) drives the SDK's async `upload_file` on this
# same runtime.
tokio = { version = "1", features = ["rt-multi-thread"] }
anstyle = "1.0.13"
clap = { version = "4", features = ["derive"] }
directories = "6"
# Matches the SDK's reqwest 0.13 so the sdk seam can name the `reqwest::Client`
# type backing `Configuration.client`; `blocking` serves the CLI's own
# synchronous paths (PKCE/token mints in jwt.rs + the `--url` source download
# in databases.rs that feeds the presigned upload).
reqwest = { version = "0.13", features = ["blocking", "json"] }
rayon = "1.10"
serde = { version = "1", features = ["derive"] }
# NOT `arbitrary_precision`, deliberately. It would keep a wide decimal's
# digits (see `a_wide_decimal_is_rounded_a_known_limitation`), but the feature
# is crate-wide: with it on, `serde_json::Number` serializes as the private
# struct `$serde_json::private::Number`, which serde_json's own serializer
# intercepts and serde_yaml does not — so every `-o yaml` output carrying a
# `Value` number turns into a nested mapping. That breaks commands unrelated to
# this one, which costs more than the rounding it buys.
#
# `raw_value` is on, for the json load's reshape (src/commands/json_rows.rs):
# it hands each row over as its own JSON text, so a row is rewritten
# byte-for-byte instead of round-tripping through `Value` — which would sort
# its keys (`BTreeMap`, since `preserve_order` is off) and round a number
# wider than i64/u64/f64. Unlike `arbitrary_precision` above, this feature
# changes nothing for code that does not name `RawValue`.
serde_json = { version = "1", features = ["raw_value"] }
arrow = { version = "59", default-features = false, features = [
"ipc",
# Timestamps carrying a named IANA zone ("UTC", "America/New_York")
# cannot be formatted without a timezone database — arrow's formatter
# returns an error for them, and only fixed offsets ("+00:00") parse
# without it. Results are fetched as Arrow and formatted here, so
# without this feature every named-zone timestamp fails to render.
"chrono-tz",
# Render cells with arrow-json, the same encoder the service uses for the
# inline path. A hand-rolled renderer here drifts from it — the display
# formatter turns a list into the string "[1, 2, 3]" where the service
# returns a JSON array — so the same query answered from memory and from
# storage disagreed on shape. One encoder, one answer.
"json",
] }
serde_yaml = "0.9"
base64 = "0.22"
crossterm = "0.28"
dotenvy = "0.15"
open = "5"
rand = "0.8"
sha2 = "0.10"
tiny_http = "0.12"
tabled = { version = "0.20", features = ["ansi"] }
clap_complete = "4"
inquire = "0.9.4"
indicatif = "0.18"
nix = { version = "0.29", features = ["fs"] }
flate2 = "1"
tar = "0.4"
semver = "1"
sqlformat = "0.5.0"
self_update = { version = "0.43", default-features = false, features = ["reqwest", "rustls"] }
lzma-rs = "0.3"
tempfile = "3"
[dev-dependencies]
mockito = "1"
[build-dependencies]
toml = "0.8"
# Project distribution config read by build.rs and exposed as compile-time
# env vars (HOTDATA_HOMEBREW_FORMULA, ...) so source files don't hardcode
# values that also live in the README / dist-workspace.toml.
[package.metadata.hotdata]
# Fully-qualified Homebrew install target. Matches the `brew install` line
# in README.md; the trailing segment must match `formula` in dist-workspace.toml.
homebrew_formula = "hotdata-dev/tap/cli"
[package.metadata.release]
pre-release-hook = ["git-cliff", "--unreleased", "--tag", "v{{version}}", "--prepend", "CHANGELOG.md"]
publish = false
pre-release-replacements = [
{ file = "skills/hotdata/SKILL.md", search = "^version: .+", replace = "version: {{version}}", exactly = 1 },
{ file = "skills/hotdata/subskills/search/SKILL.md", search = "^version: .+", replace = "version: {{version}}", exactly = 1 },
{ file = "skills/hotdata/subskills/analytics/SKILL.md", search = "^version: .+", replace = "version: {{version}}", exactly = 1 },
{ file = "skills/hotdata/subskills/geospatial/SKILL.md", search = "^version: .+", replace = "version: {{version}}", exactly = 1 },
# README.md no longer carries a hardcoded version badge — it tracks GitHub releases.
]
# The profile that 'dist' will build with
[profile.dist]
inherits = "release"
lto = "thin"
[package.metadata.dist]
dist = true