-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add github-workflow outdated script
- Loading branch information
Showing
4 changed files
with
122 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
'use strict' | ||
|
||
const fs = require('fs') | ||
const path = require('path') | ||
|
||
exports.desc = 'Check if you have the bundled version of wiby Github workflow installed.' | ||
|
||
exports.handler = async (params) => { | ||
const packageRoot = process.env.INIT_CWD || process.cwd() | ||
|
||
const workflowsPath = path.join(packageRoot, '.github', 'workflows') | ||
const sourceWibyYaml = path.join(__dirname, '..', '..', '..', '.github', 'workflows', 'wiby.yaml') | ||
const destWibyYaml = path.join(workflowsPath, 'wiby.yaml') | ||
|
||
if (!fs.existsSync(destWibyYaml)) { | ||
console.error(`${destWibyYaml} not found. Use \`wiby github-workflow install\` to install it.`) | ||
process.exit(1) | ||
} | ||
|
||
const expectedContents = fs.readFileSync(sourceWibyYaml) | ||
const actualContents = fs.readFileSync(destWibyYaml) | ||
|
||
if (Buffer.compare(expectedContents, actualContents) !== 0) { | ||
console.error(`${destWibyYaml} is not the same as the bundled version at ${sourceWibyYaml}. Use \`wiby github-workflow install\` to install it.`) | ||
process.exit(1) | ||
} | ||
|
||
console.log(`${destWibyYaml} is the same as the bundled version.`) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
'use strict' | ||
|
||
const childProcess = require('child_process') | ||
const fs = require('fs') | ||
const path = require('path') | ||
const tap = require('tap') | ||
|
||
const gitFixture = require('../fixtures/git') | ||
|
||
const wibyCommand = path.join(__dirname, '..', '..', 'bin', 'wiby') | ||
|
||
tap.test('github-workflow outdated command', async (tap) => { | ||
tap.beforeEach(async () => { | ||
gitFixture.init() | ||
}) | ||
|
||
tap.test('should fail when wiby.yaml is missing', async (tap) => { | ||
try { | ||
childProcess.execSync(`${wibyCommand} github-workflow outdated`, { | ||
env: { | ||
...process.env, | ||
INIT_CWD: '' | ||
} | ||
}) | ||
tap.fail('Should fail before reaching here') | ||
} catch (err) { | ||
tap.include(err.message, '/.github/workflows/wiby.yaml not found. Use `wiby github-workflow install` to install it.') | ||
} | ||
}) | ||
|
||
tap.test('should fail when wiby.yaml has the wrong contents', async (tap) => { | ||
const workflowsPath = path.join(process.cwd(), '.github', 'workflows') | ||
const wibyYamlPath = path.join(workflowsPath, 'wiby.yaml') | ||
const contentsBefore = 'should be overwritten with new version' | ||
|
||
fs.mkdirSync(workflowsPath, { recursive: true }) | ||
fs.writeFileSync(wibyYamlPath, contentsBefore) | ||
|
||
try { | ||
childProcess.execSync(`${wibyCommand} github-workflow outdated`, { | ||
env: { | ||
...process.env, | ||
INIT_CWD: '' | ||
} | ||
}) | ||
tap.fail('Should fail before reaching here') | ||
} catch (err) { | ||
tap.include(err.message, '/.github/workflows/wiby.yaml is not the same as the bundled version') | ||
} | ||
}) | ||
|
||
tap.test('should pass when wiby.yaml has the same contents', async (tap) => { | ||
const originalContents = fs.readFileSync(path.join(__dirname, '..', '..', '.github', 'workflows', 'wiby.yaml')) | ||
const workflowsPath = path.join(process.cwd(), '.github', 'workflows') | ||
const wibyYamlPath = path.join(workflowsPath, 'wiby.yaml') | ||
|
||
fs.mkdirSync(workflowsPath, { recursive: true }) | ||
fs.writeFileSync(wibyYamlPath, originalContents) | ||
|
||
const result = childProcess.execSync(`${wibyCommand} github-workflow outdated`, { | ||
env: { | ||
...process.env, | ||
INIT_CWD: '' | ||
} | ||
}).toString() | ||
|
||
tap.include(result, 'wiby.yaml is the same as the bundled version.') | ||
}) | ||
|
||
tap.test('should pass when wiby.yaml has the same contents in $INIT_CWD', async (tap) => { | ||
const originalContents = fs.readFileSync(path.join(__dirname, '..', '..', '.github', 'workflows', 'wiby.yaml')) | ||
const initCwd = path.join(process.cwd(), 'some-other-place') | ||
const workflowsPath = path.join(initCwd, '.github', 'workflows') | ||
const wibyYamlPath = path.join(workflowsPath, 'wiby.yaml') | ||
|
||
fs.mkdirSync(workflowsPath, { recursive: true }) | ||
fs.writeFileSync(wibyYamlPath, originalContents) | ||
|
||
const result = childProcess.execSync(`${wibyCommand} github-workflow outdated`, { | ||
env: { | ||
...process.env, | ||
INIT_CWD: initCwd | ||
} | ||
}).toString() | ||
|
||
tap.include(result, 'wiby.yaml is the same as the bundled version.') | ||
}) | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters