@medplum/cli 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -128,7 +128,7 @@ function readFileContents(fileName) {
128
128
  }
129
129
  if (require.main === module) {
130
130
  dotenv_1.default.config();
131
- const medplum = new core_1.MedplumClient({ fetch: node_fetch_1.default });
131
+ const medplum = new core_1.MedplumClient({ fetch: node_fetch_1.default, baseUrl: process.env['MEDPLUM_BASE_URL'] });
132
132
  medplum
133
133
  .startClientLogin(process.env['MEDPLUM_CLIENT_ID'], process.env['MEDPLUM_CLIENT_SECRET'])
134
134
  .then(() => main(medplum, process.argv))
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\nimport { MedplumClient, normalizeErrorString } from '@medplum/core';\nimport { Bot, OperationOutcome } from '@medplum/fhirtypes';\nimport dotenv from 'dotenv';\nimport { existsSync, readFileSync } from 'fs';\nimport fetch from 'node-fetch';\nimport { resolve } from 'path';\n\ninterface MedplumConfig {\n readonly bots?: MedplumBotConfig[];\n}\n\ninterface MedplumBotConfig {\n readonly name: string;\n readonly id: string;\n readonly source: string;\n readonly dist?: string;\n}\n\nexport async function main(medplum: MedplumClient, argv: string[]): Promise<void> {\n if (argv.length < 3) {\n console.log('Usage: medplum <command>');\n return;\n }\n\n const command = argv[2];\n if (command === 'save-bot') {\n await runBotCommands(medplum, argv, ['save']);\n } else if (command === 'deploy-bot') {\n await runBotCommands(medplum, argv, ['save', 'deploy']);\n } else {\n console.log(`Unknown command: ${command}`);\n }\n}\n\nasync function runBotCommands(medplum: MedplumClient, argv: string[], commands: string[]): Promise<void> {\n if (argv.length < 4) {\n console.log(`Usage: medplum ${argv[2]} <bot-name>`);\n return;\n }\n\n const botName = argv[3];\n const botConfig = readBotConfig(botName);\n if (!botConfig) {\n console.log(`Error: ${botName} not found`);\n return;\n }\n\n let bot;\n try {\n bot = await medplum.readResource('Bot', botConfig.id);\n } catch (err) {\n console.log('Error: ' + normalizeErrorString(err));\n return;\n }\n\n if (commands.includes('save')) {\n await saveBot(medplum, botConfig, bot);\n }\n\n if (commands.includes('deploy')) {\n await deployBot(medplum, botConfig, bot);\n }\n}\n\nasync function saveBot(medplum: MedplumClient, botConfig: MedplumBotConfig, bot: Bot): Promise<void> {\n const code = readFileContents(botConfig.source);\n if (!code) {\n return;\n }\n\n try {\n console.log('Update bot code.....');\n const updateResult = await medplum.updateResource({\n ...bot,\n code,\n });\n if (!updateResult) {\n console.log('Bot not modified');\n } else {\n console.log('Success! New bot version: ' + updateResult.meta?.versionId);\n }\n } catch (err) {\n console.log('Update error: ', err);\n }\n}\n\nasync function deployBot(medplum: MedplumClient, botConfig: MedplumBotConfig, bot: Bot): Promise<void> {\n const code = readFileContents(botConfig.dist ?? botConfig.source);\n if (!code) {\n return;\n }\n\n try {\n console.log('Deploying bot...');\n const deployResult = (await medplum.post(medplum.fhirUrl('Bot', bot.id as string, '$deploy'), {\n code,\n })) as OperationOutcome;\n console.log('Deploy result: ' + deployResult.issue?.[0]?.details?.text);\n } catch (err) {\n console.log('Deploy error: ', err);\n }\n}\n\nfunction readBotConfig(botName: string): MedplumBotConfig | undefined {\n return readConfig()?.bots?.find((b) => b.name === botName);\n}\n\nfunction readConfig(): MedplumConfig | undefined {\n const content = readFileContents('medplum.config.json');\n if (!content) {\n return undefined;\n }\n return JSON.parse(content);\n}\n\nfunction readFileContents(fileName: string): string | undefined {\n const path = resolve(process.cwd(), fileName);\n if (!existsSync(path)) {\n console.log('Error: File does not exist: ' + path);\n return '';\n }\n return readFileSync(path, 'utf8');\n}\n\nif (require.main === module) {\n dotenv.config();\n const medplum = new MedplumClient({ fetch });\n medplum\n .startClientLogin(process.env['MEDPLUM_CLIENT_ID'] as string, process.env['MEDPLUM_CLIENT_SECRET'] as string)\n .then(() => main(medplum, process.argv))\n .catch((err) => console.error('Unhandled error:', err));\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\nimport { MedplumClient, normalizeErrorString } from '@medplum/core';\nimport { Bot, OperationOutcome } from '@medplum/fhirtypes';\nimport dotenv from 'dotenv';\nimport { existsSync, readFileSync } from 'fs';\nimport fetch from 'node-fetch';\nimport { resolve } from 'path';\n\ninterface MedplumConfig {\n readonly bots?: MedplumBotConfig[];\n}\n\ninterface MedplumBotConfig {\n readonly name: string;\n readonly id: string;\n readonly source: string;\n readonly dist?: string;\n}\n\nexport async function main(medplum: MedplumClient, argv: string[]): Promise<void> {\n if (argv.length < 3) {\n console.log('Usage: medplum <command>');\n return;\n }\n\n const command = argv[2];\n if (command === 'save-bot') {\n await runBotCommands(medplum, argv, ['save']);\n } else if (command === 'deploy-bot') {\n await runBotCommands(medplum, argv, ['save', 'deploy']);\n } else {\n console.log(`Unknown command: ${command}`);\n }\n}\n\nasync function runBotCommands(medplum: MedplumClient, argv: string[], commands: string[]): Promise<void> {\n if (argv.length < 4) {\n console.log(`Usage: medplum ${argv[2]} <bot-name>`);\n return;\n }\n\n const botName = argv[3];\n const botConfig = readBotConfig(botName);\n if (!botConfig) {\n console.log(`Error: ${botName} not found`);\n return;\n }\n\n let bot;\n try {\n bot = await medplum.readResource('Bot', botConfig.id);\n } catch (err) {\n console.log('Error: ' + normalizeErrorString(err));\n return;\n }\n\n if (commands.includes('save')) {\n await saveBot(medplum, botConfig, bot);\n }\n\n if (commands.includes('deploy')) {\n await deployBot(medplum, botConfig, bot);\n }\n}\n\nasync function saveBot(medplum: MedplumClient, botConfig: MedplumBotConfig, bot: Bot): Promise<void> {\n const code = readFileContents(botConfig.source);\n if (!code) {\n return;\n }\n\n try {\n console.log('Update bot code.....');\n const updateResult = await medplum.updateResource({\n ...bot,\n code,\n });\n if (!updateResult) {\n console.log('Bot not modified');\n } else {\n console.log('Success! New bot version: ' + updateResult.meta?.versionId);\n }\n } catch (err) {\n console.log('Update error: ', err);\n }\n}\n\nasync function deployBot(medplum: MedplumClient, botConfig: MedplumBotConfig, bot: Bot): Promise<void> {\n const code = readFileContents(botConfig.dist ?? botConfig.source);\n if (!code) {\n return;\n }\n\n try {\n console.log('Deploying bot...');\n const deployResult = (await medplum.post(medplum.fhirUrl('Bot', bot.id as string, '$deploy'), {\n code,\n })) as OperationOutcome;\n console.log('Deploy result: ' + deployResult.issue?.[0]?.details?.text);\n } catch (err) {\n console.log('Deploy error: ', err);\n }\n}\n\nfunction readBotConfig(botName: string): MedplumBotConfig | undefined {\n return readConfig()?.bots?.find((b) => b.name === botName);\n}\n\nfunction readConfig(): MedplumConfig | undefined {\n const content = readFileContents('medplum.config.json');\n if (!content) {\n return undefined;\n }\n return JSON.parse(content);\n}\n\nfunction readFileContents(fileName: string): string | undefined {\n const path = resolve(process.cwd(), fileName);\n if (!existsSync(path)) {\n console.log('Error: File does not exist: ' + path);\n return '';\n }\n return readFileSync(path, 'utf8');\n}\n\nif (require.main === module) {\n dotenv.config();\n const medplum = new MedplumClient({ fetch, baseUrl: process.env['MEDPLUM_BASE_URL'] });\n medplum\n .startClientLogin(process.env['MEDPLUM_CLIENT_ID'] as string, process.env['MEDPLUM_CLIENT_SECRET'] as string)\n .then(() => main(medplum, process.argv))\n .catch((err) => console.error('Unhandled error:', err));\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medplum/cli",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "Medplum Command Line Interface",
5
5
  "author": "Medplum <hello@medplum.com>",
6
6
  "license": "Apache-2.0",