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
[]
= "rustmotion"
= true
= "2021"
= "A CLI tool that renders motion design videos from JSON scenarios. No browser, no Node.js — just a single Rust binary."
= "MIT"
= "https://github.com/LeadcodeDev/rustmotion"
= "../../README.md"
[]
= "src/lib.rs"
# Le binaire vit ici, et pas dans une crate à part, parce que c'est la seule
# façon que `cargo install rustmotion` livre une commande : une crate qui n'a
# qu'une `[lib]` installe une bibliothèque et rien d'exécutable.
#
# Le studio a rejoint cette crate (`src/studio/`) pour la même raison, poussée
# d'un cran : `cargo install --git <url>` sans nom de paquet refuse un dépôt où
# plus d'un paquet déclare un `[[bin]]` (« multiple packages with binaries
# found »), et ni `default-members` ni `required-features` ne changent ce
# décompte — vérifié, pas supposé. Un seul paquet peut donc porter des
# binaires. Il était un paquet à part, qui dépendait de `rustmotion` pour
# `loader` et `encode` : en faire une dépendance de `rustmotion` aurait été un
# cycle, que cargo refuse même optionnel. Devenu un module, il n'y a plus deux
# paquets, donc plus de cycle, et ses chemins `rustmotion::…` restent valides
# tels quels grâce au `extern crate self as rustmotion` de `lib.rs`.
[[]]
= "rustmotion"
= "src/bin/main.rs"
# Derrière `required-features`, hors du build par défaut : gpui et sa toolchain
# GUI ne doivent pas entrer dans un `cargo install rustmotion` fait sur une
# machine sans affichage, où elles peuvent ne pas compiler du tout.
[[]]
= "rustmotion-studio"
= "src/bin/studio.rs"
= ["studio"]
[]
= true
= { = true, = ["lottie-native"] }
= true
= "0.99"
= { = "1", = ["derive"] }
= "1"
= { = "4", = ["derive"] }
= "4.6.0"
= "0.29"
= "0.28"
= "6.0.0"
# Le CLI produit le JSON Schema (`rustmotion schema`) et s'en sert pour la
# détection d'attributs inconnus : schemars passe donc de dev-dependency à
# dépendance normale.
= "0.8"
= "0.6"
= { = "0.1", = ["aac"] }
= "0.13"
= { = "0.5", = ["mp3", "wav", "ogg", "flac", "aac"] }
= "0.16"
= "7"
= "1"
= { = "0.25", = false, = ["png", "jpeg", "webp"] }
= "0.44"
= "0.44"
= "0.11"
= "3"
= "6"
# Dépendances du studio (`src/studio/`), toutes optionnelles : le feature
# `studio` les active, le build par défaut ne les voit pas.
= { = "=0.6.6", = true }
= { = "0.6.6", = true }
= { = "1", = true }
= { = "1", = ["time"], = true }
= { = "0.17", = true }
= { = "0.22", = false, = [
"playback",
], = true }
= { = "0.7.6", = false, = [
"std",
], = true }
[]
## Compile et installe aussi le binaire `rustmotion-studio` :
## `cargo install --git https://github.com/LeadcodeDev/rustmotion --features studio`.
## Hors du build par défaut parce qu'il tire gpui et sa toolchain GUI, qui ne
## compilent pas partout où le CLI compile.
##
## `serde_json/preserve_order` en fait partie parce que le studio réécrit les
## fichiers de scénario de l'utilisateur et ne doit pas en réordonner les clés.
## C'est aussi ce que voudrait `validate --fix`, mais l'activer par défaut
## changerait l'ordre de ses réécritures : à décider ailleurs qu'ici.
= [
"dep:gpui-kit",
"dep:gpui-component",
"dep:smallvec",
"dep:tokio",
"dep:rfd",
"dep:rodio",
"dep:palette",
"serde_json/preserve_order",
]
# Opt-in: integration tests that shell out to a real ffmpeg binary.
= []
## Re-expose native Lottie decoding (default-on). Activating this feature here
## propagates to rustmotion-components so consumers only need to touch rustmotion.
= ["rustmotion-components/lottie-native"]