- Replace API field names (guestok, abe, ro, maproot_user, etc.) with
plain-English headers (Guest Access, Access-Based Enumeration, Read Only,
Map Root User, etc.) for customer clarity
- Drop comment rows that rendered poorly in spreadsheet apps
- Use two realistic example rows instead to teach by example
- Update csv_source.py to map friendly header names to API field names
before validation and coercion (raw API names still accepted)
- Update README column reference to match new header names
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add truenas_migrate/csv_source.py: parses SMB and NFS share definitions
from customer-supplied CSV files; returns same dict shape as parse_archive()
so migrate.py is untouched
- Add smb_shares_template.csv and nfs_shares_template.csv with annotated
headers and example rows (# comment rows are skipped by the parser)
- Update cli.py: interactive wizard gains a source-type step (archive vs CSV);
run() resolves CSV source via --smb-csv / --nfs-csv args; --debug-tar is now
optional; argparse validates mutual exclusion of archive and CSV flags
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>