diff --git a/README.md b/README.md index a7773df..0fe1696 100644 --- a/README.md +++ b/README.md @@ -6,22 +6,29 @@ some specified action in response. Settings are stored in `~/.less-watch` If some file does not exist, the script will continue to try the other files, -and retry any inaccessible file every 60 seconds. This is +and retry any inaccessible file every 60 seconds. I do a lot of development on +remote servers, so the files are only accessible when I have sshfs connected, +but I don't want to have to run something to tell my LESS compiler that it +should retry the filepath in question. + +(This particular feature is not actually in 0.0.1, by the way. It's planned.) ## `~/.less-watch` format -Each line has a file on the left of a colon, and a command on the right. +Each line has a glob (or simple file) on the left of a colon, and a command on +the right. The command on the right will have the following keywords available: -- {file}, the fullpath of the matching file (usually just the file to the left - of the colon) -- {dir}, the directory containing {file} +- {file}, the fullpath of the matching file (usually just the string to the left + of the colon). +- {basename}, the shortname of {file}, without path or extension. +- {dirname}, the directory containing {file}. ## `~/.less-watch` example -/Users/chbrown/work/mailmaster/static/css/site.less: cd {dir} && lessc -C site.less site.css -/Volumes/sshfs_drive/app4/static/master.less: cd {dir} && lessc -C master.less master.css +/Users/chbrown/work/mailmaster/static/css/site.less: cd {dirname} && lessc -C site.less site.css +/Volumes/sshfs_drive/app4/static/*.less: cd {dirname} && lessc -C {basename}.less {basename}.css ## License diff --git a/less-watch b/less-watch index c4b7a26..5795b05 100755 --- a/less-watch +++ b/less-watch @@ -38,7 +38,11 @@ function watch(globpath, action) { // for single files, filepaths will just be one file: the exact match filepaths.forEach(function(filepath) { // for each file, decide on its command - var command = action.replace(/\{file\}/g, filepath).replace(/\{dir\}/g, path.dirname(filepath)); + var ext = filepath.match(/(\.\w+)?$/)[1], + command = action. + replace(/\{file\}/g, filepath). + replace(/\{basename\}/g, path.basename(filepath, ext)). + replace(/\{dirname\}/g, path.dirname(filepath)); // save the filepath so that we can unwatch it easily when reloading, and start the watch watched_filepaths.push(filepath); fs.watchFile(filepath, {interval: 250}, function(curr, prev) {