generateJetbrainsConfig function

Map<String, dynamic> generateJetbrainsConfig({
  1. String id = 'com.neomage-bridge',
  2. String name = 'Neomage Bridge',
  3. String version = '1.0.0',
  4. String description = 'Bridge plugin connecting JetBrains IDEs to Neomage',
  5. int port = 19836,
})

Generate a JetBrains plugin descriptor (plugin.xml content as a map).

Implementation

Map<String, dynamic> generateJetbrainsConfig({
  String id = 'com.neomage-bridge',
  String name = 'Neomage Bridge',
  String version = '1.0.0',
  String description = 'Bridge plugin connecting JetBrains IDEs to Neomage',
  int port = 19836,
}) {
  return {
    'id': id,
    'name': name,
    'version': version,
    'description': description,
    'vendor': {
      'name': 'Anthropic',
      'url': 'https://anthropic.com',
      'email': 'support@neomage.com',
    },
    'ideaVersion': {'sinceBuild': '231.0', 'untilBuild': '243.*'},
    'depends': ['com.intellij.modules.platform', 'com.intellij.modules.lang'],
    'extensions': {
      'defaultExtensionNs': 'com.intellij',
      'applicationService': {
        'serviceImplementation':
            'com.neomage.bridge.BridgeService',
      },
      'postStartupActivity': {
        'implementation':
            'com.neomage.bridge.BridgeStartupActivity',
      },
      'notificationGroup': {'id': 'Neomage', 'displayType': 'BALLOON'},
    },
    'actions': {
      'group': {
        'id': 'NeomageCode.Menu',
        'text': 'Neomage',
        'popup': true,
        'addToGroup': {'groupId': 'ToolsMenu', 'anchor': 'last'},
        'actions': [
          {
            'id': 'NeomageCode.Connect',
            'text': 'Connect to Neomage',
            'description': 'Establish connection to Neomage bridge',
          },
          {
            'id': 'NeomageCode.Disconnect',
            'text': 'Disconnect',
            'description': 'Disconnect from Neomage bridge',
          },
          {
            'id': 'NeomageCode.SendSelection',
            'text': 'Send Selection to Neomage',
            'description': 'Send the current editor selection to Neomage',
          },
        ],
      },
    },
    'settings': {
      'port': port,
      'autoConnect': true,
      'reconnectIntervalMs': 5000,
      'maxReconnectAttempts': 10,
    },
  };
}