UNPKG

@gooin/fit2spatial

Version:

Convert Garmin FIT files to GeoJSON, SHP, KML, GPX

77 lines (76 loc) 3.1 kB
"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'}), };