Skip to content
This repository was archived by the owner on May 11, 2022. It is now read-only.

Commit ba4b8f1

Browse files
authored
Fusetools2 1203 adding tuts thru ENV variable (#644)
* FUSETOOLS2-1203 adding tutorials via prefs - add test - update to use environment variable - adjusting env variable name - fix test - cleanup - remove unneeded import - addressing PR feedback Signed-off-by: Brian Fitzpatrick <[email protected]>
1 parent c69777b commit ba4b8f1

File tree

3 files changed

+50
-2
lines changed

3 files changed

+50
-2
lines changed

src/extension.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ import { clearRegisteredTutorials, getOpenAtStartupSetting,
2222
clearOutputChannels, registerTutorialWithJSON, getAutoInstallDefaultTutorialsSetting,
2323
addNewTutorialWithNameAndCategoryForDidactUri,
2424
removeTutorialByNameAndCategory,
25-
registerEmbeddedTutorials} from './utils';
25+
registerEmbeddedTutorials,
26+
appendAdditionalTutorialsFromEnv} from './utils';
2627
import { DidactUriCompletionItemProvider } from './didactUriCompletionItemProvider';
2728
import { DidactPanelSerializer } from './didactPanelSerializer';
2829
import { didactManager, VIEW_TYPE } from './didactManager';
@@ -116,6 +117,9 @@ export async function activate(context: vscode.ExtensionContext): Promise<any> {
116117
await registerEmbeddedTutorials(context, 'Writing Your First Didact Tutorial', './demos/markdown/tutorial/tutorial.didact.md');
117118
}
118119

120+
// append any additional tutorials if we have them
121+
await appendAdditionalTutorialsFromEnv();
122+
119123
// create the view
120124
createIntegrationsView();
121125

src/test/suite/registry.test.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as assert from 'assert';
2-
import {getRegisteredTutorials, getDidactCategories, getTutorialsForCategory, getUriForDidactNameAndCategory, registerTutorialWithCategory, clearRegisteredTutorials, registerTutorialWithArgs} from '../../utils';
2+
import {getRegisteredTutorials, getDidactCategories, getTutorialsForCategory, getUriForDidactNameAndCategory, registerTutorialWithCategory, clearRegisteredTutorials, registerTutorialWithArgs, DIDACT_APPEND_REGISTERED_SETTING, getAppendRegisteredSettingFromEnv, appendAdditionalTutorialsFromEnv} from '../../utils';
33
import {before} from 'mocha';
44
import * as vscode from 'vscode';
55
import { ADD_TUTORIAL_TO_REGISTRY, getContext, REGISTER_TUTORIAL } from '../../extensionFunctions';
@@ -115,6 +115,24 @@ suite('Didact registry test suite', () => {
115115
assert.ok(foundTutorial, `Did not find new-tutorial-4 registered via JSON`);
116116
});
117117

118+
test('append registry from environment variable', async() => {
119+
const tutsToAppend : String = '[{"name":"AppendMe2","category":"AppendedCat2","sourceUri":"https%3A%2F%2Fraw.githubusercontent.com%2Fredhat-developer%2Fvscode-didact%2Fmaster%2Fexamples%2Fregistry.example.didact.md"}]';
120+
process.env[DIDACT_APPEND_REGISTERED_SETTING] = tutsToAppend.toString();
121+
122+
const envVarJson = getAppendRegisteredSettingFromEnv();
123+
console.log(`envVar = ` + envVarJson);
124+
assert.ok(envVarJson, `Did not find envVarJson`);
125+
126+
const registry = getRegisteredTutorials();
127+
assert.notStrictEqual(registry, undefined);
128+
129+
const tutName = `AppendMe2`;
130+
await appendAdditionalTutorialsFromEnv();
131+
const foundTutorial = verifyTutorialInRegistry(tutName);
132+
delete process.env.DIDACT_APPEND_REGISTERED_SETTING;
133+
assert.ok(foundTutorial, `Did not find ${tutName} registered after appending to tutorial list from settings`);
134+
});
135+
118136
test('Clear all the tutorials', async() => {
119137
const registry = getRegisteredTutorials();
120138
assert.notStrictEqual(registry, undefined);

src/utils.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export const DIDACT_OPEN_AT_STARTUP = 'didact.openDefaultTutorialAtStartup';
3030
export const DIDACT_AUTO_INSTALL_DEFAULT_TUTORIALS = 'didact.autoAddDefaultTutorials';
3131
export const DIDACT_CLI_LINK_LF_SETTING = 'didact.edit.cliLinkLF';
3232
export const DIDACT_CLI_LINK_TEXT_SETTING = 'didact.edit.cliLinkText';
33+
export const DIDACT_APPEND_REGISTERED_SETTING = 'DIDACT_APPEND_REGISTRY';
3334

3435
const CACHED_OUTPUT_CHANNELS: OutputChannel[] = new Array<OutputChannel>();
3536

@@ -500,3 +501,28 @@ export function getFileExtension(pathAsString: string) : string | undefined {
500501
}
501502
return undefined;
502503
}
504+
505+
export function getAppendRegisteredSettingFromEnv() : string | undefined {
506+
const envVar = process.env[DIDACT_APPEND_REGISTERED_SETTING];
507+
if (!envVar || (typeof envVar !== 'string')) {
508+
return;
509+
}
510+
return envVar as string;
511+
}
512+
513+
export async function appendAdditionalTutorialsFromEnv() : Promise<void> {
514+
try {
515+
const appendTutorialsAtStartup: string | undefined = getAppendRegisteredSettingFromEnv();
516+
if (appendTutorialsAtStartup) {
517+
await extensionFunctions.sendTextToOutputChannel(`Didact tutorials appended at startup via ${DIDACT_APPEND_REGISTERED_SETTING}`);
518+
const jsonTutorials = JSON.parse(appendTutorialsAtStartup);
519+
for (const jsonTutorial of jsonTutorials) {
520+
await extensionFunctions.sendTextToOutputChannel(`--Adding tutorial ${jsonTutorial.sourceUri} as ${jsonTutorial.name}/${jsonTutorial.category}`);
521+
await registerTutorialWithCategory(jsonTutorial.name, jsonTutorial.sourceUri, jsonTutorial.category);
522+
}
523+
}
524+
} catch (ex) {
525+
await extensionFunctions.sendTextToOutputChannel(ex);
526+
return Promise.reject(ex);
527+
}
528+
}

0 commit comments

Comments
 (0)