UpFtpをMacとLinuxとで共用する方法
UpFtpと言うのは、結城浩さんの作られたMakeWebと併せて使うためのFTP自動化ツールのことです。
これらのツールを使えば、MakeWeb記法(Markdown記法のような書式)で書いた、index.txtをMakeWebでコンパイルしてindex.htmlを生成させ、UpFtpでサーバーに送って更新する…という手順を下記のように makefileに書き、make -k
するだけで自動処理されます。
makefile
target = index.html
a.out:all
all: $(target)
.SUFFIXES: .txt .html
.txt.html:
perl ~/Dropbox/Web/GH/mw/makeweb.pl $< $@ # index.txt to index.html
perl ~/Dropbox/Web/GH/upftp/upftp.pl
異なる環境でデータを共有するのはDropboxが便利
Dropboxは、Windows/Linux/macOSとマルチ環境で使えるので、WEB構築の元データを複数端末で共有するのには一番適している。同期速度などの点でも他のクラウドと比較して一番早い。
ぼくの場合は、どの環境もユーザーフォルダの直下にDropboxをインストールしているので、以下のようPATH構成になる。
- Windows
C:\Users/minoru/Dropbox
- Lnux
/home/minoru/Dropbox
- Mac
/Users/minoru/Dropbox
Makefileの場合は、~/Dropboxと書くことで認識してくれるので容易に共用設定が書けるが、UpFtpの設定ファイルの場合は、以下のようにフルパスを書く必要があるので工夫が必要となる。
# Local root directory (in fullpath)
my $localrootdir = "";
# File list (in fullpath)
my $filelist = "";
ユーザフォルダーを変数で取得
フルパスを直書きするとマルチ環境で共用できないので、変数を取得してそれを共通で使えるようにします。
Mac/Linuxの場合
MacもLinuxも同じUNIXなので以下の方法でユーザーフォルダのPATHを取得できる。
$home = $ENV{"HOME"}
$home = %USERPROFILE%
Mac/Linux共用の設定
私の場合は、以下のように書くことでうまく動いている。
# Get HOME directory from environment variables
my $home = $ENV{"HOME"};
# Local root directory (in fullpath)
my $localrootdir = "$home/Dropbox/Web/GH";
# File list (in fullpath)
my $filelist = "$home/Dropbox/Web/GH/upftp/filelist.txt";
Windows/Mac(Linux)共用の設定
ここからは確認できていないので無責任になるけれども、OSを判別する特殊変数を使って分岐させる必要がある。