File size: 2,782 Bytes
f74f125
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import os
import json
from datetime import datetime
import re

def get_skill_files():
    skill_files = []
    skill_doc_files = []
    for root, dirs, files in os.walk("."):
        if "skill.json" in files:
            skill_files.append(os.path.join(root, "skill.json"))
        if "skill_doc.md" in files:
            skill_doc_files.append(os.path.join(root, "skill_doc.md"))
    return skill_files, skill_doc_files

def get_skill_data(file_path):
    with open(file_path, 'r', encoding='utf-8') as f:
        data = json.load(f)
    return data

def get_skill_doc_data(file_path):
    if not os.path.exists(file_path):
        return None
    with open(file_path, 'r', encoding='utf-8') as file:
        lines = file.readlines()
        title = lines[0].strip().replace("# ", "") if lines else None
        content = "".join(lines)

        # Regular expressions to extract the desired sections
        usage_pattern = r"# Usage:\n(.*?)\n\n"
        parameters_pattern = r"# Parameters:\n(.*?)\n\n"
        returns_pattern = r"# Returns:\n(.*?)(\n\n|$|#)"

        usage = re.search(usage_pattern, content, re.DOTALL)
        parameters = re.search(parameters_pattern, content, re.DOTALL)
        returns_ = re.search(returns_pattern, content, re.DOTALL)

        # Extract the matched content or set to None if not found
        usage_content = usage.group(1).strip() if usage else None
        parameters_content = parameters.group(1).strip() if parameters else None
        returns_content = returns_.group(1).strip() if returns_ else None

        return {
            "Title": title,
            "Usage": usage_content,
            "Parameters": parameters_content,
            "Returns": returns_content
        }

def get_skill_datas():
    skill_files, skill_doc_files = get_skill_files()
    skills_datas=[]
    for i, file in enumerate(skill_files):
        skill_doc_file = skill_doc_files[i]
        skill = get_skill_data(file)
        skill_doc = get_skill_doc_data(skill_doc_file)
        if skill_doc:
            skill.update(skill_doc)
        skills_datas.append(skill)
    return skills_datas


def time_ago(updated_at_str):
    now = datetime.now()
    updated_at = datetime.strptime(updated_at_str, '%Y-%m-%d %H:%M:%S')
    delta = now - updated_at
    
    minutes = delta.total_seconds() / 60
    hours = minutes / 60
    days = hours / 24
    months = days / 30.44  # An average month length
    years = days / 365.25  # Account for leap years

    if minutes < 60:
        return f"{int(minutes)} minutes ago"
    elif hours < 24:
        return f"{int(hours)} hours ago"
    elif days < 30.44:
        return f"{int(days)} days ago"
    elif months < 12:
        return f"{int(months)} months ago"
    else:
        return f"{int(years)} years ago"