This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
mobaxterm2ssh is a Node.js CLI tool that converts terminal session configurations between MobaxTerm, SuperPutty, and OpenSSH formats. It enables bidirectional migration of saved sessions while preserving folder hierarchies, jump host settings, and authentication options.
# Run all tests
npm test
# Run specific test suites
npm run test:superputty # SuperPutty parser tests
npm run test:mobaxterm # MobaxTerm parser tests
npm run test:generator # SuperPutty generator tests
# CLI usage examples
node mobaconv.js --datadir ./data/ # Auto-detect format, output SSH config
node mobaconv.js --datadir ./data/ --format superputty # Force SuperPutty input format
node mobaconv.js --datadir ./data/ --output-format superputty --outputfile out.xml # Output to SuperPutty XMLNo build step required - runs directly with Node.js.
Input Files → Parser Registry → Format Parsers → Unified Sessions → Generator Registry → Output
- Parsers (
lib/parsers/) convert format-specific files into unified Session objects - Session model (
lib/session.js) defines the common data structure all formats convert to/from - Generators (
lib/generators/) convert unified Sessions back to specific output formats
mobaconv.js- CLI entry point, argument parsing, orchestrationlib/session.js- Unified session data model withcreateSession()factory andSessionTypeenumlib/parsers/index.js- Parser registry with format auto-detection by file extensionlib/parsers/mobaxterm.js- Parses.ini/.mxtsessionsfiles (32 config fields including jump host settings)lib/parsers/superputty.js- ParsesSessions.xml, extracts PuTTY command-line args (-i,-A,-X,-P)lib/generators/sshconfig.js- Outputs OpenSSH config format, merges with existing config, creates backupslib/generators/superputty.js- Outputs SuperPutty XML format
To add a new format:
- Create parser in
lib/parsers/implementingcanParse(file)andparse(file)returning Session objects - Register in
lib/parsers/index.js - Create generator in
lib/generators/if bidirectional conversion needed - Register in
lib/generators/index.js
Tests use Node.js built-in assert module with a custom test harness (no external framework). Test files are in test/ and test individual parser/generator functions.