feat(cli): support blocking bots

This commit is contained in:
Cory Dransfeldt 2025-06-08 17:55:22 -07:00
parent 1f9e2d856f
commit 1589c4c6fd
No known key found for this signature in database
4 changed files with 47 additions and 3 deletions

View file

@ -0,0 +1,42 @@
import inquirer from 'inquirer';
import { loadConfig } from '../config.js';
import { initDirectusClient, searchItems, createItem } from '../directus/client.js';
export const addBlockedRobot = async () => {
const config = await loadConfig();
initDirectusClient(config);
const robots = await searchItems('robots', '/');
let rootRobot = robots.find(r => r.path === '/');
if (!rootRobot) {
console.log(' No robots entry for `/` found. Creating one...');
const newRobot = await createItem('robots', { path: '/' });
rootRobot = newRobot.data || newRobot;
console.log('✅ Created robots rule for `/`');
}
const { userAgent } = await inquirer.prompt({
name: 'userAgent',
message: '🤖 Enter the user-agent string to block:',
validate: input => !!input || 'User-agent cannot be empty'
});
const createdAgent = await createItem('user_agents', {
user_agent: userAgent
});
const agentId = createdAgent.data?.id || createdAgent.id;
await createItem('robots_user_agents', {
robots_id: rootRobot.id,
user_agents_id: agentId
});
console.log(`✅ Blocked user-agent "${userAgent}" under path "/"`);
};

View file

@ -3,12 +3,14 @@ import { addPost } from './addPost.js';
import { addLinkToShare } from './addLinkToShare.js';
import { addEpisodeToShow } from './addEpisodeToShow.js';
import { updateReadingProgress } from './updateReadingProgress.js';
import { addBlockedRobot } from './addBlockedRobot.js';
const TASKS = [
{ name: '📄 Add post', handler: addPost },
{ name: '🔗 Add link to share', handler: addLinkToShare },
{ name: ' Add episode to show', handler: addEpisodeToShow },
{ name: '📚 Update reading progress', handler: updateReadingProgress },
{ name: '🤖 Block robot', handler: addBlockedRobot },
];
export const runTasksMenu = async () => {