@viewdo/dxp-story-cli
Version:
README.md
57 lines (49 loc) • 2.21 kB
JavaScript
const path = require('path');
const fs = require('fs');
const TemplateWriter = require('../../_utilities/template-writer');
const camelCase = require('lodash/camelCase');
const isEmpty = require('lodash/isEmpty');
const { state: state_file_names, common: common_file_names } = require('../../_utilities/file-names');
const IndexJsWriter = require('../../common/index.js.js');
const SettingsJsWriter = require('../../common/_settings.js.js');
class TracksFolder {
constructor(_console = console) {
Object.assign(this, {
path,
fs,
vidoe_state_file_names: state_file_names.video,
common_file_names,
camelCase,
isEmpty,
index_js_writer: new IndexJsWriter(_console),
vtt_file_writer: new TemplateWriter(`${__dirname}/vtt-file.ejs`, _console),
track_file_writer: new TemplateWriter(`${__dirname}/_track.ejs`, _console),
settings_writer: new SettingsJsWriter(__dirname, _console)
});
}
create(tracks = [], track_path) {
const { index_js_writer, settings_writer, common_file_names, vtt_file_writer, camelCase, track_file_writer, vidoe_state_file_names } = this;
if (!isEmpty(tracks)) {
const track_import_variables = tracks.map((track) => {
const { id } = track;
const cue_file_name = vidoe_state_file_names.cues(id);
const track_file_name = vidoe_state_file_names.track(id);
const variable = camelCase(id);
const track_template_data = Object.assign({}, {
track,
cue_file_name
})
vtt_file_writer.write(track, `${track_path}/${cue_file_name}`);
track_file_writer.write(track_template_data, `${track_path}/${track_file_name}`);
return {
data: track,
file_path: `./${track_file_name}`,
variable
}
});
settings_writer.write(track_import_variables, track_path);
index_js_writer.write(track_path);
}
}
}
module.exports = TracksFolder;