mirror of
				https://github.com/public-transport/db-vendo-client.git
				synced 2025-10-31 16:16:32 +02:00 
			
		
		
		
	add back cli
This commit is contained in:
		
							parent
							
								
									911ac17510
								
							
						
					
					
						commit
						01b95e74f4
					
				
					 4 changed files with 100 additions and 3 deletions
				
			
		
							
								
								
									
										8
									
								
								index.js
									
										
									
									
									
								
							
							
						
						
									
										8
									
								
								index.js
									
										
									
									
									
								
							|  | @ -27,14 +27,16 @@ const validateLocation = (loc, name = 'location') => { | ||||||
| 	} | 	} | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| const loadEnrichedStationData = () => new Promise((resolve, reject) => { | const loadEnrichedStationData = (profile) => new Promise((resolve, reject) => { | ||||||
| 	const items = {}; | 	const items = {}; | ||||||
| 	readStations.full() | 	readStations.full() | ||||||
| 		.on('data', (station) => { | 		.on('data', (station) => { | ||||||
| 			items[station.id] = station; | 			items[station.id] = station; | ||||||
| 		}) | 		}) | ||||||
| 		.once('end', () => { | 		.once('end', () => { | ||||||
| 			console.info('Loaded station index.'); | 			if (profile.DEBUG) { | ||||||
|  | 				console.log('Loaded station index.'); | ||||||
|  | 			} | ||||||
| 			resolve(items); | 			resolve(items); | ||||||
| 		}) | 		}) | ||||||
| 		.once('error', (err) => { | 		.once('error', (err) => { | ||||||
|  | @ -47,7 +49,7 @@ const createClient = (profile, userAgent, opt = {}) => { | ||||||
| 	validateProfile(profile); | 	validateProfile(profile); | ||||||
| 	const common = {}; | 	const common = {}; | ||||||
| 	if (opt.enrichStations !== false) { | 	if (opt.enrichStations !== false) { | ||||||
| 		loadEnrichedStationData() | 		loadEnrichedStationData(profile) | ||||||
| 			.then(locations => { | 			.then(locations => { | ||||||
| 				common.locations = locations; | 				common.locations = locations; | ||||||
| 			}); | 			}); | ||||||
|  |  | ||||||
|  | @ -51,6 +51,7 @@ const notImplemented = (_ctx, _x) => { | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| const defaultProfile = { | const defaultProfile = { | ||||||
|  | 	DEBUG, | ||||||
| 	request, | 	request, | ||||||
| 	products, | 	products, | ||||||
| 	ageGroup, ageGroupFromAge, ageGroupLabel, | 	ageGroup, ageGroupFromAge, ageGroupLabel, | ||||||
|  |  | ||||||
							
								
								
									
										80
									
								
								tools/debug-cli/cli.js
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										80
									
								
								tools/debug-cli/cli.js
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,80 @@ | ||||||
|  | #!/usr/bin/env node
 | ||||||
|  | 
 | ||||||
|  | import {parseArgs} from 'node:util'; | ||||||
|  | import {createClient} from '../../index.js'; | ||||||
|  | 
 | ||||||
|  | const showError = (err) => { | ||||||
|  | 	console.error(err); | ||||||
|  | 	process.exit(1); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | const toString = val => String(val); | ||||||
|  | const parseJsObject = val => { | ||||||
|  | 	const res = eval(`(${val})`); | ||||||
|  | 	return res && 'object' === typeof res | ||||||
|  | 		? res | ||||||
|  | 		: {}; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | const methodsAndTheirArgs = [ | ||||||
|  | 	['departures', 0, toString], | ||||||
|  | 	['departures', 1, parseJsObject], | ||||||
|  | 	['arrivals', 0, toString], | ||||||
|  | 	['arrivals', 1, parseJsObject], | ||||||
|  | 	['journeys', 0, toString], | ||||||
|  | 	['journeys', 1, toString], | ||||||
|  | 	['journeys', 2, parseJsObject], | ||||||
|  | 	['refreshJourney', 0, toString], | ||||||
|  | 	['refreshJourney', 1, parseJsObject], | ||||||
|  | 	['journeysFromTrip', 0, toString], | ||||||
|  | 	['journeysFromTrip', 1, parseJsObject], | ||||||
|  | 	['journeysFromTrip', 2, toString], | ||||||
|  | 	['journeysFromTrip', 3, parseJsObject], | ||||||
|  | 	['locations', 0, toString], | ||||||
|  | 	['locations', 1, parseJsObject], | ||||||
|  | 	['stop', 0, toString], | ||||||
|  | 	['stop', 1, parseJsObject], | ||||||
|  | 	['nearby', 0, parseJsObject], | ||||||
|  | 	['nearby', 1, parseJsObject], | ||||||
|  | 	['trip', 0, toString], | ||||||
|  | 	['trip', 1, parseJsObject], | ||||||
|  | 	['tripsByName', 0, toString], | ||||||
|  | 	['tripsByName', 1, parseJsObject], | ||||||
|  | 	['radar', 0, parseJsObject], | ||||||
|  | 	['radar', 1, parseJsObject], | ||||||
|  | 	['reachableFrom', 0, parseJsObject], | ||||||
|  | 	['reachableFrom', 1, parseJsObject], | ||||||
|  | 	['remarks', 0, parseJsObject], | ||||||
|  | 	['lines', 0, toString], | ||||||
|  | 	['lines', 1, parseJsObject], | ||||||
|  | 	['serverInfo', 0, parseJsObject], | ||||||
|  | ]; | ||||||
|  | 
 | ||||||
|  | const { | ||||||
|  | 	positionals: args, | ||||||
|  | } = parseArgs({ | ||||||
|  | 	strict: true, | ||||||
|  | 	allowPositionals: true, | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | const profileName = args[0]; | ||||||
|  | const fnName = args[1]; | ||||||
|  | 
 | ||||||
|  | const parsedArgs = args.slice(2) | ||||||
|  | 	.map((arg, i) => { | ||||||
|  | 		const parser = methodsAndTheirArgs.find(([_fnName, _i]) => _fnName === fnName && _i === i); | ||||||
|  | 		return parser | ||||||
|  | 			? parser[2](arg) | ||||||
|  | 			: arg; | ||||||
|  | 	}); | ||||||
|  | (async () => { | ||||||
|  | 	const {profile} = await import(`../../p/${profileName}/index.js`); | ||||||
|  | 
 | ||||||
|  | 	const client = createClient(profile, 'db-vendo-client debug CLI'); | ||||||
|  | 
 | ||||||
|  | 	const fn = client[fnName]; | ||||||
|  | 
 | ||||||
|  | 	const res = await fn(...parsedArgs); | ||||||
|  | 	process.stdout.write(JSON.stringify(res) + '\n'); | ||||||
|  | })() | ||||||
|  | 	.catch(showError); | ||||||
							
								
								
									
										14
									
								
								tools/debug-cli/package.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								tools/debug-cli/package.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | ||||||
|  | { | ||||||
|  | 	"private": true, | ||||||
|  | 	"name": "debug-cli", | ||||||
|  | 	"version": "1.0.0", | ||||||
|  | 	"type": "module", | ||||||
|  | 	"bin": { | ||||||
|  | 		"db-vendo-client-debug-cli": "./cli.js" | ||||||
|  | 	}, | ||||||
|  | 	"author": "Jannis R <mail@jannisr.de>", | ||||||
|  | 	"license": "ISC", | ||||||
|  | 	"engines": { | ||||||
|  | 		"node": ">=16.17" | ||||||
|  | 	} | ||||||
|  | } | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue