@amirdaraee/namewise 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/ISSUE_TEMPLATE/bug_report.yml +82 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +61 -0
- package/.github/workflows/auto-release.yml +78 -0
- package/.github/workflows/ci.yml +78 -0
- package/.github/workflows/publish.yml +43 -0
- package/.github/workflows/test.yml +37 -0
- package/CHANGELOG.md +128 -0
- package/LICENSE +21 -0
- package/README.md +251 -0
- package/dist/cli/commands.d.ts +3 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +19 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/rename.d.ts +2 -0
- package/dist/cli/rename.d.ts.map +1 -0
- package/dist/cli/rename.js +136 -0
- package/dist/cli/rename.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/excel-parser.d.ts +6 -0
- package/dist/parsers/excel-parser.d.ts.map +1 -0
- package/dist/parsers/excel-parser.js +42 -0
- package/dist/parsers/excel-parser.js.map +1 -0
- package/dist/parsers/factory.d.ts +7 -0
- package/dist/parsers/factory.d.ts.map +1 -0
- package/dist/parsers/factory.js +29 -0
- package/dist/parsers/factory.js.map +1 -0
- package/dist/parsers/pdf-parser.d.ts +7 -0
- package/dist/parsers/pdf-parser.d.ts.map +1 -0
- package/dist/parsers/pdf-parser.js +67 -0
- package/dist/parsers/pdf-parser.js.map +1 -0
- package/dist/parsers/text-parser.d.ts +6 -0
- package/dist/parsers/text-parser.d.ts.map +1 -0
- package/dist/parsers/text-parser.js +39 -0
- package/dist/parsers/text-parser.js.map +1 -0
- package/dist/parsers/word-parser.d.ts +6 -0
- package/dist/parsers/word-parser.d.ts.map +1 -0
- package/dist/parsers/word-parser.js +44 -0
- package/dist/parsers/word-parser.js.map +1 -0
- package/dist/services/ai-factory.d.ts +5 -0
- package/dist/services/ai-factory.d.ts.map +1 -0
- package/dist/services/ai-factory.js +15 -0
- package/dist/services/ai-factory.js.map +1 -0
- package/dist/services/claude-service.d.ts +9 -0
- package/dist/services/claude-service.d.ts.map +1 -0
- package/dist/services/claude-service.js +113 -0
- package/dist/services/claude-service.js.map +1 -0
- package/dist/services/file-renamer.d.ts +12 -0
- package/dist/services/file-renamer.d.ts.map +1 -0
- package/dist/services/file-renamer.js +99 -0
- package/dist/services/file-renamer.js.map +1 -0
- package/dist/services/openai-service.d.ts +9 -0
- package/dist/services/openai-service.d.ts.map +1 -0
- package/dist/services/openai-service.js +112 -0
- package/dist/services/openai-service.js.map +1 -0
- package/dist/types/index.d.ts +61 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/file-templates.d.ts +18 -0
- package/dist/utils/file-templates.d.ts.map +1 -0
- package/dist/utils/file-templates.js +232 -0
- package/dist/utils/file-templates.js.map +1 -0
- package/dist/utils/naming-conventions.d.ts +4 -0
- package/dist/utils/naming-conventions.d.ts.map +1 -0
- package/dist/utils/naming-conventions.js +55 -0
- package/dist/utils/naming-conventions.js.map +1 -0
- package/package.json +75 -0
- package/src/cli/commands.ts +20 -0
- package/src/cli/rename.ts +157 -0
- package/src/index.ts +17 -0
- package/src/parsers/excel-parser.ts +49 -0
- package/src/parsers/factory.ts +34 -0
- package/src/parsers/pdf-parser.ts +78 -0
- package/src/parsers/text-parser.ts +43 -0
- package/src/parsers/word-parser.ts +50 -0
- package/src/services/ai-factory.ts +16 -0
- package/src/services/claude-service.ts +114 -0
- package/src/services/file-renamer.ts +123 -0
- package/src/services/openai-service.ts +113 -0
- package/src/types/index.ts +71 -0
- package/src/types/pdf-extraction.d.ts +7 -0
- package/src/utils/file-templates.ts +275 -0
- package/src/utils/naming-conventions.ts +67 -0
- package/tests/data/empty-file.txt +0 -0
- package/tests/data/sample-markdown.md +9 -0
- package/tests/data/sample-pdf.pdf +0 -0
- package/tests/data/sample-text.txt +25 -0
- package/tests/integration/end-to-end.test.ts +209 -0
- package/tests/integration/workflow.test.ts +336 -0
- package/tests/mocks/mock-ai-service.ts +58 -0
- package/tests/unit/cli/commands.test.ts +163 -0
- package/tests/unit/parsers/factory.test.ts +100 -0
- package/tests/unit/parsers/pdf-parser.test.ts +63 -0
- package/tests/unit/parsers/text-parser.test.ts +85 -0
- package/tests/unit/services/ai-factory.test.ts +37 -0
- package/tests/unit/services/claude-service.test.ts +188 -0
- package/tests/unit/services/file-renamer.test.ts +299 -0
- package/tests/unit/services/openai-service.test.ts +196 -0
- package/tests/unit/utils/file-templates.test.ts +199 -0
- package/tests/unit/utils/naming-conventions.test.ts +88 -0
- package/tsconfig.json +20 -0
- package/vitest.config.ts +30 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
name: Bug Report
|
|
2
|
+
description: File a bug report to help us improve
|
|
3
|
+
title: "[Bug]: "
|
|
4
|
+
labels: ["bug", "triage"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Thanks for taking the time to fill out this bug report!
|
|
10
|
+
|
|
11
|
+
- type: input
|
|
12
|
+
id: version
|
|
13
|
+
attributes:
|
|
14
|
+
label: Version
|
|
15
|
+
description: What version of smart-rename are you using?
|
|
16
|
+
placeholder: ex. 0.1.0
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
19
|
+
|
|
20
|
+
- type: dropdown
|
|
21
|
+
id: os
|
|
22
|
+
attributes:
|
|
23
|
+
label: Operating System
|
|
24
|
+
description: What operating system are you using?
|
|
25
|
+
options:
|
|
26
|
+
- Windows
|
|
27
|
+
- macOS
|
|
28
|
+
- Linux
|
|
29
|
+
- Other
|
|
30
|
+
validations:
|
|
31
|
+
required: true
|
|
32
|
+
|
|
33
|
+
- type: input
|
|
34
|
+
id: node-version
|
|
35
|
+
attributes:
|
|
36
|
+
label: Node.js Version
|
|
37
|
+
description: What version of Node.js are you using?
|
|
38
|
+
placeholder: ex. 20.0.0
|
|
39
|
+
validations:
|
|
40
|
+
required: true
|
|
41
|
+
|
|
42
|
+
- type: textarea
|
|
43
|
+
id: what-happened
|
|
44
|
+
attributes:
|
|
45
|
+
label: What happened?
|
|
46
|
+
description: A clear and concise description of what the bug is.
|
|
47
|
+
placeholder: Tell us what you see!
|
|
48
|
+
validations:
|
|
49
|
+
required: true
|
|
50
|
+
|
|
51
|
+
- type: textarea
|
|
52
|
+
id: steps
|
|
53
|
+
attributes:
|
|
54
|
+
label: Steps to Reproduce
|
|
55
|
+
description: Steps to reproduce the behavior
|
|
56
|
+
placeholder: |
|
|
57
|
+
1. Run command '...'
|
|
58
|
+
2. With files '...'
|
|
59
|
+
3. See error
|
|
60
|
+
validations:
|
|
61
|
+
required: true
|
|
62
|
+
|
|
63
|
+
- type: textarea
|
|
64
|
+
id: expected
|
|
65
|
+
attributes:
|
|
66
|
+
label: Expected Behavior
|
|
67
|
+
description: What did you expect to happen?
|
|
68
|
+
validations:
|
|
69
|
+
required: true
|
|
70
|
+
|
|
71
|
+
- type: textarea
|
|
72
|
+
id: logs
|
|
73
|
+
attributes:
|
|
74
|
+
label: Error Messages/Logs
|
|
75
|
+
description: If applicable, add error messages or logs
|
|
76
|
+
render: shell
|
|
77
|
+
|
|
78
|
+
- type: textarea
|
|
79
|
+
id: additional
|
|
80
|
+
attributes:
|
|
81
|
+
label: Additional Context
|
|
82
|
+
description: Add any other context about the problem here
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
name: Feature Request
|
|
2
|
+
description: Suggest an idea for this project
|
|
3
|
+
title: "[Feature]: "
|
|
4
|
+
labels: ["enhancement", "feature-request"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Thanks for suggesting a new feature!
|
|
10
|
+
|
|
11
|
+
- type: textarea
|
|
12
|
+
id: problem
|
|
13
|
+
attributes:
|
|
14
|
+
label: Problem Description
|
|
15
|
+
description: Is your feature request related to a problem? Please describe.
|
|
16
|
+
placeholder: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
|
17
|
+
|
|
18
|
+
- type: textarea
|
|
19
|
+
id: solution
|
|
20
|
+
attributes:
|
|
21
|
+
label: Proposed Solution
|
|
22
|
+
description: Describe the solution you'd like
|
|
23
|
+
placeholder: A clear and concise description of what you want to happen.
|
|
24
|
+
validations:
|
|
25
|
+
required: true
|
|
26
|
+
|
|
27
|
+
- type: textarea
|
|
28
|
+
id: alternatives
|
|
29
|
+
attributes:
|
|
30
|
+
label: Alternative Solutions
|
|
31
|
+
description: Describe alternatives you've considered
|
|
32
|
+
placeholder: A clear and concise description of any alternative solutions or features you've considered.
|
|
33
|
+
|
|
34
|
+
- type: dropdown
|
|
35
|
+
id: priority
|
|
36
|
+
attributes:
|
|
37
|
+
label: Priority
|
|
38
|
+
description: How important is this feature to you?
|
|
39
|
+
options:
|
|
40
|
+
- Low
|
|
41
|
+
- Medium
|
|
42
|
+
- High
|
|
43
|
+
- Critical
|
|
44
|
+
validations:
|
|
45
|
+
required: true
|
|
46
|
+
|
|
47
|
+
- type: checkboxes
|
|
48
|
+
id: implementation
|
|
49
|
+
attributes:
|
|
50
|
+
label: Implementation
|
|
51
|
+
description: Would you be willing to help implement this feature?
|
|
52
|
+
options:
|
|
53
|
+
- label: I would like to implement this feature
|
|
54
|
+
- label: I need help implementing this feature
|
|
55
|
+
- label: I can provide feedback during implementation
|
|
56
|
+
|
|
57
|
+
- type: textarea
|
|
58
|
+
id: additional
|
|
59
|
+
attributes:
|
|
60
|
+
label: Additional Context
|
|
61
|
+
description: Add any other context, screenshots, or examples about the feature request here.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
name: Auto Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
paths:
|
|
7
|
+
- 'package.json'
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
check-version:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
outputs:
|
|
13
|
+
should-release: ${{ steps.version-check.outputs.should-release }}
|
|
14
|
+
new-version: ${{ steps.version-check.outputs.new-version }}
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- name: Checkout code
|
|
18
|
+
uses: actions/checkout@v4
|
|
19
|
+
with:
|
|
20
|
+
fetch-depth: 0
|
|
21
|
+
|
|
22
|
+
- name: Check if version changed
|
|
23
|
+
id: version-check
|
|
24
|
+
run: |
|
|
25
|
+
# Get current version from package.json
|
|
26
|
+
CURRENT_VERSION=$(node -p "require('./package.json').version")
|
|
27
|
+
echo "Current version: $CURRENT_VERSION"
|
|
28
|
+
|
|
29
|
+
# Check if tag already exists
|
|
30
|
+
if git tag --list | grep -q "^v$CURRENT_VERSION$"; then
|
|
31
|
+
echo "should-release=false" >> $GITHUB_OUTPUT
|
|
32
|
+
echo "Tag v$CURRENT_VERSION already exists"
|
|
33
|
+
else
|
|
34
|
+
echo "should-release=true" >> $GITHUB_OUTPUT
|
|
35
|
+
echo "new-version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
|
|
36
|
+
echo "New version detected: $CURRENT_VERSION"
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
auto-release:
|
|
40
|
+
needs: check-version
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
if: needs.check-version.outputs.should-release == 'true'
|
|
43
|
+
permissions:
|
|
44
|
+
contents: write
|
|
45
|
+
|
|
46
|
+
steps:
|
|
47
|
+
- name: Checkout code
|
|
48
|
+
uses: actions/checkout@v4
|
|
49
|
+
|
|
50
|
+
- name: Setup Node.js
|
|
51
|
+
uses: actions/setup-node@v4
|
|
52
|
+
with:
|
|
53
|
+
node-version: '20.x'
|
|
54
|
+
cache: 'npm'
|
|
55
|
+
registry-url: 'https://registry.npmjs.org'
|
|
56
|
+
|
|
57
|
+
- name: Install dependencies
|
|
58
|
+
run: npm ci
|
|
59
|
+
|
|
60
|
+
- name: Run tests
|
|
61
|
+
run: npm run test:run
|
|
62
|
+
|
|
63
|
+
- name: Build project
|
|
64
|
+
run: npm run build
|
|
65
|
+
|
|
66
|
+
- name: Create and push tag
|
|
67
|
+
run: |
|
|
68
|
+
git config --local user.email "action@github.com"
|
|
69
|
+
git config --local user.name "GitHub Action"
|
|
70
|
+
git tag -a "v${{ needs.check-version.outputs.new-version }}" -m "Release v${{ needs.check-version.outputs.new-version }}"
|
|
71
|
+
git push origin "v${{ needs.check-version.outputs.new-version }}"
|
|
72
|
+
env:
|
|
73
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
74
|
+
|
|
75
|
+
- name: Publish to npm
|
|
76
|
+
run: npm publish
|
|
77
|
+
env:
|
|
78
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main, develop ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
|
|
13
|
+
strategy:
|
|
14
|
+
matrix:
|
|
15
|
+
node-version: [18.x, 20.x, 22.x]
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- name: Checkout code
|
|
19
|
+
uses: actions/checkout@v4
|
|
20
|
+
|
|
21
|
+
- name: Setup Node.js ${{ matrix.node-version }}
|
|
22
|
+
uses: actions/setup-node@v4
|
|
23
|
+
with:
|
|
24
|
+
node-version: ${{ matrix.node-version }}
|
|
25
|
+
cache: 'npm'
|
|
26
|
+
|
|
27
|
+
- name: Install dependencies
|
|
28
|
+
run: npm ci
|
|
29
|
+
|
|
30
|
+
- name: Run linter (if available)
|
|
31
|
+
run: npm run lint --if-present
|
|
32
|
+
|
|
33
|
+
- name: Run tests
|
|
34
|
+
run: npm run test:run
|
|
35
|
+
|
|
36
|
+
- name: Run coverage
|
|
37
|
+
run: npm run test:coverage
|
|
38
|
+
|
|
39
|
+
- name: Build project
|
|
40
|
+
run: npm run build
|
|
41
|
+
|
|
42
|
+
- name: Test CLI
|
|
43
|
+
run: |
|
|
44
|
+
node dist/index.js --help
|
|
45
|
+
node dist/index.js --version
|
|
46
|
+
|
|
47
|
+
build:
|
|
48
|
+
needs: test
|
|
49
|
+
runs-on: ubuntu-latest
|
|
50
|
+
if: github.ref == 'refs/heads/main'
|
|
51
|
+
|
|
52
|
+
steps:
|
|
53
|
+
- name: Checkout code
|
|
54
|
+
uses: actions/checkout@v4
|
|
55
|
+
|
|
56
|
+
- name: Setup Node.js
|
|
57
|
+
uses: actions/setup-node@v4
|
|
58
|
+
with:
|
|
59
|
+
node-version: '20.x'
|
|
60
|
+
cache: 'npm'
|
|
61
|
+
|
|
62
|
+
- name: Install dependencies
|
|
63
|
+
run: npm ci
|
|
64
|
+
|
|
65
|
+
- name: Build project
|
|
66
|
+
run: npm run build
|
|
67
|
+
|
|
68
|
+
- name: Upload build artifacts
|
|
69
|
+
uses: actions/upload-artifact@v4
|
|
70
|
+
with:
|
|
71
|
+
name: build-artifacts
|
|
72
|
+
path: |
|
|
73
|
+
dist/
|
|
74
|
+
package.json
|
|
75
|
+
README.md
|
|
76
|
+
LICENSE
|
|
77
|
+
CHANGELOG.md
|
|
78
|
+
retention-days: 30
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
name: Publish Package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [created]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
publish-npm:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
steps:
|
|
11
|
+
- uses: actions/checkout@v4
|
|
12
|
+
- uses: actions/setup-node@v4
|
|
13
|
+
with:
|
|
14
|
+
node-version: '22'
|
|
15
|
+
registry-url: https://registry.npmjs.org/
|
|
16
|
+
- run: npm ci
|
|
17
|
+
- run: npm run build
|
|
18
|
+
- run: npm run test:run
|
|
19
|
+
- run: npm publish
|
|
20
|
+
env:
|
|
21
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
22
|
+
|
|
23
|
+
publish-gpr:
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
permissions:
|
|
26
|
+
contents: read
|
|
27
|
+
packages: write
|
|
28
|
+
steps:
|
|
29
|
+
- uses: actions/checkout@v4
|
|
30
|
+
- uses: actions/setup-node@v4
|
|
31
|
+
with:
|
|
32
|
+
node-version: '22'
|
|
33
|
+
registry-url: https://npm.pkg.github.com/
|
|
34
|
+
- run: npm ci
|
|
35
|
+
- run: npm run build
|
|
36
|
+
- run: npm run test:run
|
|
37
|
+
- name: Publish to GitHub Packages
|
|
38
|
+
run: |
|
|
39
|
+
echo "registry=https://npm.pkg.github.com/" > .npmrc
|
|
40
|
+
echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" >> .npmrc
|
|
41
|
+
npm publish
|
|
42
|
+
env:
|
|
43
|
+
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: Test
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
|
|
13
|
+
strategy:
|
|
14
|
+
matrix:
|
|
15
|
+
node-version: [18, 20, 22]
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- name: Setup Node.js ${{ matrix.node-version }}
|
|
21
|
+
uses: actions/setup-node@v4
|
|
22
|
+
with:
|
|
23
|
+
node-version: ${{ matrix.node-version }}
|
|
24
|
+
cache: 'npm'
|
|
25
|
+
|
|
26
|
+
- name: Install dependencies
|
|
27
|
+
run: npm ci
|
|
28
|
+
|
|
29
|
+
- name: Build project
|
|
30
|
+
run: npm run build
|
|
31
|
+
|
|
32
|
+
- name: Run tests
|
|
33
|
+
run: npm run test:run
|
|
34
|
+
|
|
35
|
+
- name: Run coverage
|
|
36
|
+
run: npm run test:coverage
|
|
37
|
+
if: matrix.node-version == '22'
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [0.3.0] - 2025-09-05
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **🎯 Personal File Templates**: Customizable templates for different file categories
|
|
14
|
+
- `document`: Personal docs with name and date (e.g., `driving-license-amirhossein-20250213.pdf`)
|
|
15
|
+
- `movie`: Movies with release year (e.g., `the-dark-knight-2008.mkv`)
|
|
16
|
+
- `music`: Music with artist names (e.g., `the-beatles-hey-jude.mp3`)
|
|
17
|
+
- `series`: TV series with season/episode (e.g., `breaking-bad-s01e01.mkv`)
|
|
18
|
+
- `photo`: Photos with personal info (e.g., `vacation-paris-john-20240715.jpg`)
|
|
19
|
+
- `book`: Books with author names (e.g., `george-orwell-1984.pdf`)
|
|
20
|
+
- `general`: General files without special formatting
|
|
21
|
+
- **🤖 Smart File Categorization**: Automatically detects file type based on extension and content
|
|
22
|
+
- **👤 Personal Name Integration**: `-n, --name` option to include your name in documents
|
|
23
|
+
- **📅 Flexible Date Formats**: `-d, --date` option with formats:
|
|
24
|
+
- `YYYY-MM-DD`: 2025-09-05
|
|
25
|
+
- `YYYY`: 2025
|
|
26
|
+
- `YYYYMMDD`: 20250905
|
|
27
|
+
- `none`: No date (default)
|
|
28
|
+
- **📂 Category Templates**: `-t, --template` option to specify file category or use auto-detection
|
|
29
|
+
|
|
30
|
+
### Enhanced
|
|
31
|
+
- AI prompts now include category-specific instructions for better filename generation
|
|
32
|
+
- File processing pipeline includes template application after AI generation
|
|
33
|
+
- Comprehensive test coverage with 131 tests (23 new tests for templates)
|
|
34
|
+
|
|
35
|
+
### Examples
|
|
36
|
+
```bash
|
|
37
|
+
# Personal documents with your name and date
|
|
38
|
+
namewise rename ./documents -t document -n "amirhossein" -d "YYYYMMDD" --dry-run
|
|
39
|
+
# Result: driving-license-amirhossein-20250905.pdf
|
|
40
|
+
|
|
41
|
+
# Movies with auto-detection
|
|
42
|
+
namewise rename ./movies --dry-run
|
|
43
|
+
# Result: the-dark-knight-2008.mkv
|
|
44
|
+
|
|
45
|
+
# Series with season/episode detection
|
|
46
|
+
namewise rename ./shows --dry-run
|
|
47
|
+
# Result: breaking-bad-s01e01.mkv
|
|
48
|
+
|
|
49
|
+
# Music with artist names
|
|
50
|
+
namewise rename ./music -t music --dry-run
|
|
51
|
+
# Result: the-beatles-hey-jude.mp3
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## [0.2.0] - 2025-09-05
|
|
55
|
+
|
|
56
|
+
### Added
|
|
57
|
+
- **Naming Convention Customization**: Added `-c, --case` option to choose naming convention
|
|
58
|
+
- `kebab-case`: lowercase-with-hyphens (default)
|
|
59
|
+
- `snake_case`: lowercase_with_underscores
|
|
60
|
+
- `camelCase`: camelCaseFormat
|
|
61
|
+
- `PascalCase`: PascalCaseFormat
|
|
62
|
+
- `lowercase`: lowercaseformat
|
|
63
|
+
- `UPPERCASE`: UPPERCASEFORMAT
|
|
64
|
+
- AI services now receive naming convention instructions and generate appropriately formatted filenames
|
|
65
|
+
- Enhanced filename sanitization with convention-aware processing
|
|
66
|
+
|
|
67
|
+
### Example Usage
|
|
68
|
+
```bash
|
|
69
|
+
# Use snake_case naming
|
|
70
|
+
namewise rename ./docs --case snake_case --dry-run
|
|
71
|
+
|
|
72
|
+
# Use camelCase naming
|
|
73
|
+
namewise rename ./docs --case camelCase --provider openai
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## [0.1.5] - 2025-09-05
|
|
77
|
+
|
|
78
|
+
### Improved
|
|
79
|
+
- Enhanced CLI user experience with single-line progress display that updates in place
|
|
80
|
+
- Improved results output format: clear `original-name → new-name` display instead of confusing double checkmarks
|
|
81
|
+
- Added progress counter showing current file being processed `(3/7)`
|
|
82
|
+
- Cleaner console output with proper line clearing after processing
|
|
83
|
+
|
|
84
|
+
## [0.1.4] - 2025-09-05
|
|
85
|
+
|
|
86
|
+
### Fixed
|
|
87
|
+
- Fixed console output formatting where `\n` was displayed as literal text instead of newlines
|
|
88
|
+
- Console output now properly displays line breaks for better readability
|
|
89
|
+
|
|
90
|
+
## [0.1.3] - 2025-09-05
|
|
91
|
+
|
|
92
|
+
### Changed
|
|
93
|
+
- Package renamed from `ai-rename` to `namewise` (clearer branding and avoids confusion with existing ai-renamer package)
|
|
94
|
+
- CLI binary name changed from `ai-rename` to `namewise`
|
|
95
|
+
- All documentation and references updated to reflect new name
|
|
96
|
+
|
|
97
|
+
## [0.1.1] - 2025-09-05
|
|
98
|
+
|
|
99
|
+
### Changed
|
|
100
|
+
- Package renamed from `smart-rename` to `ai-rename` (original name was taken on NPM)
|
|
101
|
+
- CLI binary name changed from `smart-rename` to `ai-rename`
|
|
102
|
+
- All documentation and references updated to reflect new name
|
|
103
|
+
|
|
104
|
+
## [0.1.0] - 2025-09-05
|
|
105
|
+
|
|
106
|
+
### Added
|
|
107
|
+
- Initial beta release of AI Rename
|
|
108
|
+
- AI-powered file renaming using Claude or OpenAI
|
|
109
|
+
- Support for PDF, Word, Excel, and text files
|
|
110
|
+
- Dry-run mode for safe previewing
|
|
111
|
+
- File conflict detection and prevention
|
|
112
|
+
- Configurable file size limits
|
|
113
|
+
- Interactive API key prompts
|
|
114
|
+
- Comprehensive test suite (65 tests, 90%+ branch coverage)
|
|
115
|
+
- CLI with intuitive commands and options
|
|
116
|
+
|
|
117
|
+
### Features
|
|
118
|
+
- **Document Parsers**: PDF, DOCX, DOC, XLSX, XLS, TXT, MD, RTF
|
|
119
|
+
- **AI Providers**: Claude (Anthropic) and OpenAI support
|
|
120
|
+
- **Safety Features**: Dry-run mode, conflict detection, error handling
|
|
121
|
+
- **Configuration**: Flexible options for provider, API keys, and file sizes
|
|
122
|
+
|
|
123
|
+
### Technical
|
|
124
|
+
- TypeScript implementation with strict typing
|
|
125
|
+
- ESM module support
|
|
126
|
+
- Node.js 18+ compatibility
|
|
127
|
+
- Vitest testing framework
|
|
128
|
+
- Commander.js CLI framework
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 smart-rename
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|