From 14780d2307bac8cd0cf51faf447c70b402440123 Mon Sep 17 00:00:00 2001 From: Daniel Caldeweyher Date: Thu, 16 Apr 2020 13:55:18 +1000 Subject: [PATCH 1/3] replaced id with gid due to Asana api change --- index.js | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/index.js b/index.js index 6ae6fb7..81dd5df 100644 --- a/index.js +++ b/index.js @@ -255,11 +255,11 @@ fs.readJson(opts.config).then(function (config) { return project.name === file.name; }); - promise = client.tasks.findByProject(projectData.id).then(fetch).then(tasks => { + promise = client.tasks.findByProject(projectData.gid).then(fetch).then(tasks => { console.log(`Loaded exists ${tasks.length} tasks.`); asanaData.tasks = tasks; - return client.sections.findByProject(projectData.id); + return client.sections.findByProject(projectData.gid); }).then(sections => { console.log(`Loaded exists ${sections.length} sections.`); asanaData.sections = sections; @@ -270,7 +270,7 @@ fs.readJson(opts.config).then(function (config) { notes: file.desc, layout: 'board' }).then(result => { - console.log(`Created ${result.name} project in your team.`); + console.log(`Created ${result.name} project in your team. ${JSON.stringify(result)}`); projectData = result; asanaData.projects.push(result); }); @@ -283,7 +283,7 @@ fs.readJson(opts.config).then(function (config) { }); if (matchedSection) { - listToSectionMap[list.id] = matchedSection.id; + listToSectionMap[list.id] = matchedSection.gid; return false; } else { return true; @@ -292,10 +292,11 @@ fs.readJson(opts.config).then(function (config) { // Creates sections in order return Promise.mapSeries(filteredList, list => { - return client.sections.createInProject(projectData.id, { + console.log(`create sections`); + return client.sections.createInProject(projectData.gid, { name: list.name }).then(result => { - listToSectionMap[list.id] = result.id; + listToSectionMap[list.id] = result.gid; console.log(`Created ${list.name} section.`); }); }); @@ -348,6 +349,8 @@ fs.readJson(opts.config).then(function (config) { // Creates tasks return Promise.mapSeries(filteredCards, card => { + console.log(`creating task for card ${JSON.stringify(card)}...`); + return client.tasks.create({ assignee: card.idMembers.length ? convertMap(_.first(card.idMembers), config.member) : null, due_at: card.due, @@ -355,11 +358,11 @@ fs.readJson(opts.config).then(function (config) { name: card.name, notes: card.desc, memberships: [{ - project: projectData.id, + project: projectData.gid, section: convertMap(card.idList, listToSectionMap) }], tags: card.idLabels.length ? convertMap(card.idLabels, labelToTagMap) : [], - projects: [ projectData.id ] + projects: [ projectData.gid ] }).then(result => { var promises = []; var taskData = result; @@ -374,12 +377,12 @@ fs.readJson(opts.config).then(function (config) { promises.push( Promise.mapSeries(convertMap(card.idChecklists.reverse(), checklistMap), checklist => { return Promise.mapSeries(checklist.checkItems.reverse(), item => { - return client.tasks.addSubtask(taskData.id, { + return client.tasks.addSubtask(taskData.gid, { name: item.name, completed: item.state !== 'incomplete' }); }).then(function () { - return client.tasks.addSubtask(taskData.id, { + return client.tasks.addSubtask(taskData.gid, { name: `${checklist.name}:` }); }); @@ -388,6 +391,7 @@ fs.readJson(opts.config).then(function (config) { } if (parseInt(card.badges.comments, 10) > 0) { + console.log(`getting trello card actions for card ${card.id}`); promises.push( // Trello export has limitation for count of actions as 1000. so we need to request directly trello API. trello.getAsync(`/1/cards/${card.id}/actions?limit=1000`).then(result => { @@ -402,7 +406,7 @@ fs.readJson(opts.config).then(function (config) { text = `${memberName}: ${text} from Trello`; - return client.tasks.addComment(taskData.id, { + return client.tasks.addComment(taskData.gid, { text: text }); }); @@ -414,7 +418,7 @@ fs.readJson(opts.config).then(function (config) { promises.push( Promise.mapSeries(card.attachments, attachment => { return fetchImage(attachment.url).then(image => { - return uploadImageToAsana(taskData.id, image, path.basename(attachment.url)); + return uploadImageToAsana(taskData.gid, image, path.basename(attachment.url)); }).catch(reason => { console.log('Failed to upload attachment', reason); }); From 4b925452da99300a070bfd599696975651fe2e66 Mon Sep 17 00:00:00 2001 From: Daniel Caldeweyher Date: Thu, 16 Apr 2020 14:04:56 +1000 Subject: [PATCH 2/3] logging --- index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 81dd5df..f2e2282 100644 --- a/index.js +++ b/index.js @@ -270,7 +270,7 @@ fs.readJson(opts.config).then(function (config) { notes: file.desc, layout: 'board' }).then(result => { - console.log(`Created ${result.name} project in your team. ${JSON.stringify(result)}`); + console.log(`Created ${result.name} project in your team.`); projectData = result; asanaData.projects.push(result); }); @@ -391,7 +391,7 @@ fs.readJson(opts.config).then(function (config) { } if (parseInt(card.badges.comments, 10) > 0) { - console.log(`getting trello card actions for card ${card.id}`); + console.log(`getting trello card actions for card ${card.id}`); promises.push( // Trello export has limitation for count of actions as 1000. so we need to request directly trello API. trello.getAsync(`/1/cards/${card.id}/actions?limit=1000`).then(result => { From 739314ccce1c822a9d191c0648c30221de0277e2 Mon Sep 17 00:00:00 2001 From: Daniel Caldeweyher Date: Thu, 16 Apr 2020 15:01:20 +1000 Subject: [PATCH 3/3] fixed tags --- index.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/index.js b/index.js index f2e2282..0c6444e 100644 --- a/index.js +++ b/index.js @@ -292,7 +292,6 @@ fs.readJson(opts.config).then(function (config) { // Creates sections in order return Promise.mapSeries(filteredList, list => { - console.log(`create sections`); return client.sections.createInProject(projectData.gid, { name: list.name }).then(result => { @@ -308,7 +307,7 @@ fs.readJson(opts.config).then(function (config) { }); if (matchedTag) { - labelToTagMap[label.id] = matchedTag.id; + labelToTagMap[label.id] = matchedTag.gid; return false; } else { return true; @@ -324,9 +323,9 @@ fs.readJson(opts.config).then(function (config) { color: LABEL_COLOR[label.color], notes: 'Created by Trello' }).then(result => { - labelToTagMap[label.id] = result.id; + labelToTagMap[label.id] = result.gid; asanaData.tags.push(result); - console.log(`Created ${result.name}(${result.id}) tag.`); + console.log(`Created ${result.name}(${result.gid}) tag.`); }); }, { concurrency: 3 @@ -338,7 +337,7 @@ fs.readJson(opts.config).then(function (config) { }); if (matchedTask) { - cardToTaskMap[card.id] = matchedTask.id + cardToTaskMap[card.id] = matchedTask.gid return false; } else { return true; @@ -348,9 +347,7 @@ fs.readJson(opts.config).then(function (config) { console.log(`Creating ${filteredCards.length} of ${file.cards.length} tasks...`); // Creates tasks - return Promise.mapSeries(filteredCards, card => { - console.log(`creating task for card ${JSON.stringify(card)}...`); - + return Promise.mapSeries(filteredCards, card => { return client.tasks.create({ assignee: card.idMembers.length ? convertMap(_.first(card.idMembers), config.member) : null, due_at: card.due,