diff --git a/src/sink-gdoc.js b/src/sink-gdoc.js index 867920a..f90aa4b 100755 --- a/src/sink-gdoc.js +++ b/src/sink-gdoc.js @@ -10,7 +10,7 @@ import { program } from "commander/esm.mjs"; import { load_config, success, get_auth } from "./_utils.js"; import { drive } from "@googleapis/drive"; -import { writeFileSync } from "fs"; +import { existsSync, mkdirSync, writeFileSync } from "fs"; import { decode } from "html-entities"; import archieml from "archieml"; @@ -105,20 +105,23 @@ const parse = (file) => { }); }; -export const fetchDoc = ({ id, output, auth }) => { - const authObject = get_auth(auth, ["https://www.googleapis.com/auth/drive"]) +export const fetchDoc = async ({ id, output, auth }) => { + const scopes = ["https://www.googleapis.com/auth/drive"]; + const authObject = get_auth(auth, scopes); + const gdrive = drive({ version: "v3", auth: authObject }); - gdrive.files - .export({ fileId: id, mimeType: "text/html" }) - .then(parse) - .then((res) => writeFileSync(output, JSON.stringify(res))) - .then(() => success(`Wrote output to ${output}`)) - .catch(console.error); + + const file = await gdrive.files.export({ fileId: id, mimeType: "text/html" }); + const json = await parse(file); + + const dir = output.substring(0, output.lastIndexOf("/")); + !existsSync((dir.length > 0) ? dir : ".") && mkdirSync(dir, { recursive: true }); + writeFileSync(output, JSON.stringify(json)); + success(`Wrote output to ${output}`); }; const main = async (opts) => { const { config } = await load_config(opts.config); - const files = config.fetch.filter((d) => d.sheetId == null); files.forEach(fetchDoc); }; diff --git a/src/sink-gsheet.js b/src/sink-gsheet.js index 83f6890..c7b0180 100755 --- a/src/sink-gsheet.js +++ b/src/sink-gsheet.js @@ -23,8 +23,7 @@ const parse = (res) => { export const fetchSheet = async ({ id, sheetId, output, auth }) => { const scopes = ["https://www.googleapis.com/auth/spreadsheets"]; - const authObject = get_auth(auth, scopes) - + const authObject = get_auth(auth, scopes); const sheet = sheets({ version: "v4", auth: authObject }); const gidQ = await sheet.spreadsheets.getByDataFilter({ @@ -41,7 +40,7 @@ export const fetchSheet = async ({ id, sheetId, output, auth }) => { const csv = parse(nameQ); const dir = output.substring(0, output.lastIndexOf("/")); - !existsSync(dir) && mkdirSync(dir, { recursive: true }); + !existsSync((dir.length > 0) ? dir : ".") && mkdirSync(dir, { recursive: true }); writeFileSync(output, csv); success(`Wrote output to ${output}`); };