@eclipse-che/che-devworkspace-generator
Advanced tools
Comparing version 0.0.1-7784e80 to 0.0.1-96cdbb4
@@ -90,2 +90,3 @@ "use strict"; | ||
context = _a.sent(); | ||
if (!outputFile) return [3 /*break*/, 3]; | ||
allContentArray = context.devWorkspaceTemplates.map(function (template) { return jsYaml.dump(template); }); | ||
@@ -97,2 +98,4 @@ allContentArray.push(jsYaml.dump(context.devWorkspace)); | ||
_a.sent(); | ||
_a.label = 3; | ||
case 3: | ||
console.log("DevWorkspace " + context.devWorkspaceTemplates[0].metadata.name + " was generated."); | ||
@@ -99,0 +102,0 @@ return [2 /*return*/, context]; |
152
lib/main.js
@@ -77,52 +77,28 @@ "use strict"; | ||
var Main = /** @class */ (function () { | ||
/** | ||
* Default constructor. | ||
*/ | ||
function Main() { | ||
// no-op | ||
} | ||
Main.prototype.doStart = function () { | ||
// Generates a devfile context object based on params | ||
Main.prototype.generateDevfileContext = function (params, axiosInstance) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
var devfilePath, devfileUrl, outputFile, editorPath, pluginRegistryUrl, editorEntry, projects, args, axiosInstance, inversifyBinbding, container, devfileContent, editorContent, githubResolver, githubUrl, devfileParsed, editorDevfile, generate; | ||
var pluginRegistryUrl, inversifyBinbding, container, devfileContent, editorContent, githubResolver, githubUrl, devfileParsed, editorDevfile, generate; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: | ||
projects = []; | ||
args = process.argv.slice(2); | ||
args.forEach(function (arg) { | ||
if (arg.startsWith('--devfile-path:')) { | ||
devfilePath = arg.substring('--devfile-path:'.length); | ||
} | ||
if (arg.startsWith('--devfile-url:')) { | ||
devfileUrl = arg.substring('--devfile-url:'.length); | ||
} | ||
if (arg.startsWith('--plugin-registry-url:')) { | ||
pluginRegistryUrl = arg.substring('--plugin-registry-url:'.length); | ||
} | ||
if (arg.startsWith('--editor-entry:')) { | ||
editorEntry = arg.substring('--editor-entry:'.length); | ||
} | ||
if (arg.startsWith('--editor-path:')) { | ||
editorPath = arg.substring('--editor-path:'.length); | ||
} | ||
if (arg.startsWith('--output-file:')) { | ||
outputFile = arg.substring('--output-file:'.length); | ||
} | ||
if (arg.startsWith('--project.')) { | ||
var name = arg.substring('--project.'.length, arg.indexOf('=')); | ||
var location = arg.substring(arg.indexOf('=') + 1); | ||
location = location.replace('{{_INTERNAL_URL_}}', '{{ INTERNAL_URL }}'); | ||
projects.push({ name: name, location: location }); | ||
} | ||
}); | ||
if (!editorPath && !editorEntry) { | ||
throw new Error('missing --editor-path: or --editor-entry: parameter'); | ||
if (!params.editorPath && !params.editorEntry && !params.editorContent) { | ||
throw new Error('missing editorPath or editorEntry or editorContent'); | ||
} | ||
if (editorEntry && !pluginRegistryUrl) { | ||
if (!params.devfilePath && !params.devfileUrl && !params.devfileContent) { | ||
throw new Error('missing devfilePath or devfileUrl or devfileContent'); | ||
} | ||
if (params.pluginRegistryUrl) { | ||
pluginRegistryUrl = params.pluginRegistryUrl; | ||
} | ||
else { | ||
pluginRegistryUrl = 'https://eclipse-che.github.io/che-plugin-registry/main/v3'; | ||
console.log("No plug-in registry url. Setting to " + pluginRegistryUrl); | ||
} | ||
if (!devfilePath && !devfileUrl) { | ||
throw new Error('missing --devfile-path: or --devfile-url: parameter'); | ||
} | ||
if (!outputFile) { | ||
throw new Error('missing --output-file: parameter'); | ||
} | ||
axiosInstance = axios["default"]; | ||
inversifyBinbding = new inversify_binding_1.InversifyBinding(); | ||
@@ -136,5 +112,5 @@ return [4 /*yield*/, inversifyBinbding.initBindings({ | ||
container.bind(generate_1.Generate).toSelf().inSingletonScope(); | ||
if (!devfileUrl) return [3 /*break*/, 3]; | ||
if (!params.devfileUrl) return [3 /*break*/, 3]; | ||
githubResolver = container.get(github_resolver_1.GithubResolver); | ||
githubUrl = githubResolver.resolve(devfileUrl); | ||
githubUrl = githubResolver.resolve(params.devfileUrl); | ||
return [4 /*yield*/, container.get(url_fetcher_1.UrlFetcher).fetchText(githubUrl.getContentUrl('devfile.yaml'))]; | ||
@@ -160,23 +136,32 @@ case 2: | ||
devfileContent = jsYaml.dump(devfileParsed); | ||
return [3 /*break*/, 5]; | ||
case 3: return [4 /*yield*/, fs.readFile(devfilePath)]; | ||
return [3 /*break*/, 6]; | ||
case 3: | ||
if (!params.devfilePath) return [3 /*break*/, 5]; | ||
return [4 /*yield*/, fs.readFile(params.devfilePath)]; | ||
case 4: | ||
devfileContent = _a.sent(); | ||
_a.label = 5; | ||
return [3 /*break*/, 6]; | ||
case 5: | ||
devfileContent = params.devfileContent; | ||
_a.label = 6; | ||
case 6: | ||
// enhance projects | ||
devfileContent = this.replaceIfExistingProjects(devfileContent, projects); | ||
if (!editorEntry) return [3 /*break*/, 7]; | ||
return [4 /*yield*/, container.get(plugin_registry_resolver_1.PluginRegistryResolver).loadDevfilePlugin(editorEntry)]; | ||
case 6: | ||
devfileContent = this.replaceIfExistingProjects(devfileContent, params.projects); | ||
if (!params.editorContent) return [3 /*break*/, 7]; | ||
editorContent = params.editorContent; | ||
return [3 /*break*/, 11]; | ||
case 7: | ||
if (!params.editorEntry) return [3 /*break*/, 9]; | ||
return [4 /*yield*/, container.get(plugin_registry_resolver_1.PluginRegistryResolver).loadDevfilePlugin(params.editorEntry)]; | ||
case 8: | ||
editorDevfile = _a.sent(); | ||
editorContent = jsYaml.dump(editorDevfile); | ||
return [3 /*break*/, 9]; | ||
case 7: return [4 /*yield*/, fs.readFile(editorPath)]; | ||
case 8: | ||
return [3 /*break*/, 11]; | ||
case 9: return [4 /*yield*/, fs.readFile(params.editorPath)]; | ||
case 10: | ||
editorContent = _a.sent(); | ||
_a.label = 9; | ||
case 9: | ||
_a.label = 11; | ||
case 11: | ||
generate = container.get(generate_1.Generate); | ||
return [2 /*return*/, generate.generate(devfileContent, editorContent, outputFile)]; | ||
return [2 /*return*/, generate.generate(devfileContent, editorContent, params.outputFile)]; | ||
} | ||
@@ -214,12 +199,59 @@ }); | ||
return __awaiter(this, void 0, void 0, function () { | ||
var error_1; | ||
var devfilePath, devfileUrl, outputFile, editorPath, pluginRegistryUrl, editorEntry, projects, args, error_1; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: | ||
_a.trys.push([0, 2, , 3]); | ||
return [4 /*yield*/, this.doStart()]; | ||
projects = []; | ||
args = process.argv.slice(2); | ||
args.forEach(function (arg) { | ||
if (arg.startsWith('--devfile-path:')) { | ||
devfilePath = arg.substring('--devfile-path:'.length); | ||
} | ||
if (arg.startsWith('--devfile-url:')) { | ||
devfileUrl = arg.substring('--devfile-url:'.length); | ||
} | ||
if (arg.startsWith('--plugin-registry-url:')) { | ||
pluginRegistryUrl = arg.substring('--plugin-registry-url:'.length); | ||
} | ||
if (arg.startsWith('--editor-entry:')) { | ||
editorEntry = arg.substring('--editor-entry:'.length); | ||
} | ||
if (arg.startsWith('--editor-path:')) { | ||
editorPath = arg.substring('--editor-path:'.length); | ||
} | ||
if (arg.startsWith('--output-file:')) { | ||
outputFile = arg.substring('--output-file:'.length); | ||
} | ||
if (arg.startsWith('--project.')) { | ||
var name = arg.substring('--project.'.length, arg.indexOf('=')); | ||
var location = arg.substring(arg.indexOf('=') + 1); | ||
location = location.replace('{{_INTERNAL_URL_}}', '{{ INTERNAL_URL }}'); | ||
projects.push({ name: name, location: location }); | ||
} | ||
}); | ||
_a.label = 1; | ||
case 1: | ||
_a.trys.push([1, 3, , 4]); | ||
if (!editorPath && !editorEntry) { | ||
throw new Error('missing --editor-path: or --editor-entry: parameter'); | ||
} | ||
if (!devfilePath && !devfileUrl) { | ||
throw new Error('missing --devfile-path: or --devfile-url: parameter'); | ||
} | ||
if (!outputFile) { | ||
throw new Error('missing --output-file: parameter'); | ||
} | ||
return [4 /*yield*/, this.generateDevfileContext({ | ||
devfilePath: devfilePath, | ||
devfileUrl: devfileUrl, | ||
editorPath: editorPath, | ||
outputFile: outputFile, | ||
pluginRegistryUrl: pluginRegistryUrl, | ||
editorEntry: editorEntry, | ||
projects: projects | ||
}, axios["default"])]; | ||
case 2: | ||
_a.sent(); | ||
return [2 /*return*/, true]; | ||
case 2: | ||
case 3: | ||
error_1 = _a.sent(); | ||
@@ -229,3 +261,3 @@ console.error('stack=' + error_1.stack); | ||
return [2 /*return*/, false]; | ||
case 3: return [2 /*return*/]; | ||
case 4: return [2 /*return*/]; | ||
} | ||
@@ -232,0 +264,0 @@ }); |
{ | ||
"name": "@eclipse-che/che-devworkspace-generator", | ||
"version": "0.0.1-7784e80", | ||
"version": "0.0.1-96cdbb4", | ||
"private": false, | ||
@@ -21,9 +21,11 @@ "description": "Generates DevWorkspaces by transforming existing devfiles", | ||
"build": "yarn run format && yarn run compile && yarn run lint && yarn run test", | ||
"compile": "tsc --project .", | ||
"compile": "tsc --declaration --project .", | ||
"format": "if-env SKIP_FORMAT=true && echo 'skip format check' || prettier --check '{src,tests}/**/*.ts' package.json", | ||
"format:fix": "prettier --write '{src,tests}/**/*.ts' package.json", | ||
"lint": "if-env SKIP_LINT=true && echo 'skip lint check' || eslint --cache=true --no-error-on-unmatched-pattern=true '{src,tests}/(!model|**)/*.ts'", | ||
"lint:fix": "eslint --fix --cache=true --no-error-on-unmatched-pattern=true \"{src,tests}/(!model|**)/*.{ts,tsx}\"", | ||
"lint:fix": "eslint --fix --cache=true --no-error-on-unmatched-pattern=true \"{src,tests}/(!model|**)/*.ts\"", | ||
"test": "if-env SKIP_TEST=true && echo 'skip test' || jest --forceExit", | ||
"watch": "tsc -w", | ||
"license:check": "docker run --rm -t -v ${PWD}/:/workspace/project quay.io/che-incubator/dash-licenses:next --check", | ||
"license:generate": "docker run --rm -t -v ${PWD}/:/workspace/project quay.io/che-incubator/dash-licenses:next", | ||
"publish:next": "yarn publish --registry=https://registry.npmjs.org/ --no-git-tag-version --new-version 0.0.1-\"$(date +%s)\"" | ||
@@ -76,3 +78,3 @@ }, | ||
"collectCoverageFrom": [ | ||
"src/**/*.{ts,tsx}" | ||
"src/**/*.ts" | ||
], | ||
@@ -79,0 +81,0 @@ "coverageThreshold": { |
@@ -31,13 +31,15 @@ /********************************************************************** | ||
async generate(devfileContent: string, editorContent: string, outputFile: string): Promise<DevfileContext> { | ||
async generate(devfileContent: string, editorContent: string, outputFile?: string): Promise<DevfileContext> { | ||
const context = await this.generateContent(devfileContent, editorContent); | ||
// write the result | ||
// write templates and then DevWorkspace in a single file | ||
const allContentArray = context.devWorkspaceTemplates.map(template => jsYaml.dump(template)); | ||
allContentArray.push(jsYaml.dump(context.devWorkspace)); | ||
if (outputFile) { | ||
// write templates and then DevWorkspace in a single file | ||
const allContentArray = context.devWorkspaceTemplates.map(template => jsYaml.dump(template)); | ||
allContentArray.push(jsYaml.dump(context.devWorkspace)); | ||
const generatedContent = allContentArray.join('---\n'); | ||
const generatedContent = allContentArray.join('---\n'); | ||
await fs.writeFile(outputFile, generatedContent, 'utf-8'); | ||
await fs.writeFile(outputFile, generatedContent, 'utf-8'); | ||
} | ||
@@ -44,0 +46,0 @@ console.log(`DevWorkspace ${context.devWorkspaceTemplates[0].metadata.name} was generated.`); |
156
src/main.ts
@@ -23,54 +23,39 @@ /********************************************************************** | ||
export class Main { | ||
protected async doStart(): Promise<DevfileContext> { | ||
let devfilePath: string | undefined; | ||
let devfileUrl: string | undefined; | ||
let outputFile: string | undefined; | ||
let editorPath: string | undefined; | ||
let pluginRegistryUrl: string | undefined; | ||
let editorEntry: string | undefined; | ||
const projects: { name: string; location: string }[] = []; | ||
/** | ||
* Default constructor. | ||
*/ | ||
constructor() { | ||
// no-op | ||
} | ||
// Generates a devfile context object based on params | ||
public async generateDevfileContext( | ||
params: { | ||
devfilePath?: string; | ||
devfileUrl?: string; | ||
devfileContent?: string; | ||
outputFile?: string; | ||
editorPath?: string; | ||
editorContent?: string; | ||
editorEntry?: string; | ||
pluginRegistryUrl?: string; | ||
projects: { name: string; location: string }[]; | ||
}, | ||
axiosInstance: axios.AxiosInstance | ||
): Promise<DevfileContext> { | ||
if (!params.editorPath && !params.editorEntry && !params.editorContent) { | ||
throw new Error('missing editorPath or editorEntry or editorContent'); | ||
} | ||
if (!params.devfilePath && !params.devfileUrl && !params.devfileContent) { | ||
throw new Error('missing devfilePath or devfileUrl or devfileContent'); | ||
} | ||
const args = process.argv.slice(2); | ||
args.forEach(arg => { | ||
if (arg.startsWith('--devfile-path:')) { | ||
devfilePath = arg.substring('--devfile-path:'.length); | ||
} | ||
if (arg.startsWith('--devfile-url:')) { | ||
devfileUrl = arg.substring('--devfile-url:'.length); | ||
} | ||
if (arg.startsWith('--plugin-registry-url:')) { | ||
pluginRegistryUrl = arg.substring('--plugin-registry-url:'.length); | ||
} | ||
if (arg.startsWith('--editor-entry:')) { | ||
editorEntry = arg.substring('--editor-entry:'.length); | ||
} | ||
if (arg.startsWith('--editor-path:')) { | ||
editorPath = arg.substring('--editor-path:'.length); | ||
} | ||
if (arg.startsWith('--output-file:')) { | ||
outputFile = arg.substring('--output-file:'.length); | ||
} | ||
if (arg.startsWith('--project.')) { | ||
const name = arg.substring('--project.'.length, arg.indexOf('=')); | ||
let location = arg.substring(arg.indexOf('=') + 1); | ||
location = location.replace('{{_INTERNAL_URL_}}', '{{ INTERNAL_URL }}'); | ||
let pluginRegistryUrl: string; | ||
projects.push({ name, location }); | ||
} | ||
}); | ||
if (!editorPath && !editorEntry) { | ||
throw new Error('missing --editor-path: or --editor-entry: parameter'); | ||
} | ||
if (editorEntry && !pluginRegistryUrl) { | ||
if (params.pluginRegistryUrl) { | ||
pluginRegistryUrl = params.pluginRegistryUrl; | ||
} else { | ||
pluginRegistryUrl = 'https://eclipse-che.github.io/che-plugin-registry/main/v3'; | ||
console.log(`No plug-in registry url. Setting to ${pluginRegistryUrl}`); | ||
} | ||
if (!devfilePath && !devfileUrl) { | ||
throw new Error('missing --devfile-path: or --devfile-url: parameter'); | ||
} | ||
if (!outputFile) { | ||
throw new Error('missing --output-file: parameter'); | ||
} | ||
const axiosInstance = axios.default; | ||
const inversifyBinbding = new InversifyBinding(); | ||
@@ -87,5 +72,5 @@ const container = await inversifyBinbding.initBindings({ | ||
// gets the github URL | ||
if (devfileUrl) { | ||
if (params.devfileUrl) { | ||
const githubResolver = container.get(GithubResolver); | ||
const githubUrl = githubResolver.resolve(devfileUrl); | ||
const githubUrl = githubResolver.resolve(params.devfileUrl); | ||
// user devfile | ||
@@ -112,19 +97,23 @@ devfileContent = await container.get(UrlFetcher).fetchText(githubUrl.getContentUrl('devfile.yaml')); | ||
devfileContent = jsYaml.dump(devfileParsed); | ||
} else if (params.devfilePath) { | ||
devfileContent = await fs.readFile(params.devfilePath); | ||
} else { | ||
devfileContent = await fs.readFile(devfilePath); | ||
devfileContent = params.devfileContent; | ||
} | ||
// enhance projects | ||
devfileContent = this.replaceIfExistingProjects(devfileContent, projects); | ||
devfileContent = this.replaceIfExistingProjects(devfileContent, params.projects); | ||
if (editorEntry) { | ||
if (params.editorContent) { | ||
editorContent = params.editorContent; | ||
} else if (params.editorEntry) { | ||
// devfile of the editor | ||
const editorDevfile = await container.get(PluginRegistryResolver).loadDevfilePlugin(editorEntry); | ||
const editorDevfile = await container.get(PluginRegistryResolver).loadDevfilePlugin(params.editorEntry); | ||
editorContent = jsYaml.dump(editorDevfile); | ||
} else { | ||
editorContent = await fs.readFile(editorPath); | ||
editorContent = await fs.readFile(params.editorPath); | ||
} | ||
const generate = container.get(Generate); | ||
return generate.generate(devfileContent, editorContent, outputFile); | ||
return generate.generate(devfileContent, editorContent, params.outputFile); | ||
} | ||
@@ -160,4 +149,61 @@ | ||
async start(): Promise<boolean> { | ||
let devfilePath: string | undefined; | ||
let devfileUrl: string | undefined; | ||
let outputFile: string | undefined; | ||
let editorPath: string | undefined; | ||
let pluginRegistryUrl: string | undefined; | ||
let editorEntry: string | undefined; | ||
const projects: { name: string; location: string }[] = []; | ||
const args = process.argv.slice(2); | ||
args.forEach(arg => { | ||
if (arg.startsWith('--devfile-path:')) { | ||
devfilePath = arg.substring('--devfile-path:'.length); | ||
} | ||
if (arg.startsWith('--devfile-url:')) { | ||
devfileUrl = arg.substring('--devfile-url:'.length); | ||
} | ||
if (arg.startsWith('--plugin-registry-url:')) { | ||
pluginRegistryUrl = arg.substring('--plugin-registry-url:'.length); | ||
} | ||
if (arg.startsWith('--editor-entry:')) { | ||
editorEntry = arg.substring('--editor-entry:'.length); | ||
} | ||
if (arg.startsWith('--editor-path:')) { | ||
editorPath = arg.substring('--editor-path:'.length); | ||
} | ||
if (arg.startsWith('--output-file:')) { | ||
outputFile = arg.substring('--output-file:'.length); | ||
} | ||
if (arg.startsWith('--project.')) { | ||
const name = arg.substring('--project.'.length, arg.indexOf('=')); | ||
let location = arg.substring(arg.indexOf('=') + 1); | ||
location = location.replace('{{_INTERNAL_URL_}}', '{{ INTERNAL_URL }}'); | ||
projects.push({ name, location }); | ||
} | ||
}); | ||
try { | ||
await this.doStart(); | ||
if (!editorPath && !editorEntry) { | ||
throw new Error('missing --editor-path: or --editor-entry: parameter'); | ||
} | ||
if (!devfilePath && !devfileUrl) { | ||
throw new Error('missing --devfile-path: or --devfile-url: parameter'); | ||
} | ||
if (!outputFile) { | ||
throw new Error('missing --output-file: parameter'); | ||
} | ||
await this.generateDevfileContext( | ||
{ | ||
devfilePath, | ||
devfileUrl, | ||
editorPath, | ||
outputFile, | ||
pluginRegistryUrl, | ||
editorEntry, | ||
projects, | ||
}, | ||
axios.default | ||
); | ||
return true; | ||
@@ -164,0 +210,0 @@ } catch (error) { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Unidentified License
License(Experimental) Something that seems like a license was found, but its contents could not be matched with a known license.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No README
QualityPackage does not have a README. This may indicate a failed publish or a low quality package.
Found 1 instance in 1 package
111725
58
1947
1
29
6