-
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.
Merge pull request #86 from pkgjs/workflow-commands
- Loading branch information
Showing
8 changed files
with
250 additions
and
7 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
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,8 @@ | ||
'use strict' | ||
|
||
exports.desc = 'wiby Github Workflow maintenance tools' | ||
|
||
exports.builder = (yargs) => yargs | ||
.commandDir('./github-workflow') | ||
.demandCommand() | ||
.help() |
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,23 @@ | ||
'use strict' | ||
|
||
const fs = require('fs') | ||
const path = require('path') | ||
|
||
exports.desc = 'Install the bundled versions of the wiby workflows. Will overwrite existing `.github/workflows/wiby.yaml`, if any.' | ||
|
||
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') | ||
|
||
console.log(`Copying ${sourceWibyYaml} to ${workflowsPath}`) | ||
|
||
if (!fs.existsSync(workflowsPath)) { | ||
console.error(`${workflowsPath} folder does not exist.`) | ||
process.exit(1) | ||
} | ||
|
||
fs.copyFileSync(sourceWibyYaml, destWibyYaml) | ||
} |
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. Will exit with zero if .github/workflows/wiby.yaml is up to date, and non-zero if it is outdated.' | ||
|
||
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,67 @@ | ||
'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 install command', async (tap) => { | ||
tap.beforeEach(async () => { | ||
gitFixture.init() | ||
}) | ||
|
||
tap.test('should copy wiby.yaml to the .github/workflows folder', 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) | ||
|
||
childProcess.execSync(`${wibyCommand} github-workflow install`, { | ||
env: { | ||
...process.env, | ||
INIT_CWD: '' | ||
} | ||
}) | ||
|
||
tap.notEqual(fs.readFileSync(wibyYamlPath).toString(), contentsBefore) | ||
}) | ||
|
||
tap.test('should copy wiby.yaml to the $INIT_CWD/.github/workflows folder', async (tap) => { | ||
const initCwd = path.join(process.cwd(), 'some-other-place') | ||
const workflowsPath = path.join(initCwd, '.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) | ||
|
||
childProcess.execSync(`${wibyCommand} github-workflow install`, { | ||
env: { | ||
...process.env, | ||
INIT_CWD: initCwd | ||
} | ||
}) | ||
|
||
tap.notEqual(fs.readFileSync(wibyYamlPath).toString(), contentsBefore) | ||
}) | ||
|
||
tap.test('should throw when the workflows path does not exist', async (tap) => { | ||
try { | ||
childProcess.execSync(`${wibyCommand} github-workflow install`, { | ||
env: { | ||
...process.env, | ||
INIT_CWD: '' | ||
} | ||
}) | ||
tap.fail('Should fail before reaching here') | ||
} catch (err) { | ||
tap.include(err.message, '/.github/workflows folder does not exist.') | ||
} | ||
}) | ||
}) |
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