[Launcher] Add helper for fzf
This commit is contained in:
parent
4dc14cf4e3
commit
d9fdf1ee6d
32
config/ags/launcher/helpers/fzf/dist/fzf.js
vendored
Normal file
32
config/ags/launcher/helpers/fzf/dist/fzf.js
vendored
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
"use strict";
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const fast_fuzzy_1 = require("fast-fuzzy");
|
||||||
|
const fs_1 = __importDefault(require("fs"));
|
||||||
|
// Get list source from args
|
||||||
|
// ARGS: type source
|
||||||
|
// Then we read query from stdin to not restart indexing & the like for each keystroke
|
||||||
|
let data = [];
|
||||||
|
if (process.argv[2] === 'fs') {
|
||||||
|
if (process.argv[3].includes('.json')) {
|
||||||
|
data = JSON.parse('' + fs_1.default.readFileSync(process.argv[3]));
|
||||||
|
}
|
||||||
|
else if (process.argv[3].includes('.txt')) {
|
||||||
|
data = ('' + fs_1.default.readFileSync(process.argv[3])).split(',');
|
||||||
|
}
|
||||||
|
else if (fs_1.default.statSync(process.argv[3]).isDirectory()) {
|
||||||
|
data = fs_1.default.readdirSync(process.argv[3]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (process.argv[2] === 'arg') {
|
||||||
|
data = process.argv[3].split(',');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
throw new Error('Invalid argument at position 1. Can be either fs or arg, not ' + process.argv[2]);
|
||||||
|
}
|
||||||
|
process.stdin.on("data", (query) => {
|
||||||
|
// On stdin submit (which the other client will have to support) process data
|
||||||
|
console.log((0, fast_fuzzy_1.search)(query.toString(), data));
|
||||||
|
});
|
18
config/ags/launcher/helpers/fzf/package.json
Normal file
18
config/ags/launcher/helpers/fzf/package.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "fzf",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"author": "",
|
||||||
|
"type": "commonjs",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "^22.14.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"fast-fuzzy": "^1.12.0"
|
||||||
|
}
|
||||||
|
}
|
27
config/ags/launcher/helpers/fzf/src/fzf.ts
Normal file
27
config/ags/launcher/helpers/fzf/src/fzf.ts
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
import { search } from 'fast-fuzzy';
|
||||||
|
import fs from 'fs';
|
||||||
|
|
||||||
|
// Get list source from args
|
||||||
|
// ARGS: type source
|
||||||
|
// Then we read query from stdin to not restart indexing & the like for each keystroke
|
||||||
|
|
||||||
|
let data: string[] = [];
|
||||||
|
if ( process.argv[ 2 ] === 'fs' ) {
|
||||||
|
if ( process.argv[ 3 ].includes( '.json' ) ) {
|
||||||
|
data = JSON.parse( '' + fs.readFileSync( process.argv[ 3 ] ) );
|
||||||
|
} else if ( process.argv[ 3 ].includes( '.txt' ) ) {
|
||||||
|
data = ( '' + fs.readFileSync( process.argv[ 3 ] ) ).split( ',' );
|
||||||
|
} else if ( fs.statSync( process.argv[ 3 ] ).isDirectory() ) {
|
||||||
|
data = fs.readdirSync( process.argv[ 3 ] );
|
||||||
|
}
|
||||||
|
} else if ( process.argv[ 2 ] === 'arg' ) {
|
||||||
|
data = process.argv[ 3 ].split( ',' );
|
||||||
|
} else {
|
||||||
|
throw new Error( 'Invalid argument at position 1. Can be either fs or arg, not ' + process.argv[ 2 ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
process.stdin.on( "data", ( query ) => {
|
||||||
|
// On stdin submit (which the other client will have to support) process data
|
||||||
|
|
||||||
|
console.log( search( query.toString(), data ) );
|
||||||
|
} );
|
13
config/ags/launcher/helpers/fzf/tsconfig.json
Normal file
13
config/ags/launcher/helpers/fzf/tsconfig.json
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"outDir": "./dist",
|
||||||
|
"allowJs": true,
|
||||||
|
"target": "ES6",
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"allowSyntheticDefaultImports": true,
|
||||||
|
"types": ["node"],
|
||||||
|
"module": "NodeNext",
|
||||||
|
"moduleResolution": "NodeNext"
|
||||||
|
},
|
||||||
|
"include": [ "./src/**/*" ],
|
||||||
|
}
|
@ -15,7 +15,9 @@ const fzfApplication = ( query: string ) => {
|
|||||||
return apps.fuzzy_query( query );
|
return apps.fuzzy_query( query );
|
||||||
}
|
}
|
||||||
|
|
||||||
const fzfCmd = ( query: string ) => {}
|
const fzfCmd = ( query: string ) => {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
fzfApplication
|
fzfApplication
|
||||||
|
Loading…
x
Reference in New Issue
Block a user