Skip to content

Commit

Permalink
Ripped out local-crontab to its own package
Browse files Browse the repository at this point in the history
  • Loading branch information
dschep committed Mar 19, 2018
1 parent e3684bf commit 7e6dc11
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 135 deletions.
130 changes: 0 additions & 130 deletions cron.js

This file was deleted.

57 changes: 56 additions & 1 deletion index.js
@@ -1,4 +1,59 @@
const {convertAwsLocalCrontabToAwsUtcCrontab} = require('./cron.js');
const {localCrontabToUtcCrontabs} = require('local-crontab');


/**
* Convert an AWS CloudWatch crontab to a standard crontab.
*
* Main differences are:
* * A year field
* * ? instead of * sometimes
* * Some others.. implementation TBD
*
* The data that is removed is returned as well so that it can be used to
* roundtrip back to an AWS CloudWatch crontab
*
*/
const convertAwsToStandardCrontab = (awsCrontab) => {
const crontabParts = awsCrontab.split(/\s+/);

// standard crontabs don't have a year
const year = crontabParts.pop();

// replace ? with *, but remember where they were
const questionParts = [];
for (const i in crontabParts) {
if (crontabParts[i] === '?') {
questionParts.push(i);
crontabParts[i] = '*';
}
}

return {
crontab: crontabParts.join(' '),
awsSpecificDetails: {
year,
questionParts,
},
};
};


const convertStandardCrontabToAws = ({crontab, awsSpecificDetails}) => {
const parts = crontab.split(/\s+/);
for (const questionPart of awsSpecificDetails.questionParts) {
parts[questionPart] = parts[questionPart].replace(/\*/, '?');
}
parts.push(awsSpecificDetails.year);
return parts.join(' ');
};


const convertAwsLocalCrontabToAwsUtcCrontab = (localCrontab, timezone) => {
const {crontab, awsSpecificDetails} = convertAwsToStandardCrontab(localCrontab);
const utcCrontabs = localCrontabToUtcCrontabs(crontab, timezone);
return utcCrontabs.map((crontab) => convertStandardCrontabToAws({crontab, awsSpecificDetails}))
};


function convertCrontabs() {
for (const funcName in this.serverless.service.functions) {
Expand Down
5 changes: 1 addition & 4 deletions package.json
Expand Up @@ -25,9 +25,6 @@
},
"homepage": "https://github.com/unitedincome.com/serverless-local-schedule#readme",
"dependencies": {
"cron-converter": "0.0.12",
"deep-equal": "^1.0.1",
"timezone-js": "^0.4.13",
"tzdata": "^1.0.9"
"local-crontab": "^0.1.0"
}
}

0 comments on commit 7e6dc11

Please sign in to comment.