publish netconv-core and ios-config to crates.io from this repo
crates/netconv-parser-ios is renamed to crates/ios-config: it keeps its
pre-existing crates.io name/lineage (was casablanque-code/ios-config),
since it's IOS-specific and already had that identity as a published
crate. netconv-core is a new crate name — its scope grew beyond IOS
(shared by the VRP/Eltex renderers too), so keeping it under the old
'ios-config-core' name would have been misleading going forward.
Versioning for these two is now independent of the netconv app/workspace
version:
- netconv-core: first publish, starts at 0.1.0
- ios-config: 0.2.0 -- a breaking release. parse() (free function,
Result<NetworkConfig, ParseError>) is replaced by IosParser
implementing netconv_core::traits::ConfigParser, returning
Result<(NetworkConfig, ConversionReport), IosParseError>. This
reflects a real API change that happened while this parser lived
here (added unrecognized-line reporting), not just a rename.
ios-config-core (the old core crate) never got this and is no
longer maintained separately -- ios-config now depends on
netconv-core instead.
Both manifests gained description/license/readme/keywords/categories
(required by crates.io, were missing) and a proper per-crate README
with real usage examples matched against the actual public API.
CI: release.yml's publish-crates job is idempotent -- on every v* tag
it reads each crate's own current manifest version, checks crates.io's
sparse index for it, and only publishes what isn't already there (in
netconv-core -> ios-config order, since the latter depends on the
former). Tagging an app release never forces a version bump of either
library crate. Requires a CARGO_REGISTRY_TOKEN repo secret.
prepare-release.yml/Cargo.toml: dropped the workspace.dependencies
indirection from the previous attempt at this -- netconv-core and
ios-config no longer share a version with the app, so it's not needed.
Follow-up (manual, needs crates.io account access this environment
doesn't have):
- mark ios-config-core deprecated or yank it on crates.io, pointing
at netconv-core
- delete the casablanque-code/ios-config repo once this pipeline has
published ios-config successfully at least once