serverless/lib/State.js
2016-02-17 11:17:39 -08:00

89 lines
1.5 KiB
JavaScript

'use strict';
/**
* Serverless State Class
*/
const SError = require('./Error'),
SUtils = require('./utils/index'),
_ = require('lodash'),
path = require('path'),
fs = require('fs');
class ServerlessState {
/**
* Constructor
*/
constructor(Serverless) {
this._S = Serverless;
this.meta = new this._S.classes.Meta(this._S);
}
/**
* Load
* - Load from source (i.e., file system);
* - Returns promise
*/
load() {
let _this = this;
return _this._S.getProject().load()
.then(function() {
return _this.meta.load();
});
}
/**
* Save
* - Load from source (i.e., file system);
*/
save() {
let _this = this;
return _this._S.getProject().save({ deep: true })
.then(function() {
return _this.meta.save({ deep: true });
});
}
/**
* Set
* - Set data from a javascript object
*/
set(data) {
this.meta = data.meta ? this.meta.set(data.meta) : this.meta;
this.project = data.project ? this._S.getProject().set(data.project, { deep: true }) : this._S.getProject();
return this;
}
/**
* Get
* - Returns clone of data
*/
get() {
return {
meta: this.meta.get(),
project: this._S.getProject().get()
}
}
/**
* Get Meta
* - Returns meta data from state
*/
getMeta() {
return this.meta;
}
}
module.exports = ServerlessState;