private void LoadProjectInfo() { string projectType = _metadataDocument.GetScalarValue(new[] { "project_type" }); switch (projectType) { case "app": Type = DartProjectType.App; break; case "module": Type = DartProjectType.Module; break; case "package": Type = DartProjectType.Package; break; default: throw new ArgumentException($"Unknown Dart project type: {projectType}"); } ValidatePubspecFile(); Name = _pubspecDocument.GetScalarValue(new[] { NameYamlNode }); Description = _pubspecDocument.GetScalarValue(new[] { DescriptionYamlNode }); Author = _pubspecDocument.GetScalarValue(new[] { AuthorYamlNode }); Homepage = _pubspecDocument.GetScalarValue(new[] { HomepageYamlNode }); Version = _pubspecDocument.GetScalarValue(new[] { VersionYamlNode }); Sdk = _pubspecDocument.GetScalarValue(new[] { EnvironmentYamlNode, SdkYamlNode }); }
private void ValidatePubspecFile() { YamlDocument doc = _pubspecDocument; DartProjectType type = Type; // Check if "name" exists YamlScalarNode name = doc.GetScalarNode(new[] { NameYamlNode }); if (name == null) { throw new ArgumentException($"Missing '{NameYamlNode}' node inside '{PubspecFilename}' file."); } // Check if "description" exists YamlScalarNode description = doc.GetScalarNode(new[] { DescriptionYamlNode }); if (description == null) { throw new ArgumentException($"Missing '{DescriptionYamlNode}' node inside '{PubspecFilename}' file."); } // Check if "author" exists YamlScalarNode author = doc.GetScalarNode(new[] { AuthorYamlNode }); if (author == null && type == DartProjectType.Package) { throw new ArgumentException($"Missing '{AuthorYamlNode}' node inside '{PubspecFilename}' file."); } // Check if "homepage" exists YamlScalarNode homepage = doc.GetScalarNode(new[] { HomepageYamlNode }); if (homepage == null && type == DartProjectType.Package) { throw new ArgumentException($"Missing '{HomepageYamlNode}' node inside '{PubspecFilename}' file."); } // Check if "version" exists YamlScalarNode version = doc.GetScalarNode(new[] { VersionYamlNode }); if (version == null) { throw new ArgumentException($"Missing '{VersionYamlNode}' node inside '{PubspecFilename}' file."); } // Check if "dependencies" exists YamlMappingNode dependencies = doc.GetMappingNode(new[] { DependenciesYaml }); if (dependencies == null) { throw new ArgumentException($"Missing '{DependenciesYaml}' node inside '{PubspecFilename}' file."); } // Check if "dev_dependencies" exists YamlMappingNode devDependencies = doc.GetMappingNode(new[] { DevDependenciesYaml }); if (devDependencies == null) { throw new ArgumentException($"Missing '{DevDependenciesYaml}' node inside '{PubspecFilename}' file."); } // Check if "environment" exists YamlMappingNode environment = doc.GetMappingNode(new[] { EnvironmentYamlNode }); if (environment == null) { throw new ArgumentException($"Missing '{EnvironmentYamlNode}' node inside '{PubspecFilename}' file."); } // Check if "sdk" exists YamlScalarNode sdk = doc.GetScalarNode(new[] { EnvironmentYamlNode, SdkYamlNode }); if (sdk == null) { throw new ArgumentException($"Missing '{SdkYamlNode}' node inside '{PubspecFilename}' file."); } }
static void CheckPubspecDocument(YamlDocument doc, DartProjectType type) { // Exists "name" YamlScalarNode name = doc.GetScalarNode(new[] { _nameYaml }); if (name == null) { throw new DartProjectException($"Dart project error: missing '{_nameYaml}' !!!", DartProjectError.PubspecInvalidFormat); } // Exists "description" YamlScalarNode description = doc.GetScalarNode(new[] { _descriptionYaml }); if (description == null) { throw new DartProjectException($"Dart project error: missing '{_descriptionYaml}' !!!", DartProjectError.PubspecInvalidFormat); } // Exists "author" YamlScalarNode author = doc.GetScalarNode(new[] { _authorYaml }); if (author == null && type == DartProjectType.Package) { throw new DartProjectException($"Dart project error: missing '{_authorYaml}' !!!", DartProjectError.PubspecInvalidFormat); } // Exists "homepage" YamlScalarNode homepage = doc.GetScalarNode(new[] { _homepageYaml }); if (homepage == null && type == DartProjectType.Package) { throw new DartProjectException($"Dart project error: missing '{_homepageYaml}' !!!", DartProjectError.PubspecInvalidFormat); } // Exists "version" YamlScalarNode version = doc.GetScalarNode(new[] { _versionYaml }); if (version == null) { throw new DartProjectException($"Dart project error: missing '{_versionYaml}' !!!", DartProjectError.PubspecInvalidFormat); } // Exists "dependencies" YamlMappingNode dependencies = doc.GetMappingNode(new[] { _dependeciesYaml }); if (dependencies == null) { throw new DartProjectException($"Dart project error: missing '{_dependeciesYaml}' section !!!", DartProjectError.PubspecInvalidFormat); } // Exists "dev_dependencies" YamlMappingNode devDependencies = doc.GetMappingNode(new[] { _devDependeciesYaml }); if (devDependencies == null) { throw new DartProjectException($"Dart project error: missing '{_devDependeciesYaml}' section !!!", DartProjectError.PubspecInvalidFormat); } // Exists "environment" YamlMappingNode environment = doc.GetMappingNode(new[] { _environmentYaml }); if (environment == null) { throw new DartProjectException($"Dart project error: missing '{_environmentYaml}' section !!!", DartProjectError.PubspecInvalidFormat); } // Exists "sdk" YamlScalarNode sdk = doc.GetScalarNode(new[] { _environmentYaml, _sdkYaml }); if (sdk == null) { throw new DartProjectException($"Dart project error: missing '{_sdkYaml}' section !!!", DartProjectError.PubspecInvalidFormat); } }