Comments (4)
Although, if rustfmt
can combine field attributes like this, then we don't have to do this. Not sure if this is true.
EDIT: not seeing anything at the moment. merge_derives is the most similar one, but we already do that. I guess this would be hard for rustfmt
to do since the syntax inside attributes is partially up to the user?
from kopium.
Well I tried this in a branch and I can indeed produce:
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct ServerPodSelector {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")]
pub match_expressions: Option<Vec<ServerPodSelectorMatchExpressions>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")]
pub match_labels: Option<BTreeMap<String, serde_json::Value>>,
}
but unfortunately, it's way more common for these to be force split by rustfmt down the line when slightly longer:
here servicemonitors:
pub struct ServiceMonitorSpec {
pub endpoints: Vec<ServiceMonitorEndpoints>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "jobLabel")]
pub job_label: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "labelLimit")]
pub label_limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "labelNameLengthLimit")]
pub label_name_length_limit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "labelValueLengthLimit")]
pub label_value_length_limit: Option<i64>,
/// ...
}
becomes
pub struct ServiceMonitorSpec {
pub endpoints: Vec<ServiceMonitorEndpoints>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "jobLabel")]
pub job_label: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "labelLimit")]
pub label_limit: Option<i64>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "labelNameLengthLimit"
)]
pub label_name_length_limit: Option<i64>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "labelValueLengthLimit"
)]
pub label_value_length_limit: Option<i64>,
/// ...
}
from kopium.
Not sure which is best, POVs welcome.
from kopium.
Going to smash them together because it's nicer to work with api wise. If people find the output ugly they can change line limit params in rustfmt.
from kopium.
Related Issues (20)
- Top level enums are not handled
- Add support for cargo-binstall HOT 1
- Address clippy fixes in the generated documentation HOT 1
- Argo-Workflows crd's not working HOT 2
- Types with Underscore not converted to CamelCase
- Kopium skips generating types which are then not referencable
- Use `indoc` for analyzer test cases
- Document Unstable Rust HOT 1
- allow filtering out the status object
- crash on flux's GitRepository crd HOT 2
- Allow implementing generic getter traits
- Missing Struct when generating from CRD HOT 2
- Autogenerated output should include a comment at the top of file HOT 2
- enum support in 0.12 breaks --derive Default HOT 4
- not handling non-string enum HOT 5
- alertmanager crd needs support for invalid enum names HOT 2
- alertmanager crd crashes on empty enum string crd HOT 1
- allow eliding output from problematic containers
- Include a comment with the arguments to kopium in the generated code itself
- Running kopium with `--hide-kube` still includes a derive for `CustomResource` HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kopium.