1+ // Copyright (c) Microsoft Corporation.
2+ // Licensed under the MIT License.
3+
14//! Contains helpers for JSON schemas and DSC
25
36use schemars:: { schema:: { Metadata , Schema } , JsonSchema } ;
@@ -27,7 +30,8 @@ impl std::fmt::Display for SchemaUriPrefix {
2730
2831impl SchemaUriPrefix {
2932 /// Returns every known URI prefix for convenient iteration.
30- #[ must_use] pub fn all ( ) -> Vec < SchemaUriPrefix > {
33+ #[ must_use]
34+ pub fn all ( ) -> Vec < SchemaUriPrefix > {
3135 vec ! [
3236 Self :: AkaDotMs ,
3337 Self :: Github ,
@@ -66,7 +70,8 @@ impl SchemaForm {
6670 /// The extension for [`Bundled`] and [`Canonical`] schemas is `.json`
6771 ///
6872 /// The extension for [`VSCode`] schemas is `.vscode.json`
69- #[ must_use] pub fn to_extension ( & self ) -> String {
73+ #[ must_use]
74+ pub fn to_extension ( & self ) -> String {
7075 match self {
7176 Self :: Bundled | Self :: Canonical => ".json" . to_string ( ) ,
7277 Self :: VSCode => ".vscode.json" . to_string ( ) ,
@@ -78,15 +83,17 @@ impl SchemaForm {
7883 /// The [`Bundled`] and [`VSCode`] schemas are always published in the `bundled` folder
7984 /// immediately beneath the version folder. The [`Canonical`] schemas use the folder path
8085 /// as defined for that schema.
81- #[ must_use] pub fn to_folder_prefix ( & self ) -> String {
86+ #[ must_use]
87+ pub fn to_folder_prefix ( & self ) -> String {
8288 match self {
8389 Self :: Bundled | Self :: VSCode => "bundled/" . to_string ( ) ,
8490 Self :: Canonical => String :: new ( ) ,
8591 }
8692 }
8793
8894 /// Returns every schema form for convenient iteration.
89- #[ must_use] pub fn all ( ) -> Vec < SchemaForm > {
95+ #[ must_use]
96+ pub fn all ( ) -> Vec < SchemaForm > {
9097 vec ! [
9198 Self :: Bundled ,
9299 Self :: VSCode ,
@@ -144,7 +151,8 @@ impl std::fmt::Display for RecognizedSchemaVersion {
144151
145152impl RecognizedSchemaVersion {
146153 /// Returns every recognized schema version for convenient iteration.
147- #[ must_use] pub fn all ( ) -> Vec < RecognizedSchemaVersion > {
154+ #[ must_use]
155+ pub fn all ( ) -> Vec < RecognizedSchemaVersion > {
148156 vec ! [
149157 Self :: V3 ,
150158 Self :: V3_0 ,
@@ -153,17 +161,20 @@ impl RecognizedSchemaVersion {
153161 }
154162
155163 //// Returns the latest version with major, minor, and patch segments, like `3.0.0`.
156- #[ must_use] pub fn latest ( ) -> RecognizedSchemaVersion {
164+ #[ must_use]
165+ pub fn latest ( ) -> RecognizedSchemaVersion {
157166 Self :: V3_0_0
158167 }
159168
160169 /// Returns the latest minor version for the latest major version, like `3.0`.
161- #[ must_use] pub fn latest_minor ( ) -> RecognizedSchemaVersion {
170+ #[ must_use]
171+ pub fn latest_minor ( ) -> RecognizedSchemaVersion {
162172 Self :: V3_0
163173 }
164174
165175 /// Returns the latest major version, like `3`
166- #[ must_use] pub fn latest_major ( ) -> RecognizedSchemaVersion {
176+ #[ must_use]
177+ pub fn latest_major ( ) -> RecognizedSchemaVersion {
167178 Self :: V3
168179 }
169180}
@@ -251,7 +262,8 @@ pub(crate) fn get_recognized_schema_uris(
251262///
252263/// This is a convenience function used by the [`DscRepoSchema`] trait. It's not intended for
253264/// direct use.
254- #[ must_use] pub ( crate ) fn get_recognized_uris_subschema (
265+ #[ must_use]
266+ pub ( crate ) fn get_recognized_uris_subschema (
255267 metadata : Metadata ,
256268 schema_file_base_name : & str ,
257269 schema_folder_path : & str ,
@@ -352,7 +364,8 @@ pub trait DscRepoSchema : JsonSchema {
352364 /// default when creating an instance is the latest major version of the schema with the
353365 /// `aka.ms` prefix. If the schema is published in the bundled form, the default is for the
354366 /// bundled schema. Otherwise, the default is for the canonical (non-bundled) schema.
355- #[ must_use] fn default_schema_id_uri ( ) -> String {
367+ #[ must_use]
368+ fn default_schema_id_uri ( ) -> String {
356369 get_default_schema_uri (
357370 Self :: SCHEMA_FILE_BASE_NAME ,
358371 Self :: SCHEMA_FOLDER_PATH ,
@@ -361,7 +374,8 @@ pub trait DscRepoSchema : JsonSchema {
361374 }
362375
363376 /// Returns the schema URI for a given version, form, and prefix.
364- #[ must_use] fn get_schema_id_uri (
377+ #[ must_use]
378+ fn get_schema_id_uri (
365379 schema_version : RecognizedSchemaVersion ,
366380 schema_form : SchemaForm ,
367381 uri_prefix : SchemaUriPrefix
@@ -379,7 +393,8 @@ pub trait DscRepoSchema : JsonSchema {
379393 /// version.
380394 ///
381395 /// If the type isn't published in bundled form, this function returns `None`.
382- #[ must_use] fn get_enhanced_schema_id_uri ( schema_version : RecognizedSchemaVersion ) -> Option < String > {
396+ #[ must_use]
397+ fn get_enhanced_schema_id_uri ( schema_version : RecognizedSchemaVersion ) -> Option < String > {
383398 if !Self :: SCHEMA_SHOULD_BUNDLE {
384399 return None ;
385400 }
@@ -395,7 +410,8 @@ pub trait DscRepoSchema : JsonSchema {
395410
396411 /// Returns the URI for the canonical (non-bundled) form of the schema with the default
397412 /// prefix for a given version.
398- #[ must_use] fn get_canonical_schema_id_uri ( schema_version : RecognizedSchemaVersion ) -> String {
413+ #[ must_use]
414+ fn get_canonical_schema_id_uri ( schema_version : RecognizedSchemaVersion ) -> String {
399415 get_recognized_schema_uri (
400416 Self :: SCHEMA_FILE_BASE_NAME ,
401417 Self :: SCHEMA_FOLDER_PATH ,
@@ -407,7 +423,8 @@ pub trait DscRepoSchema : JsonSchema {
407423
408424 /// Returns the URI for the bundled form of the schema with the default prefix for a given
409425 /// version.
410- #[ must_use] fn get_bundled_schema_id_uri ( schema_version : RecognizedSchemaVersion ) -> Option < String > {
426+ #[ must_use]
427+ fn get_bundled_schema_id_uri ( schema_version : RecognizedSchemaVersion ) -> Option < String > {
411428 if !Self :: SCHEMA_SHOULD_BUNDLE {
412429 return None ;
413430 }
@@ -426,7 +443,8 @@ pub trait DscRepoSchema : JsonSchema {
426443 /// This convenience function generates a vector containing every recognized JSON Schema `$id`
427444 /// URI for a specific schema. It handles returning the schemas for every recognized prefix,
428445 /// version, and form.
429- #[ must_use] fn recognized_schema_uris ( ) -> Vec < String > {
446+ #[ must_use]
447+ fn recognized_schema_uris ( ) -> Vec < String > {
430448 get_recognized_schema_uris (
431449 Self :: SCHEMA_FILE_BASE_NAME ,
432450 Self :: SCHEMA_FOLDER_PATH ,
@@ -441,7 +459,8 @@ pub trait DscRepoSchema : JsonSchema {
441459 /// recognized and validated. This method generates the appropriate subschema with every
442460 /// valid URI for the schema's `$id` without needing to regularly update an enum for each
443461 /// schema and release.
444- #[ must_use] fn recognized_schema_uris_subschema ( _: & mut schemars:: gen:: SchemaGenerator ) -> Schema {
462+ #[ must_use]
463+ fn recognized_schema_uris_subschema ( _: & mut schemars:: gen:: SchemaGenerator ) -> Schema {
445464 get_recognized_uris_subschema (
446465 Self :: schema_metadata ( ) ,
447466 Self :: SCHEMA_FILE_BASE_NAME ,
@@ -451,7 +470,8 @@ pub trait DscRepoSchema : JsonSchema {
451470 }
452471
453472 /// Indicates whether a given string is a recognized shema URI.
454- #[ must_use] fn is_recognized_schema_uri ( uri : & String ) -> bool {
473+ #[ must_use]
474+ fn is_recognized_schema_uri ( uri : & String ) -> bool {
455475 Self :: recognized_schema_uris ( ) . contains ( uri)
456476 }
457477
@@ -476,7 +496,7 @@ pub trait DscRepoSchema : JsonSchema {
476496 }
477497}
478498
479- #[ allow ( unused_imports ) ]
499+ #[ cfg ( test ) ]
480500mod test {
481501 use serde:: { Deserialize , Serialize } ;
482502
0 commit comments