Permalink
Browse files

Change dir replacement to dirname and add basename

  • Loading branch information...
1 parent d2305c6 commit 0687858451c6d584a9f880ed128fc1821aedefec @chbrown committed Aug 26, 2012
Showing with 19 additions and 8 deletions.
  1. +14 −7 README.md
  2. +5 −1 less-watch
View
@@ -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
View
@@ -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) {

0 comments on commit 0687858

Please sign in to comment.