mirror of
https://github.com/screenci/screenci.git
synced 2026-09-19 08:57:46 +08:00
fix: install only local version
This commit is contained in:
@@ -76,16 +76,12 @@ jobs:
|
||||
- name: Pack local screenci package
|
||||
run: npm pack
|
||||
|
||||
- name: Set local screenci dependency for init
|
||||
run: node -e "const fs=require('node:fs'); const pkg=require('./package.json'); fs.appendFileSync(process.env.GITHUB_ENV, 'SCREENCI_INIT_SCREENCI_DEPENDENCY=file:../' + pkg.name + '-' + pkg.version + '.tgz\n')"
|
||||
|
||||
- name: Run screenci init
|
||||
run: node scripts/ci-run-in-shell.ts ${{ matrix.shell_name }} node bin/screenci.js init smoke-project --yes --verbose
|
||||
|
||||
- name: Point smoke project to local screenci tarball
|
||||
run: node scripts/ci-change-to-local-screenci-build.ts
|
||||
|
||||
- name: Install smoke project dependencies
|
||||
working-directory: smoke-project
|
||||
run: npm install
|
||||
|
||||
- name: Run screenci test
|
||||
working-directory: smoke-project
|
||||
run: node ../scripts/ci-run-in-shell.ts ${{ matrix.shell_name }} npx screenci test
|
||||
|
||||
+18
@@ -1271,6 +1271,24 @@ describe('CLI', () => {
|
||||
expect(pkgCall?.[1]).not.toContain('"screenci": "file:')
|
||||
})
|
||||
|
||||
it('should use SCREENCI_INIT_SCREENCI_DEPENDENCY when provided', async () => {
|
||||
process.argv = ['node', 'cli.js', 'init', 'my-project']
|
||||
process.env.SCREENCI_INIT_SCREENCI_DEPENDENCY =
|
||||
'file:../screenci-0.0.32.tgz'
|
||||
mockExistsSync.mockReturnValue(false)
|
||||
|
||||
const { main } = await import('./cli')
|
||||
await main()
|
||||
|
||||
const pkgCall = mockWriteFile.mock.calls.find(
|
||||
(c: unknown[]) =>
|
||||
typeof c[0] === 'string' && c[0].endsWith('package.json')
|
||||
)
|
||||
expect(pkgCall?.[1]).toContain(
|
||||
'"screenci": "file:../screenci-0.0.32.tgz"'
|
||||
)
|
||||
})
|
||||
|
||||
it('should use published screenci dependency when init runs through source cli', async () => {
|
||||
const sourceCliPath = `${process.cwd()}/cli.ts`
|
||||
process.argv = ['node', sourceCliPath, 'init', 'my-project']
|
||||
|
||||
@@ -1606,6 +1606,10 @@ function getInitProjectRoot(): string {
|
||||
return process.env['SCREENCI_INIT_CWD'] ?? process.cwd()
|
||||
}
|
||||
|
||||
function getInitScreenciDependencyOverride(): string | undefined {
|
||||
return process.env['SCREENCI_INIT_SCREENCI_DEPENDENCY']
|
||||
}
|
||||
|
||||
export async function ensureScreenciSecret(): Promise<string | undefined> {
|
||||
const existingSecret = process.env.SCREENCI_SECRET
|
||||
if (existingSecret) return existingSecret
|
||||
@@ -1721,7 +1725,8 @@ async function runInit(
|
||||
'-y',
|
||||
]
|
||||
const skillsCommand = `npx ${skillsArgs.join(' ')}`
|
||||
const screenciDependency = await readCurrentScreenciVersion()
|
||||
const screenciDependency =
|
||||
getInitScreenciDependencyOverride() ?? (await readCurrentScreenciVersion())
|
||||
|
||||
await mkdir(resolve(projectDir, 'videos'), { recursive: true })
|
||||
if (shouldAddGithubActionCi) {
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
import { readFile, writeFile } from 'node:fs/promises'
|
||||
import { resolve } from 'node:path'
|
||||
async function updateProjectToUseLocalTarball(
|
||||
projectDir: string,
|
||||
packageRoot: string
|
||||
): Promise<void> {
|
||||
const packageJsonPath = resolve(packageRoot, 'package.json')
|
||||
const projectPackageJsonPath = resolve(projectDir, 'package.json')
|
||||
|
||||
const packageJson = JSON.parse(await readFile(packageJsonPath, 'utf8')) as {
|
||||
name: string
|
||||
version: string
|
||||
}
|
||||
|
||||
const projectPackageJson = JSON.parse(
|
||||
await readFile(projectPackageJsonPath, 'utf8')
|
||||
) as {
|
||||
dependencies?: Record<string, string>
|
||||
}
|
||||
|
||||
const tarballName = `${packageJson.name}-${packageJson.version}.tgz`
|
||||
projectPackageJson.dependencies ??= {}
|
||||
projectPackageJson.dependencies['screenci'] = `file:../${tarballName}`
|
||||
|
||||
await writeFile(
|
||||
projectPackageJsonPath,
|
||||
JSON.stringify(projectPackageJson, null, 2) + '\n'
|
||||
)
|
||||
}
|
||||
|
||||
async function main(): Promise<void> {
|
||||
const packageRoot = process.cwd()
|
||||
const projectDir = resolve(packageRoot, 'smoke-project')
|
||||
|
||||
await updateProjectToUseLocalTarball(projectDir, packageRoot)
|
||||
}
|
||||
|
||||
main().catch((error: unknown) => {
|
||||
const message = error instanceof Error ? error.message : String(error)
|
||||
console.error(message)
|
||||
process.exit(1)
|
||||
})
|
||||
Reference in New Issue
Block a user