Skip to content

Commit

Permalink
Fixes #1033: Ensure frictionless errors in package and resource are c…
Browse files Browse the repository at this point in the history
…ommunicated to the user with at least a hint of the issue from frictionless error message.
  • Loading branch information
mattRedBox committed Jul 24, 2020
1 parent 4dd71d2 commit 14bcc26
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 3 deletions.
12 changes: 9 additions & 3 deletions src/renderer/frictionlessDataPackage.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import tabStore from '@/store/modules/tabs.js'
import hotStore from '@/store/modules/hots.js'
import path from 'path'
import { createJsonFile, createZipFile } from '@/exportPackage.js'
import { getValidNames, hasAllColumnNames } from '@/frictionlessUtilities.js'
import { getValidNames, hasAllColumnNames, addCauseToErrorMessage } from '@/frictionlessUtilities.js'
import _ from 'lodash'

export async function createDataPackageAsZippedResources () {
Expand Down Expand Up @@ -33,7 +33,10 @@ export async function createDataPackage (postCreateFunc) {
}
}
} catch (err) {
console.error('There was an error creating the data package.', err)
let errorMessage = 'There was an error creating the data package.'
let errorMessageAndCause = addCauseToErrorMessage(err, errorMessage)
errorMessages.push(errorMessageAndCause)
console.error(errorMessage, err)
}
return errorMessages
}
Expand Down Expand Up @@ -98,7 +101,10 @@ async function buildAllResourcesForDataPackage (dataPackage, errorMessages) {
resourcePaths.push(resource.descriptor.path)
dataPackage.addResource(resource.descriptor)
} catch (err) {
console.error('There was an error creating a resource.', err)
let errorMessage = 'There was an error creating a resource.'
let errorMessageAndCause = addCauseToErrorMessage(err, errorMessage)
errorMessages.push(errorMessageAndCause)
console.error(errorMessage, err)
break
}
}
Expand Down
15 changes: 15 additions & 0 deletions src/renderer/frictionlessUtilities.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import store from '@/store/modules/hots.js'
import { DEFAULT_DIALECT } from 'datapackage/lib/config.js'
import _ from 'lodash'

export function includeHeadersInData (hot) {
let allData = hot.getData()
Expand Down Expand Up @@ -44,3 +45,17 @@ export function isCaseSensitive (hotId) {
}
return caseSensitiveHeader
}

export function addCauseToErrorMessage (err, errorMessage) {
let extraErrorMessage = _.trim(_.get(err, 'message', ''))
if (_.isEmpty(extraErrorMessage)) {
if (_.isArray(err) && !_.isEmpty(err)) {
extraErrorMessage = _.trim(_.get(err[0], 'message', ''))
}
}
if (!_.isEmpty(extraErrorMessage)) {
errorMessage = `${errorMessage}\n (${extraErrorMessage})`
}
console.error(errorMessage, err)
return errorMessage
}

0 comments on commit 14bcc26

Please sign in to comment.