Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
M
macos-hub-skills
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
郭阔
macos-hub-skills
Commits
fc35d083
Commit
fc35d083
authored
Aug 21, 2026
by
谢宇轩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: make edit --concurrency effective in source-manage
parent
0e739208
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
20 additions
and
5 deletions
+20
-5
source-management.md
skills/news-harvester/references/source-management.md
+1
-1
source-manage.js
skills/news-harvester/scripts/source-manage.js
+19
-4
No files found.
skills/news-harvester/references/source-management.md
View file @
fc35d083
...
@@ -17,7 +17,7 @@ RECIPE ✅ = `helpers/<id>.md` exists (spec-driven fetcher-helper); — = no rec
...
@@ -17,7 +17,7 @@ RECIPE ✅ = `helpers/<id>.md` exists (spec-driven fetcher-helper); — = no rec
## Edit Source
## Edit Source
```
bash
```
bash
node scripts/source-manage.js edit <
id
>
--name
"New Name"
--
u
rl
https://...
--method
browser
node scripts/source-manage.js edit <
id
>
--name
"New Name"
--
homepageU
rl
https://...
--method
browser
```
```
Editable fields:
`name`
,
`homepageUrl`
,
`method`
,
`articleUrlPattern`
,
`vaultFolder`
,
`enabled`
,
`concurrency`
,
`paginate`
.
Editable fields:
`name`
,
`homepageUrl`
,
`method`
,
`articleUrlPattern`
,
`vaultFolder`
,
`enabled`
,
`concurrency`
,
`paginate`
.
...
...
skills/news-harvester/scripts/source-manage.js
View file @
fc35d083
...
@@ -80,13 +80,24 @@ switch (command) {
...
@@ -80,13 +80,24 @@ switch (command) {
const
source
=
config
.
sources
.
find
(
s
=>
s
.
id
===
id
);
const
source
=
config
.
sources
.
find
(
s
=>
s
.
id
===
id
);
if
(
!
source
)
{
console
.
error
(
`Source "
${
id
}
" not found`
);
process
.
exit
(
1
);
}
if
(
!
source
)
{
console
.
error
(
`Source "
${
id
}
" not found`
);
process
.
exit
(
1
);
}
const
editableFields
=
[
'name'
,
'homepageUrl'
,
'method'
,
'articleUrlPattern'
,
'vaultFolder'
,
'enabled'
,
'paginate'
];
const
editableFields
=
[
'name'
,
'homepageUrl'
,
'method'
,
'articleUrlPattern'
,
'vaultFolder'
,
'enabled'
,
'
concurrency'
,
'
paginate'
];
let
changed
=
false
;
let
changed
=
false
;
for
(
const
field
of
editableFields
)
{
for
(
const
field
of
editableFields
)
{
if
(
args
[
field
]
!==
undefined
)
{
if
(
args
[
field
]
!==
undefined
)
{
const
oldVal
=
source
[
field
];
const
oldVal
=
source
[
field
];
source
[
field
]
=
args
[
field
]
===
'true'
?
true
:
args
[
field
]
===
'false'
?
false
:
args
[
field
];
if
(
field
===
'concurrency'
)
{
// parseArgs yields strings; store an integer ≥1 so harvest.js's
// resolveConcurrency sees a real number, not "3".
const
n
=
parseInt
(
args
[
field
],
10
);
if
(
!
Number
.
isInteger
(
n
)
||
n
<
1
)
{
console
.
error
(
` ⚠️ Invalid concurrency "
${
args
[
field
]}
" (must be an integer ≥ 1) — skipped`
);
continue
;
}
source
[
field
]
=
n
;
}
else
{
source
[
field
]
=
args
[
field
]
===
'true'
?
true
:
args
[
field
]
===
'false'
?
false
:
args
[
field
];
}
console
.
log
(
`
${
field
}
:
${
oldVal
}
→
${
source
[
field
]}
`
);
console
.
log
(
`
${
field
}
:
${
oldVal
}
→
${
source
[
field
]}
`
);
changed
=
true
;
changed
=
true
;
}
}
...
@@ -175,10 +186,13 @@ switch (command) {
...
@@ -175,10 +186,13 @@ switch (command) {
paginate
:
false
// pagination switch — set true in config.json to enable multi-page harvesting
paginate
:
false
// pagination switch — set true in config.json to enable multi-page harvesting
};
};
if
(
existing
)
{
if
(
existing
)
{
// Preserve user-set paginate across re-installs; entry.paginate stays as-is for new sources.
// Preserve user-set paginate and concurrency across re-installs; both
// stay at their defaults for new sources.
const
savedPaginate
=
existing
.
paginate
;
const
savedPaginate
=
existing
.
paginate
;
const
savedConcurrency
=
existing
.
concurrency
;
Object
.
assign
(
existing
,
entry
);
Object
.
assign
(
existing
,
entry
);
if
(
savedPaginate
===
true
)
existing
.
paginate
=
true
;
if
(
savedPaginate
===
true
)
existing
.
paginate
=
true
;
if
(
Number
.
isInteger
(
savedConcurrency
)
&&
savedConcurrency
>
1
)
existing
.
concurrency
=
savedConcurrency
;
}
else
{
}
else
{
config
.
sources
.
push
(
entry
);
config
.
sources
.
push
(
entry
);
}
}
...
@@ -206,7 +220,8 @@ switch (command) {
...
@@ -206,7 +220,8 @@ switch (command) {
console
.
log
(
`
console
.
log
(
`
Usage:
Usage:
node source-manage.js list
node source-manage.js list
node source-manage.js edit <id> --name "New Name" --url https://... --method browser
node source-manage.js edit <id> --name "New Name" --homepageUrl https://... --method browser
node source-manage.js edit <id> --concurrency 3 # parallel article fetching (multi-tab)
node source-manage.js edit <id> --paginate true # enable multi-page list harvesting
node source-manage.js edit <id> --paginate true # enable multi-page list harvesting
node source-manage.js enable <id>
node source-manage.js enable <id>
node source-manage.js disable <id>
node source-manage.js disable <id>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment