|
|
@ -1,5 +1,6 @@ |
|
|
|
import fs from 'fs'; |
|
|
|
import fs from 'fs'; |
|
|
|
import path from 'path'; |
|
|
|
import path from 'path'; |
|
|
|
|
|
|
|
import { promisify } from 'util'; |
|
|
|
|
|
|
|
|
|
|
|
import mkdirp from 'mkdirp'; |
|
|
|
import mkdirp from 'mkdirp'; |
|
|
|
|
|
|
|
|
|
|
@ -8,16 +9,20 @@ import NcConfigFactory from '../../../../utils/NcConfigFactory'; |
|
|
|
|
|
|
|
|
|
|
|
import axios from 'axios'; |
|
|
|
import axios from 'axios'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const writeFileAsync = promisify(fs.writeFile) |
|
|
|
|
|
|
|
const readFileAsync = promisify(fs.readFile) |
|
|
|
|
|
|
|
const unlinkAsync = promisify(fs.unlink) |
|
|
|
|
|
|
|
|
|
|
|
export default class Local implements IStorageAdapterV2 { |
|
|
|
export default class Local implements IStorageAdapterV2 { |
|
|
|
constructor() {} |
|
|
|
constructor() {} |
|
|
|
|
|
|
|
|
|
|
|
public async fileCreate(key: string, file: XcFile): Promise<any> { |
|
|
|
public async fileCreate(key: string, file: XcFile): Promise<any> { |
|
|
|
const destPath = path.join(NcConfigFactory.getToolDir(), ...key.split('/')); |
|
|
|
const destPath = path.join(NcConfigFactory.getToolDir(), ...key.split('/')); |
|
|
|
try { |
|
|
|
try { |
|
|
|
mkdirp.sync(path.dirname(destPath)); |
|
|
|
await mkdirp(path.dirname(destPath)); |
|
|
|
const data = await fs.readFileSync(file.path); |
|
|
|
const data = await readFileAsync(file.path) |
|
|
|
await fs.writeFileSync(destPath, data); |
|
|
|
await writeFileAsync(destPath, data); |
|
|
|
fs.unlinkSync(file.path); |
|
|
|
await unlinkAsync(file.path); |
|
|
|
// await fs.promises.rename(file.path, destPath);
|
|
|
|
// await fs.promises.rename(file.path, destPath);
|
|
|
|
} catch (e) { |
|
|
|
} catch (e) { |
|
|
|
throw e; |
|
|
|
throw e; |
|
|
@ -41,8 +46,8 @@ export default class Local implements IStorageAdapterV2 { |
|
|
|
origin: 'https://www.airtable.com/', |
|
|
|
origin: 'https://www.airtable.com/', |
|
|
|
}, |
|
|
|
}, |
|
|
|
}) |
|
|
|
}) |
|
|
|
.then((response) => { |
|
|
|
.then(async (response) => { |
|
|
|
mkdirp.sync(path.dirname(destPath)); |
|
|
|
await mkdirp(path.dirname(destPath)); |
|
|
|
const file = fs.createWriteStream(destPath); |
|
|
|
const file = fs.createWriteStream(destPath); |
|
|
|
// close() is async, call cb after close completes
|
|
|
|
// close() is async, call cb after close completes
|
|
|
|
file.on('finish', () => { |
|
|
|
file.on('finish', () => { |
|
|
|