@hexonet/semantic-release-whmcs
Version:
`semantic-release` plugin for auto-publishing on WHMCS marketplace
44 lines (40 loc) • 1.32 kB
JavaScript
const filesInDirectory = (dir) =>
new Promise((resolve) =>
dir.createReader().readEntries((entries) =>
Promise.all(
entries
.filter((e) => e.name[0] !== ".")
.map((e) =>
e.isDirectory
? filesInDirectory(e)
: new Promise((resolve) => e.file(resolve))
)
)
.then((files) => [].concat(...files))
.then(resolve)
)
);
const timestampForFilesInDirectory = (dir) =>
filesInDirectory(dir).then((files) =>
files.map((f) => f.name + f.lastModifiedDate).join()
);
const watchChanges = (dir, lastTimestamp) => {
timestampForFilesInDirectory(dir).then((timestamp) => {
if (!lastTimestamp || lastTimestamp === timestamp) {
setTimeout(() => watchChanges(dir, timestamp), 1000); // retry after 1s
} else {
chrome.runtime.reload();
}
});
};
chrome.management.getSelf((self) => {
if (self.installType === "development") {
chrome.runtime.getPackageDirectoryEntry((dir) => watchChanges(dir));
chrome.tabs.query({ active: true, lastFocusedWindow: true }, (tabs) => {
// NB: see https://github.com/xpl/crx-hotreload/issues/5
// if (tabs[0] && !tabs[0].url.startsWith("http://localhost")) {
// chrome.tabs.reload (tabs[0].id)
// }
});
}
});