atinux / node-ftps

FTP, FTPS and SFTP client for node.js, mainly a lftp wrapper.
MIT License
202 stars 57 forks source link

async/await #50

Open nine-2-five opened 7 years ago

nine-2-five commented 7 years ago

Is this library compatible with async/await?

I tried this:

var result = await ftps.mirror({
        remoteDir: remote_path, // + '/.',
        localDir: commit_dir + '/' + commit_diffs.commit + '/.',
        //parallel: true,
        upload: true,
        //filter: '/.**/',
    }).exec()

and got this: Error: Callback is missing to exec() function.

cjnqt commented 7 years ago

async/await works with functions that returns a Promise. So to make this work, you gotta make ftps.mirror().exec() return a promise.

SkullMasher commented 1 year ago

async/await works with functions that returns a Promise. So to make this work, you gotta make ftps.mirror().exec() return a promise.

Just in case people wants the gist of making this module works with async/await here's what I did. Sorry for necroposting.

const mirrorFTP = new Promise((resolve, reject) => {
  return ftps.mirror({
    remoteDir: remote_path, // + '/.',
    localDir: commit_dir + '/' + commit_diffs.commit + '/.',
    //parallel: true,
    upload: true,
    //filter: '/.**/',
  }).exec((err, res) => {
    if (res.error) { reject(`❌ FTP sync error: ${res.error}`) }
    resolve(`✔️ FTP Mirroring done`)
  })
})

try {
  const result = await mirrorFTP
  console.log(result)
} catch (e) {
  console.error(e)
}