Skip to content

Commit

Permalink
Refactored watchers -> links
Browse files Browse the repository at this point in the history
  • Loading branch information
dutzi committed Jun 12, 2016
1 parent 94c28be commit 50ab9dc
Show file tree
Hide file tree
Showing 9 changed files with 85 additions and 85 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
node_modules
src/watchers.json
src/links.json
18 changes: 9 additions & 9 deletions src/cli/wml-cli-add.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
'use strict';
var watchers = require('../watchers.js');
var links = require('../links.js');
var path = require('path');
var untildify = require('untildify');

Expand All @@ -10,28 +10,28 @@ exports.describe = 'Adds a link';
exports.builder = {};

exports.handler = function (argv) {
watchers.load();
links.load();
var i,
src = path.resolve(untildify(argv.src)),
dest = path.resolve(untildify(argv.dest));

for (i in watchers.data) {
if (watchers.data[i].src === src) {
console.log('Error: a watcher with the same source already exists');
for (i in links.data) {
if (links.data[i].src === src) {
console.log('Error: a link with the same source already exists');
return;
}
}

i = 0;
while (watchers.data[i]) i++;
while (links.data[i]) i++;

watchers.data[i] = {
links.data[i] = {
src: src,
dest: dest,
enabled: true,
createdTime: new Date()
};

watchers.save();
console.log(`Added watcher: (${i}) ${src} -> ${dest}`);
links.save();
console.log(`Added link: (${i}) ${src} -> ${dest}`);
}
16 changes: 8 additions & 8 deletions src/cli/wml-cli-disable.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
'use strict';
var watchers = require('../watchers.js');
var links = require('../links.js');

exports.command = 'disable <linkId>';

Expand All @@ -8,14 +8,14 @@ exports.describe = 'Disables a link';
exports.builder = {};

exports.handler = function (argv) {
watchers.load();
links.load();

var watcher = watchers.data[argv.linkId]
if (watcher) {
watchers.data[argv.linkId].enabled = false;
console.log(`Disabled watcher: (${argv.linkId}) ${watcher.src} -> ${watcher.dest}`);
watchers.save();
var link = links.data[argv.linkId]
if (link) {
links.data[argv.linkId].enabled = false;
console.log(`Disabled link: (${argv.linkId}) ${link.src} -> ${link.dest}`);
links.save();
} else {
console.log(`Error: could not find watcher ${argv.linkId}`);
console.log(`Error: could not find link ${argv.linkId}`);
}
}
16 changes: 8 additions & 8 deletions src/cli/wml-cli-enable.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
'use strict';
var watchers = require('../watchers.js');
var links = require('../links.js');

exports.command = 'enable <linkId>';

Expand All @@ -8,14 +8,14 @@ exports.describe = 'Enables a link';
exports.builder = {};

exports.handler = function (argv) {
watchers.load();
links.load();

var watcher = watchers.data[argv.linkId]
if (watcher) {
watchers.data[argv.linkId].enabled = true;
console.log(`Enabled watcher: (${argv.linkId}) ${watcher.src} -> ${watcher.dest}`);
watchers.save();
var link = links.data[argv.linkId]
if (link) {
links.data[argv.linkId].enabled = true;
console.log(`Enabled link: (${argv.linkId}) ${link.src} -> ${link.dest}`);
links.save();
} else {
console.log(`Error: could not find watcher ${argv.linkId}`);
console.log(`Error: could not find link ${argv.linkId}`);
}
}
16 changes: 8 additions & 8 deletions src/cli/wml-cli-list.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict';
require('colors');
var watchers = require('../watchers.js');
var links = require('../links.js');

exports.command = 'list';

Expand All @@ -9,20 +9,20 @@ exports.describe = 'Lists all links';
exports.builder = {};

exports.handler = function () {
watchers.load();
links.load();

var found;

console.log('Watchers:');
console.log('links:');

for (var linkId in watchers.data) {
var watcher = watchers.data[linkId];
var status = watcher.enabled ? 'enabled'.green : 'disabled'.red;
console.log(`${status} (${linkId}) ${watcher.src} -> ${watcher.dest}`);
for (var linkId in links.data) {
var link = links.data[linkId];
var status = link.enabled ? 'enabled'.green : 'disabled'.red;
console.log(`${status} (${linkId}) ${link.src} -> ${link.dest}`);
found = true;
}

if (!found) {
console.log('(no watchers set)');
console.log('(no links set)');
}
}
16 changes: 8 additions & 8 deletions src/cli/wml-cli-rm.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
'use strict';
var watchers = require('../watchers.js');
var links = require('../links.js');

exports.command = 'rm <linkId>';

Expand All @@ -8,14 +8,14 @@ exports.describe = 'Removes a link';
exports.builder = {};

exports.handler = function (argv) {
watchers.load();
links.load();

var watcher = watchers.data[argv.linkId]
if (watcher) {
delete watchers.data[argv.linkId];
console.log(`Discarded watcher: (${argv.linkId}) ${watcher.src} -> ${watcher.dest}`);
watchers.save();
var link = links.data[argv.linkId]
if (link) {
delete links.data[argv.linkId];
console.log(`Discarded link: (${argv.linkId}) ${link.src} -> ${link.dest}`);
links.save();
} else {
console.log(`Error: could not find watcher ${argv.linkId}`);
console.log(`Error: could not find link ${argv.linkId}`);
}
}
42 changes: 21 additions & 21 deletions src/cli/wml-cli-start.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ var watchProject = require('../watchProject.js');
var getConfig = require('../getConfig.js');
var subscribe = require('../subscribe.js');
var watchman = require('fb-watchman');
var watchers = require('../watchers.js');
var links = require('../links.js');
var copyHandler = require('../handlers/copy.js');

exports.command = 'start';
Expand All @@ -18,39 +18,39 @@ exports.describe = 'Starts watching all links';

exports.builder = {};

function onWatchersChange(onChange, resp) {
function onLinksChange(onChange, resp) {
if (resp.subscription === 'mysubscription') {
var hasWatchersChanged = resp.files.some(function (file) {
return file.name === 'watchers.json'
var hasLinksChanged = resp.files.some(function (file) {
return file.name === 'links.json'
});

if (hasWatchersChanged) {
if (hasLinksChanged) {
onChange();
}
}
}

function watchForWatcherChanges(onChange) {
var watchersPath = path.resolve(__dirname, '../');
function watchForLinkChanges(onChange) {
var linksPath = path.resolve(__dirname, '../');
return subscribe({
client: new watchman.Client(),
watch: watchersPath,
src: watchersPath,
handler: onWatchersChange.bind(this, onChange)
watch: linksPath,
src: linksPath,
handler: onLinksChange.bind(this, onChange)
});
}

exports.handler = () => {
watchers.load();
links.load();

watchForWatcherChanges(() => {
watchForLinkChanges(() => {
console.log('change!');
});

for (var i in watchers.data) {
var watcher = watchers.data[i];
for (var i in links.data) {
var link = links.data[i];

if (watcher.enabled) {
if (link.enabled) {
var client = new watchman.Client(),
relativePath,
watch;
Expand All @@ -61,7 +61,7 @@ exports.handler = () => {

return watchProject({
client: client,
src: watcher.src
src: link.src
});

}).then((resp) => {
Expand All @@ -77,7 +77,7 @@ exports.handler = () => {

return getConfig({
client: client,
src: watcher.src
src: link.src
});

}).then((resp) => {
Expand All @@ -88,15 +88,15 @@ exports.handler = () => {
client: client,
watch: watch,
relativePath: relativePath,
src: watcher.src,
src: link.src,
handler: copyHandler({
src: watcher.src,
dest: watcher.dest
src: link.src,
dest: link.dest
})
});

}).then(() => {
console.log('[subscribe]'.green, watcher.src);
console.log('[subscribe]'.green, link.src);
}, (err) => {

client.end();
Expand Down
22 changes: 22 additions & 0 deletions src/links.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
'use strict';

var fs = require('fs-extra');
var path = require('path');

var linksPath = path.resolve(__dirname, 'links.json');

module.exports.load = function() {
var links;

try {
links = fs.readJsonSync(linksPath);
} catch (err) {
links = {};
}

module.exports.data = links;
};

module.exports.save = function() {
fs.outputJsonSync(linksPath, module.exports.data);
};
22 changes: 0 additions & 22 deletions src/watchers.js

This file was deleted.

0 comments on commit 50ab9dc

Please sign in to comment.