1- import { Command } from 'commander'
1+ import { Command , Option } from 'commander'
22import { runAdd } from '../add/add.js'
33import type { AddOptions } from '../add/types.js'
44import { MIN_RUNWAY_DAYS } from '../common/constants.js'
@@ -10,30 +10,59 @@ export const addCommand = new Command('add')
1010 . argument ( '<path>' , 'Path to the file or directory to add' )
1111 . option ( '--bare' , 'Add file without directory wrapper (files only, not supported for directories)' )
1212 . option ( '--auto-fund' , `Automatically ensure minimum ${ MIN_RUNWAY_DAYS } days of runway before upload` )
13- . action ( async ( path : string , options ) => {
14- try {
15- const {
16- metadata : _metadata ,
17- dataSetMetadata : _dataSetMetadata ,
18- datasetMetadata : _datasetMetadata ,
19- '8004Type' : _erc8004Type ,
20- '8004Agent' : _erc8004Agent ,
21- ...addOptionsFromCli
22- } = options
23- const { pieceMetadata, dataSetMetadata } = resolveMetadataOptions ( options , { includeErc8004 : true } )
24-
25- const addOptions : AddOptions = {
26- ...addOptionsFromCli ,
27- filePath : path ,
28- ...( pieceMetadata && { pieceMetadata } ) ,
29- ...( dataSetMetadata && { dataSetMetadata } ) ,
13+
14+ // Add data set selection options
15+ addCommand . addOption (
16+ new Option ( '--data-set <id>' , 'ID of the existing data set to use' ) . conflicts ( [ 'newDataSet' , 'new-data-set' ] )
17+ )
18+
19+ addCommand . addOption (
20+ new Option ( '--new-data-set' , 'Create a new data set instead of using an existing one' ) . conflicts ( [
21+ 'dataSet' ,
22+ 'data-set' ,
23+ ] )
24+ )
25+
26+ addCommand . action ( async ( path : string , options : any ) => {
27+ try {
28+ const {
29+ metadata : _metadata ,
30+ dataSetMetadata : _dataSetMetadata ,
31+ datasetMetadata : _datasetMetadata ,
32+ '8004Type' : _erc8004Type ,
33+ '8004Agent' : _erc8004Agent ,
34+ dataSet,
35+ newDataSet,
36+ ...addOptionsFromCli
37+ } = options
38+ const { pieceMetadata, dataSetMetadata } = resolveMetadataOptions ( options , { includeErc8004 : true } )
39+
40+ // Normalize dataSet ID
41+ const rawDataSetId = dataSet
42+ let dataSetId : number | undefined
43+
44+ if ( rawDataSetId ) {
45+ dataSetId = parseInt ( rawDataSetId , 10 )
46+ if ( Number . isNaN ( dataSetId ) || dataSetId < 0 || dataSetId . toString ( ) !== rawDataSetId ) {
47+ console . error ( 'Error: Data set ID must be a valid positive integer' )
48+ process . exit ( 1 )
3049 }
50+ }
3151
32- await runAdd ( addOptions )
33- } catch {
34- process . exit ( 1 )
52+ const addOptions : AddOptions = {
53+ ...addOptionsFromCli ,
54+ filePath : path ,
55+ ...( dataSetId !== undefined && { dataSetId } ) ,
56+ ...( newDataSet && { createNewDataSet : true } ) ,
57+ ...( pieceMetadata && { pieceMetadata } ) ,
58+ ...( dataSetMetadata && { dataSetMetadata } ) ,
3559 }
36- } )
60+
61+ await runAdd ( addOptions )
62+ } catch {
63+ process . exit ( 1 )
64+ }
65+ } )
3766
3867addAuthOptions ( addCommand )
3968addProviderOptions ( addCommand )
0 commit comments