diff --git a/scripts/core/guide.ts b/scripts/core/guide.ts index 6c9921b7..11f3021f 100644 --- a/scripts/core/guide.ts +++ b/scripts/core/guide.ts @@ -1,6 +1,7 @@ import { Collection, Logger, DateTime, Storage, Zip } from '@freearhey/core' import { Channel } from 'epg-grabber' import { XMLTV } from '../core' +import path from 'path' type GuideProps = { channels: Collection @@ -22,7 +23,7 @@ export class Guide { this.channels = channels this.programs = programs this.logger = logger - this.storage = new Storage() + this.storage = new Storage(path.dirname(filepath)) this.filepath = filepath this.gzip = gzip || false } @@ -43,15 +44,17 @@ export class Guide { }) const xmlFilepath = this.filepath + const xmlFilename = path.basename(xmlFilepath) this.logger.info(` saving to "${xmlFilepath}"...`) - await this.storage.save(xmlFilepath, xmltv.toString()) + await this.storage.save(xmlFilename, xmltv.toString()) if (this.gzip) { const zip = new Zip() const compressed = await zip.compress(xmltv.toString()) const gzFilepath = `${this.filepath}.gz` + const gzFilename = path.basename(gzFilepath) this.logger.info(` saving to "${gzFilepath}"...`) - await this.storage.save(gzFilepath, compressed) + await this.storage.save(gzFilename, compressed) } } } diff --git a/tests/commands/epg/grab.test.ts b/tests/commands/epg/grab.test.ts index caad7708..1c5be77e 100644 --- a/tests/commands/epg/grab.test.ts +++ b/tests/commands/epg/grab.test.ts @@ -17,7 +17,9 @@ beforeEach(() => { describe('epg:grab', () => { it('can grab epg by site name', () => { - const cmd = `${ENV_VAR} npm run grab --- --site=example.com --output=tests/__data__/output/guide.xml` + const cmd = `${ENV_VAR} npm run grab --- --site=example.com --output=${path.resolve( + 'tests/__data__/output/guide.xml' + )}` execSync(cmd, { encoding: 'utf8' }) expect(content('tests/__data__/output/guide.xml')).toEqual( @@ -35,7 +37,9 @@ describe('epg:grab', () => { }) it('can grab epg with gzip option enabled', async () => { - const cmd = `${ENV_VAR} npm run grab --- --channels=tests/__data__/input/epg-grab/sites/**/*.channels.xml --output=tests/__data__/output/guide.xml --gzip` + const cmd = `${ENV_VAR} npm run grab --- --channels=tests/__data__/input/epg-grab/sites/**/*.channels.xml --output=${path.resolve( + 'tests/__data__/output/guide.xml' + )} --gzip` execSync(cmd, { encoding: 'utf8' }) expect(content('tests/__data__/output/guide.xml')).toEqual(