UNPKG

meet-simen

Version:

Get to know Simen via `npx meet-simen`

79 lines (78 loc) 2.85 kB
import { readFileSync } from 'node:fs'; import { resolve } from 'node:path'; import { fileURLToPath } from 'node:url'; import { dirname } from 'node:path'; import ora from 'ora'; // Get the directory name of the current module const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); // Function to load local JSON data export async function loadLocalData(filename) { try { // Try to load from the correct dist/data directory const dataPath = resolve(__dirname, '../../dist/data', filename); try { const data = JSON.parse(readFileSync(dataPath, 'utf8')); return data; } catch (error) { // If that fails, try to load from current directory's data folder const fallbackPath = resolve(__dirname, '../data', filename); try { const data = JSON.parse(readFileSync(fallbackPath, 'utf8')); return data; } catch (secondError) { // Last resort, try src/data const srcDataPath = resolve(process.cwd(), 'src/data', filename); const data = JSON.parse(readFileSync(srcDataPath, 'utf8')); return data; } } } catch (error) { console.error(`Error loading ${filename}:`, error); throw error; } } // Function to load remote JSON data export async function loadRemoteData(config, filename) { const spinner = ora(`Loading ${filename} data...`).start(); try { const response = await fetch(`${config.remoteDataUrl}${filename}`); if (!response.ok) { throw new Error(`Failed to fetch ${filename}: ${response.statusText}`); } const data = await response.json(); spinner.succeed(`Loaded ${filename} data!`); return data; } catch (error) { spinner.fail(`Failed to load ${filename} data`); throw error; } } // Function to get package info export function getPackageInfo() { try { const packagePath = resolve(__dirname, '../../package.json'); const packageJson = JSON.parse(readFileSync(packagePath, 'utf8')); return packageJson; } catch (error) { // Fallback to current directory try { const packagePath = resolve(process.cwd(), 'package.json'); const packageJson = JSON.parse(readFileSync(packagePath, 'utf8')); return packageJson; } catch (secondError) { console.error('Error loading package.json:', secondError); return { name: 'meet-simen', version: '2.0.0', description: 'Get to know Simen via `npx meet-simen`' }; } } } // Function to load config export async function loadConfig() { return await loadLocalData('config.json'); }