crownpeak-dxm-vuejs-sdk
Advanced tools
Comparing version 1.0.0 to 1.0.1
@@ -30,6 +30,17 @@ const CrownpeakApi = require("crownpeak-dxm-accessapi-helper"); | ||
const createFile = async (name, folderId, templateId, workflowId) => { | ||
const request = new crownpeak.Asset.CreateRequest(name, folderId, 0, 2, -1, templateId, workflowId, 0); | ||
const request = new crownpeak.Asset.CreateRequest(name, folderId, 0, 2, templateId > 0 ? -1 : 1, templateId, workflowId, 0); | ||
return crownpeak.Asset.create(request); | ||
}; | ||
const createOrUpdateDeveloperCsFile = async (name, folderId, workflowId, content) => { | ||
let path = await getPath(folderId); | ||
let result = await exists(path + name); | ||
let assetId = result.assetId; | ||
if (!result.exists) { | ||
// No asset exists, so create one | ||
assetId = (await createFile(name, folderId, 0, workflowId)).asset.id; | ||
} | ||
return update(assetId, content); | ||
}; | ||
const createOrUpdateFile = async (name, folderId, modelId, content) => { | ||
@@ -209,3 +220,3 @@ let path = await getPath(folderId); | ||
const template = templates[i]; | ||
let result = await createOrUpdateTemplate(template.name, template.content, wrapperName); | ||
let result = await createOrUpdateTemplate(template.name, template.content, template.wrapper || wrapperName); | ||
template.assetId = result.asset.id; | ||
@@ -257,3 +268,3 @@ template.assetPath = await getPath(template.assetId); | ||
let upload = uploads[i]; | ||
if (!fs.existsSync(upload.source)) { | ||
if (!upload.content && !fs.existsSync(upload.source)) { | ||
console.warn(`Unable to find source file [${upload.source}] for upload`); | ||
@@ -266,3 +277,12 @@ continue; | ||
} else { | ||
const uploadedFile = await uploadFile(upload.name, folder.asset.id, -1, upload.source, -1); | ||
let uploadedFile; | ||
if (upload.content) { | ||
uploadedFile = await createOrUpdateDeveloperCsFile(upload.name, folder.asset.id, -1, { body: upload.content }); | ||
if (!uploadedFile.asset.fullPath) { | ||
uploadedFile.asset.fullPath = await getPath(uploadedFile.asset.id); | ||
} | ||
} else { | ||
uploadedFile = await uploadFile(upload.name, folder.asset.id, -1, upload.source, -1); | ||
} | ||
upload.assetId = uploadedFile.asset.id; | ||
@@ -269,0 +289,0 @@ upload.assetPath = uploadedFile.asset.fullPath; |
@@ -8,3 +8,3 @@ #!/usr/bin/env node | ||
const main = () => { | ||
const cwd = process.env.INIT_CWD; | ||
const cwd = process.env.INIT_CWD || require('path').resolve('.'); | ||
let config = process.env; | ||
@@ -26,3 +26,3 @@ // Merge in any environment changes they provided | ||
let components = [], pages = [], wrappers = [], uploads = []; | ||
const htmlfiles = files.getRecursive(process.env.INIT_CWD, "html"); | ||
const htmlfiles = files.getRecursive(cwd, "html"); | ||
for (let f in htmlfiles) { | ||
@@ -40,3 +40,6 @@ //console.log(`Processing ${htmlfiles[f]}`); | ||
} | ||
const vueFiles = files.getRecursive(process.env.INIT_CWD, "vue"); | ||
if (uploads && uploads.length) { | ||
uploads = removeDuplicateUploads(uploads); | ||
} | ||
const vueFiles = files.getRecursive(cwd, "vue"); | ||
for (let f in vueFiles) { | ||
@@ -56,13 +59,21 @@ //console.log(`Processing ${vueFiles[f]}`); | ||
// console.log(`Components: ${components.map(c => c.name)}`); | ||
// console.log(`Pages: ${pages.map(p => p.name)}`); | ||
// console.log(`Wrappers: ${wrappers.map(w => w.name)}`); | ||
// console.log(`Uploads: ${uploads.map(u => u.name)}`); | ||
const noop = () => {}; | ||
const noComponents = _args.findIndex(a => a.toLowerCase() === "--nocomponents") > -1; | ||
const noPages = _args.findIndex(a => a.toLowerCase() === "--nopages") > -1; | ||
const noWrappers = _args.findIndex(a => a.toLowerCase() === "--nowrappers") > -1; | ||
const noUploads = _args.findIndex(a => a.toLowerCase() === "--nouploads") > -1; | ||
cms.login() | ||
.then(() => cms.saveUploads(uploads)) //.then((result) => console.log(JSON.stringify(result)))) | ||
.then(() => cms.saveWrappers(wrappers)) //.then((result) => console.log(JSON.stringify(result)))) | ||
.then(() => cms.saveComponents(components)) //.then((result) => console.log(JSON.stringify(result)))) | ||
.then(() => cms.saveTemplates(pages, wrappers.length > 0 ? wrappers[0].name : "")) //.then((result) => console.log(JSON.stringify(result)))) | ||
; | ||
if (_args.findIndex(a => a.toLowerCase() === "--dry-run") > -1) { | ||
noComponents ? noop : console.log(`Components: ${components.map(c => c.name)}`); | ||
noPages ? noop : console.log(`Pages: ${pages.map(p => p.name)}`); | ||
noWrappers ? noop : console.log(`Wrappers: ${wrappers.map(w => w.name)}`); | ||
noUploads ? noop : console.log(`Uploads: ${uploads.map(u => u.name)}`); | ||
} else { | ||
cms.login() | ||
.then(() => noUploads ? noop : cms.saveUploads(uploads)) //.then((result) => console.log(JSON.stringify(result)))) | ||
.then(() => noWrappers ? noop : cms.saveWrappers(wrappers)) //.then((result) => console.log(JSON.stringify(result)))) | ||
.then(() => noComponents ? noop : cms.saveComponents(components)) //.then((result) => console.log(JSON.stringify(result)))) | ||
.then(() => noPages ? noop : cms.saveTemplates(pages, wrappers.length > 0 ? wrappers[0].name : "")) //.then((result) => console.log(JSON.stringify(result)))) | ||
; | ||
} | ||
}; | ||
@@ -104,2 +115,9 @@ | ||
const removeDuplicateUploads = (uploads) => { | ||
var seen = {}; | ||
return uploads.filter(function(item) { | ||
return seen.hasOwnProperty(item.source) ? false : (seen[item.source] = true); | ||
}); | ||
} | ||
const validateInput = (config) => { | ||
@@ -106,0 +124,0 @@ let ok = true; |
@@ -49,6 +49,6 @@ const babelParser = require("@babel/parser"); | ||
const data = processCmsPage(content, ast, name, part.declaration, imports); | ||
if (data) { | ||
const result = processCmsPageTemplate(content, name, template, data, imports); | ||
if (data && data.components) { | ||
const result = processCmsPageTemplate(content, name, template, data.components, imports); | ||
if (result) { | ||
results.push({name: name, content: finalProcessMarkup(result)}); | ||
results.push({name: name, content: finalProcessMarkup(result), wrapper: data.wrapper}); | ||
} | ||
@@ -139,3 +139,8 @@ } | ||
} | ||
return results; | ||
let wrapper = declaration.properties.find(p => p.type === "ObjectProperty" && p.key.name === "cmsWrapper"); | ||
if (wrapper) { | ||
//console.log(`Found reference to wrapper [${wrapper}]`); | ||
wrapper = wrapper.value.value; | ||
} | ||
return {components: results, wrapper: wrapper}; | ||
}; | ||
@@ -142,0 +147,0 @@ |
@@ -0,2 +1,4 @@ | ||
const fs = require("fs"); | ||
const path = require('path'); | ||
const cssParser = require("./css"); | ||
@@ -68,7 +70,19 @@ const reSignature = new RegExp("<([a-z:0-9]+).*?data-cms-wrapper-name\\s*=\\s*[\"']([^\"']+)[\"'](?:.|\\r|\\n)*?<\\/\\1>", "im"); | ||
const filename = path.basename(matches[2]); | ||
let replacement = `<%= Asset.Load(Asset.GetSiteRoot(asset).AssetPath + \"/_Assets/css/${filename}\").GetLink() %>`; | ||
let replacement = `<%= Asset.Load(Asset.GetSiteRoot(asset).AssetPath + \"/_Assets/css/${filename}\").GetLink(LinkType.Include) %>`; | ||
if (!matches[1]) replacement = `\"${replacement}\"`; | ||
//console.log(`Replacement is ${replacement}`); | ||
result = result.replace(matches[2], replacement) | ||
uploads.push({source: path.join(folder, matches[2]), name: filename, destination: "_Assets/css/"}); | ||
const filepath = path.join(folder, matches[2]); | ||
if (fs.existsSync(filepath)) { | ||
const result = cssParser.parse(filepath, fs.readFileSync(filepath, "utf8"), folder); | ||
if (result.content && result.uploads && result.uploads.length) { | ||
uploads.push({source: filepath, name: filename, destination: "_Assets/css/", content: result.content}); | ||
uploads = uploads.concat(result.uploads); | ||
} else { | ||
uploads.push({source: filepath, name: filename, destination: "_Assets/css/"}); | ||
} | ||
} else { | ||
uploads.push({source: filepath, name: filename, destination: "_Assets/css/"}); | ||
} | ||
} | ||
@@ -75,0 +89,0 @@ } |
{ | ||
"name": "crownpeak-dxm-vuejs-sdk", | ||
"version": "1.0.0", | ||
"version": "1.0.1", | ||
"description": "Crownpeak Digital Experience Management (DXM) Software Development Kit (SDK) for Vue.js has been constructed to assist the Single Page App developer in developing client-side applications that leverage DXM for content management purposes.", | ||
@@ -11,3 +11,3 @@ "repository": "https://github.com/Crownpeak/DXM-VueJS-SDK", | ||
"crownpeak-dxm-accessapi-helper": "^1.0.2", | ||
"crownpeak-dxm-sdk-core": "^0.1.1", | ||
"crownpeak-dxm-sdk-core": "^0.1.2", | ||
"dotenv": "^8.2.0", | ||
@@ -14,0 +14,0 @@ "vue": "^2.6.11" |
@@ -44,2 +44,3 @@ <a href="https://www.crownpeak.com" target="_blank">![Crownpeak Logo](https://github.com/Crownpeak/DXM-VueJS-SDK/raw/master/images/crownpeak-logo.png?raw=true "Crownpeak Logo")</a> | ||
| ------------- | --------------|----------------------------------- | | ||
| 1.0.0 | 2020MAY12 | Initial Release. | | ||
| 1.0.0 | 2020MAY12 | Initial Release. | | ||
| 1.0.1 | 2020JUN03 | Updated crownpeak-dxm-sdk-core version. Added command line parameters. Bug fixes. | |
51071
16
1023
45