the onishimemo

MacでAirDropで受け取ったものを即座にFTPアップロードする(gulp)

昨年イベントでタイトルの通りの仕組みが必要になったため、gulpで実装しました。結局使うことはなかったのですが、いつか使うかも?ということで自分用にメモしておきます。

AirDropの保存先を./origin/に指定し、キャッシュと照らし合わせて新しい画像であれば./upload/に移動させてアップロードする…という風になってます。

ちなみにftp-deployは新しめのNode.jsでないとエラーが出ます。

インストールするパッケージは、

  • gulp
  • gulp-load-plugin
  • util.promisify
  • gulp-cached(gulp4のデフォ機能でOKかも)
  • ftp-deploy

gulp4はこの時初めて触ったので書き方があまりよろしくないかもしれません。また確認します。

const gulp = require('gulp');
const $ = require('gulp-load-plugins');
const util = require('util');
require('util.promisify').shim();
const fs = require('fs');
const FtpDeploy = require('ftp-deploy');
const ftpDeploy = new FtpDeploy();
const config = {
  host: 'ホスト',
  user: 'ユーザー名',
  password: 'パスワード',
  port: 21,
  localRoot: __dirname + '/upload',
  remoteRoot: 'アップロードディレクトリ',
  include: ['*.jpg'],
  exclude: ['.DS_Store'],
  deleteRemote: false,
  forcePasv: true
};
gulp.task('deploy', (done) => {
  return gulp.src(`./origin/*.jpg`)
  .pipe($.cached('./upload/'))
  .pipe(gulp.dest('./upload/'));
  ftpDeploy.deploy(config, function(err, res) {
    (err)? console.log(err): console.log('finished');
  });
  done();
});
gulp.task('watch', function(){
  gulp.watch(`./origin/*.jpg`, gulp.task('deploy'));
});
gulp.task('default', gulp.task('watch'));
/