@gooin/fit2spatial
Version:
Convert Garmin FIT files to GeoJSON, SHP, KML, GPX
77 lines (76 loc) • 3.1 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const core_1 = require("@oclif/core");
const path = require("node:path");
const utils_1 = require("../utils");
const file_1 = require("../utils/file");
class Geojson extends core_1.Command {
async run() {
const { flags } = await this.parse(Geojson);
const input = flags.input;
const output = flags.output;
core_1.ux.action.start('starting a process');
if ((0, file_1.checkIsFitFile)(input)) {
let outputPath = output;
const fileName = (0, file_1.getFitFileName)(input);
// if (!output) {
// outputPath = path.join(path.dirname(input), fileName + '.json')
// }
if (output) {
if ((0, file_1.checkIsDirectory)(output)) {
outputPath = path.join(output, fileName + '.json');
}
}
else {
outputPath = path.join(path.dirname(input), fileName + '.json');
}
await (0, utils_1.fit2geojson)(input, outputPath);
}
if ((0, file_1.checkIsDirectory)(input)) {
const fitFiles = (0, file_1.listFitFiles)(input);
// this.log('-> output path: ', output)
if (output && !(0, file_1.checkIsDirectory)(output)) {
this.log(`${output} is not a directory, creating...`);
(0, file_1.createDirectory)(output);
}
// eslint-disable-next-line unicorn/no-for-loop
for (let i = 0; i < fitFiles.length; i++) {
const fitFile = fitFiles[i];
const fileName = (0, file_1.getFitFileName)(path.join(input, fitFile));
// console.log('run - fileName:', fileName)
const outputPath = output ? path.join(output, fileName + '.json') : path.join(input, fileName + '.json');
// console.log('run - outputPath:', outputPath)
const inputPath = path.join(input, fitFile);
// eslint-disable-next-line no-await-in-loop
await (0, utils_1.fit2geojson)(inputPath, outputPath);
}
}
core_1.ux.action.stop();
}
}
exports.default = Geojson;
Geojson.description = 'convert Garmin FIT files to GeoJSON';
Geojson.examples = [
'<%= config.bin %> <%= command.id %>',
];
Geojson.flags = {
// flag with no value (-i, --input=VALUE)
input: core_1.Flags.string({
char: 'i',
description: 'input file or directory',
summary: 'input .fit file or directory',
required: true,
}),
output: core_1.Flags.string({
char: 'o',
description: 'output file or directory',
}),
noAttribute: core_1.Flags.string({
char: 'n',
description: 'no attribute, geometry only',
}),
};
Geojson.args = {
// file: Args.string({description: 'file to read'}),
// input: Args.string({char: 'i', description: 'input file or directory'}),
};