diff --git a/README.md b/README.md index 5f92eed..bd11897 100644 --- a/README.md +++ b/README.md @@ -365,6 +365,7 @@ end up there. | generateTypeObject | boolean | false | generate type object | | generateEnum | boolean | false | generate enum object | | exportCompleteIconSet | boolean | false | Specifies if the complete icon set should be exported or not (can be very handy for showcases) | +| completeIconSetName | string | completeIconSet | Name of the generated complete icon set (only effective if exportCompleteIconSet is set to true) | | prefix | string | myIcon | prefix for the generated svg constants | | interfaceName | string | MyIcon | name for the generated interface | | modelFileName | string | my-icons | file name of the generated file | diff --git a/package.json b/package.json index 2fe42c5..ebbc812 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,8 @@ "start-files:multiple-source": "ts-node ./src/bin/svg-to-ts-files.ts -s './inputfiles/*.svg' -s 'inputfiles-hyphen/*.svg'", "start-files:customModel": "ts-node ./src/bin/svg-to-ts-files.ts -s './inputfilesRegex/**/*.svg' --modelFileName test-model -t sampleIcon -i SampleIcon", "start-files:custom": "ts-node ./src/bin/svg-to-ts-files.ts -s './inputfiles/*.svg' -o ./dist -t sampleIcon -i SampleIcon -p sampleIcon --modelFileName icons", - "start-files:custom-complete-icon-set": "ts-node ./src/bin/svg-to-ts.ts --conversionType files -s './inputfiles/*.svg' -o ./dist -t sampleIcon -i SampleIcon -p sampleIcon -f icons --exportCompleteIconSet true", + "start-files:custom-complete-icon-set": "ts-node ./src/bin/svg-to-ts-files.ts -s './inputfiles/*.svg' -o ./dist -t sampleIcon -i SampleIcon -p sampleIcon --modelFileName icons --exportCompleteIconSet true", + "start-files:custom-complete-icon-set-name": "ts-node ./src/bin/svg-to-ts-files.ts -s './inputfiles/*.svg' -o ./dist -t sampleIcon --exportCompleteIconSet true --completeIconSetName 'all-icons'", "semantic-release": "semantic-release", "test": "jest --config=./jest.config.js --coverage" }, diff --git a/src/lib/converters/files.converter.ts b/src/lib/converters/files.converter.ts index 6331b3b..747742d 100644 --- a/src/lib/converters/files.converter.ts +++ b/src/lib/converters/files.converter.ts @@ -16,8 +16,6 @@ import { FilesConversionOptions } from '../options/conversion-options/files-conv import { filesProcessor, SvgDefinition } from './shared.converter'; -const completeIconSetFileName = 'complete-icon-set'; - const generateSVGConstants = async ( svgDefinitions: SvgDefinition[], outputDirectory: string, @@ -39,10 +37,11 @@ const generateSVGConstants = async ( const generateCompleteIconSet = async ( svgDefinitions: SvgDefinition[], outputDirectory: string, - iconsFolderName: string + iconsFolderName: string, + completeIconSetName: string ): Promise => { - const completeIconSetContent = generateCompleteIconSetContent(svgDefinitions); - await writeFile(`${outputDirectory}/${iconsFolderName}`, completeIconSetFileName, completeIconSetContent); + const completeIconSetContent = generateCompleteIconSetContent(svgDefinitions, completeIconSetName); + await writeFile(`${outputDirectory}/${iconsFolderName}`, completeIconSetName, completeIconSetContent); }; const generateModelFile = async ( @@ -91,6 +90,7 @@ export const convertToFiles = async (conversionOptions: FilesConversionOptions): interfaceName, compileSources, exportCompleteIconSet, + completeIconSetName, barrelFileName } = conversionOptions; await callAndMonitorAsync( @@ -109,10 +109,10 @@ export const convertToFiles = async (conversionOptions: FilesConversionOptions): if (exportCompleteIconSet) { await callAndMonitorAsync( - generateCompleteIconSet.bind({}, svgDefinitions, outputDirectory, iconsFolderName), + generateCompleteIconSet.bind({}, svgDefinitions, outputDirectory, iconsFolderName, completeIconSetName), 'Export complete icon set' ); - generatedFileNames.push(completeIconSetFileName); + generatedFileNames.push(completeIconSetName); } let indexFileContent = callAndMonitor( diff --git a/src/lib/helpers/complete-icon-set-helper.spec.ts b/src/lib/helpers/complete-icon-set-helper.spec.ts index f7d32aa..e1c6f40 100644 --- a/src/lib/helpers/complete-icon-set-helper.spec.ts +++ b/src/lib/helpers/complete-icon-set-helper.spec.ts @@ -3,6 +3,7 @@ import { unformatedString } from './test-helpers'; describe('Complete Iconset-helper', () => { it('should import all the values and export them as an array', () => { + let completeIconSetName = 'all-icons'; const fileNamesWithDefinitions = [ { variableName: 'foo', prefix: 'sampleIcon', filenameWithoutEnding: 'foo' }, { variableName: 'bar', prefix: 'sampleIcon', filenameWithoutEnding: 'bar' }, @@ -13,9 +14,9 @@ describe('Complete Iconset-helper', () => { import {bar} from './sampleIcon-bar.icon'; import {baz} from './sampleIcon-baz.icon'; - export const completeIconSet = [foo, bar, baz];`; + export const allIcons = [foo, bar, baz];`; - const generatedContent = generateCompleteIconSetContent(fileNamesWithDefinitions); + const generatedContent = generateCompleteIconSetContent(fileNamesWithDefinitions, completeIconSetName); expect(unformatedString(expectedContent)).toEqual(unformatedString(generatedContent)); }); }); diff --git a/src/lib/helpers/complete-icon-set.helper.ts b/src/lib/helpers/complete-icon-set.helper.ts index 276d712..6aea1cc 100644 --- a/src/lib/helpers/complete-icon-set.helper.ts +++ b/src/lib/helpers/complete-icon-set.helper.ts @@ -1,9 +1,14 @@ +import camelCase from 'lodash.camelcase'; + import { SvgDefinition } from '../converters/shared.converter'; import { generateNamedImportStatement } from '../generators/code-snippet-generators'; -export const generateCompleteIconSetContent = (svgDefinitions: SvgDefinition[]): string => { +export const generateCompleteIconSetContent = ( + svgDefinitions: SvgDefinition[], + completeIconSetName: string +): string => { const importSection = generateImportSection(svgDefinitions); - const exportSection = generateExportSection(svgDefinitions); + const exportSection = generateExportSection(svgDefinitions, completeIconSetName); return `${importSection}${exportSection}`; }; @@ -16,7 +21,7 @@ const generateImportSection = (svgDefinitions: SvgDefinition[]): string => return acc; }, ''); -const generateExportSection = (svgDefinitions: SvgDefinition[]): string => +const generateExportSection = (svgDefinitions: SvgDefinition[], completeIconSetName: string): string => svgDefinitions.reduce((acc: string, svgDefinition: SvgDefinition, index: number) => { if (index === svgDefinitions.length - 1) { acc += `${svgDefinition.variableName}];`; @@ -24,4 +29,4 @@ const generateExportSection = (svgDefinitions: SvgDefinition[]): string => acc += `${svgDefinition.variableName},`; } return acc; - }, `export const completeIconSet = [`); + }, `export const ${camelCase(completeIconSetName)} = [`); diff --git a/src/lib/options/commander/file-options.commander.ts b/src/lib/options/commander/file-options.commander.ts index 28ae5c0..9507bcb 100644 --- a/src/lib/options/commander/file-options.commander.ts +++ b/src/lib/options/commander/file-options.commander.ts @@ -71,6 +71,11 @@ export const setupFilesOptionsCommander = () => { 'Specifies if the complete icon set should be exported or not', DEFAULT_FILES_CONVERSION_OPTIONS.exportCompleteIconSet ) + .option( + '--completeIconSetName ', + 'The name of the generated complete icon set file', + DEFAULT_FILES_CONVERSION_OPTIONS.completeIconSetName + ) .option( '--verbose ', 'Specifies if a verbose log message should be printed or not', diff --git a/src/lib/options/conversion-options/constant-conversion-options.ts b/src/lib/options/conversion-options/constant-conversion-options.ts index 1fdec62..7ae2354 100644 --- a/src/lib/options/conversion-options/constant-conversion-options.ts +++ b/src/lib/options/conversion-options/constant-conversion-options.ts @@ -2,18 +2,18 @@ import { Delimiter } from '../../generators/code-snippet-generators'; export interface ConstantsConversionOptions { config?: string; - srcFiles: string[]; - outputDirectory: string; + srcFiles?: string[]; + outputDirectory?: string; svgoConfig?: any; - delimiter: Delimiter; - verbose: boolean; - fileName: string; - typeName: string; - enumName: string; - generateType: boolean; - generateTypeObject: boolean; - generateEnum: boolean; + delimiter?: Delimiter; + verbose?: boolean; + fileName?: string; + typeName?: string; + enumName?: string; + generateType?: boolean; + generateTypeObject?: boolean; + generateEnum?: boolean; exportCompleteIconSet?: boolean; - prefix: string; - interfaceName: string; + prefix?: string; + interfaceName?: string; } diff --git a/src/lib/options/conversion-options/files-conversion-options.ts b/src/lib/options/conversion-options/files-conversion-options.ts index 90760f1..2504cb0 100644 --- a/src/lib/options/conversion-options/files-conversion-options.ts +++ b/src/lib/options/conversion-options/files-conversion-options.ts @@ -2,22 +2,23 @@ import { Delimiter } from '../../generators/code-snippet-generators'; export interface FilesConversionOptions { config?: string; - srcFiles: string[]; - outputDirectory: string; + srcFiles?: string[]; + outputDirectory?: string; svgoConfig?: any; - delimiter: Delimiter; - verbose: boolean; - typeName: string; - generateType: boolean; - generateTypeObject: boolean; - generateEnum: boolean; + delimiter?: Delimiter; + verbose?: boolean; + typeName?: string; + generateType?: boolean; + generateTypeObject?: boolean; + generateEnum?: boolean; exportCompleteIconSet?: boolean; - prefix: string; - interfaceName: string; - enumName: string; - modelFileName: string; - additionalModelOutputPath: string | null; - iconsFolderName: string; - compileSources: boolean; - barrelFileName: string; + completeIconSetName?: string; + prefix?: string; + interfaceName?: string; + enumName?: string; + modelFileName?: string; + additionalModelOutputPath?: string | null; + iconsFolderName?: string; + compileSources?: boolean; + barrelFileName?: string; } diff --git a/src/lib/options/conversion-options/object-conversion-options.ts b/src/lib/options/conversion-options/object-conversion-options.ts index 5baa204..21bd5a8 100644 --- a/src/lib/options/conversion-options/object-conversion-options.ts +++ b/src/lib/options/conversion-options/object-conversion-options.ts @@ -2,11 +2,11 @@ import { Delimiter } from '../../generators/code-snippet-generators'; export interface ObjectConversionOptions { config?: string; - srcFiles: string[]; - outputDirectory: string; + srcFiles?: string[]; + outputDirectory?: string; svgoConfig?: any; - delimiter: Delimiter; - verbose: boolean; - fileName: string; - objectName: string; + delimiter?: Delimiter; + verbose?: boolean; + fileName?: string; + objectName?: string; } diff --git a/src/lib/options/default-options/default-files-conversion-options.ts b/src/lib/options/default-options/default-files-conversion-options.ts index 9614682..450ed2f 100644 --- a/src/lib/options/default-options/default-files-conversion-options.ts +++ b/src/lib/options/default-options/default-files-conversion-options.ts @@ -16,6 +16,7 @@ export const DEFAULT_FILES_CONVERSION_OPTIONS: FilesConversionOptions = { iconsFolderName: 'build', compileSources: false, exportCompleteIconSet: false, + completeIconSetName: 'complete-icon-set', verbose: false, barrelFileName: 'index', delimiter: Delimiter.SNAKE diff --git a/src/lib/options/options-collector/command-line-options-collectors/commandline-files-options.collector.ts b/src/lib/options/options-collector/command-line-options-collectors/commandline-files-options.collector.ts index 758b09e..fee6f4f 100644 --- a/src/lib/options/options-collector/command-line-options-collectors/commandline-files-options.collector.ts +++ b/src/lib/options/options-collector/command-line-options-collectors/commandline-files-options.collector.ts @@ -22,6 +22,7 @@ export const collectCommandLineFileOptions = async (): Promise