Do not assume action.yml exists
This commit is contained in:
@@ -51,7 +51,7 @@ jobs:
|
|||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
- name: Publish
|
- name: Publish
|
||||||
id: publish
|
id: publish
|
||||||
uses: actions/publish-immutable-action@0.0.2
|
uses: actions/publish-immutable-action@0.0.3
|
||||||
```
|
```
|
||||||
<!-- end usage -->
|
<!-- end usage -->
|
||||||
|
|
||||||
|
|||||||
@@ -24,12 +24,6 @@ describe('stageActionFiles', () => {
|
|||||||
fs.rmSync(stagingDir, { recursive: true })
|
fs.rmSync(stagingDir, { recursive: true })
|
||||||
})
|
})
|
||||||
|
|
||||||
it('returns an error if no action.yml file is present', () => {
|
|
||||||
expect(() => fsHelper.stageActionFiles(sourceDir, stagingDir)).toThrow(
|
|
||||||
/^No action.yml or action.yaml file found in source repository/
|
|
||||||
)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('copies all files (excluding the .git folder) to the staging directory', () => {
|
it('copies all files (excluding the .git folder) to the staging directory', () => {
|
||||||
fs.writeFileSync(`${sourceDir}/action.yml`, fileContent)
|
fs.writeFileSync(`${sourceDir}/action.yml`, fileContent)
|
||||||
|
|
||||||
@@ -50,23 +44,6 @@ describe('stageActionFiles', () => {
|
|||||||
// .git folder is not copied
|
// .git folder is not copied
|
||||||
expect(fs.existsSync(`${stagingDir}/.git`)).toBe(false)
|
expect(fs.existsSync(`${stagingDir}/.git`)).toBe(false)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('copies all files (excluding the .git folder) to the staging directory, even if action.yml is in a subdirectory', () => {
|
|
||||||
fs.mkdirSync(`${sourceDir}/my-sub-action`, { recursive: true })
|
|
||||||
fs.writeFileSync(`${sourceDir}/my-sub-action/action.yml`, fileContent)
|
|
||||||
|
|
||||||
fsHelper.stageActionFiles(sourceDir, stagingDir)
|
|
||||||
expect(fs.existsSync(`${stagingDir}/src/main.js`)).toBe(true)
|
|
||||||
expect(fs.existsSync(`${stagingDir}/src/other.js`)).toBe(true)
|
|
||||||
expect(fs.existsSync(`${stagingDir}/my-sub-action/action.yml`)).toBe(true)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('accepts action.yaml as a valid action file as well as action.yml', () => {
|
|
||||||
fs.writeFileSync(`${sourceDir}/action.yaml`, fileContent)
|
|
||||||
|
|
||||||
fsHelper.stageActionFiles(sourceDir, stagingDir)
|
|
||||||
expect(fs.existsSync(`${stagingDir}/action.yaml`)).toBe(true)
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('createArchives', () => {
|
describe('createArchives', () => {
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="110" height="20" role="img" aria-label="Coverage: 97.1%"><title>Coverage: 97.1%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="110" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="63" height="20" fill="#555"/><rect x="63" width="47" height="20" fill="#4c1"/><rect width="110" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="325" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="530">Coverage</text><text x="325" y="140" transform="scale(.1)" fill="#fff" textLength="530">Coverage</text><text aria-hidden="true" x="855" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="370">97.1%</text><text x="855" y="140" transform="scale(.1)" fill="#fff" textLength="370">97.1%</text></g></svg>
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="116" height="20" role="img" aria-label="Coverage: 97.06%"><title>Coverage: 97.06%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="116" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="63" height="20" fill="#555"/><rect x="63" width="53" height="20" fill="#4c1"/><rect width="116" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="325" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="530">Coverage</text><text x="325" y="140" transform="scale(.1)" fill="#fff" textLength="530">Coverage</text><text aria-hidden="true" x="885" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">97.06%</text><text x="885" y="140" transform="scale(.1)" fill="#fff" textLength="430">97.06%</text></g></svg>
|
||||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
-8
@@ -106597,15 +106597,10 @@ function readFileContents(filePath) {
|
|||||||
return fs.readFileSync(filePath);
|
return fs.readFileSync(filePath);
|
||||||
}
|
}
|
||||||
// Copy actions files from sourceDir to targetDir, excluding the .git folder.
|
// Copy actions files from sourceDir to targetDir, excluding the .git folder.
|
||||||
// Errors if the repo appears to not contain any action files, such as an action.yml file
|
|
||||||
function stageActionFiles(actionDir, targetDir) {
|
function stageActionFiles(actionDir, targetDir) {
|
||||||
let actionYmlFound = false;
|
|
||||||
fs_extra_1.default.copySync(actionDir, targetDir, {
|
fs_extra_1.default.copySync(actionDir, targetDir, {
|
||||||
filter: (src) => {
|
filter: (src) => {
|
||||||
const basename = path.basename(src);
|
const basename = path.basename(src);
|
||||||
if (basename === 'action.yml' || basename === 'action.yaml') {
|
|
||||||
actionYmlFound = true;
|
|
||||||
}
|
|
||||||
// Filter out the .git folder.
|
// Filter out the .git folder.
|
||||||
if (basename === '.git') {
|
if (basename === '.git') {
|
||||||
return false;
|
return false;
|
||||||
@@ -106613,9 +106608,6 @@ function stageActionFiles(actionDir, targetDir) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (!actionYmlFound) {
|
|
||||||
throw new Error(`No action.yml or action.yaml file found in source repository`);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// Ensure the correct SHA is checked out for the tag by inspecting the git metadata in the workspace
|
// Ensure the correct SHA is checked out for the tag by inspecting the git metadata in the workspace
|
||||||
// and comparing it to the information actions provided us.
|
// and comparing it to the information actions provided us.
|
||||||
|
|||||||
@@ -91,18 +91,11 @@ export function readFileContents(filePath: string): Buffer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Copy actions files from sourceDir to targetDir, excluding the .git folder.
|
// Copy actions files from sourceDir to targetDir, excluding the .git folder.
|
||||||
// Errors if the repo appears to not contain any action files, such as an action.yml file
|
|
||||||
export function stageActionFiles(actionDir: string, targetDir: string): void {
|
export function stageActionFiles(actionDir: string, targetDir: string): void {
|
||||||
let actionYmlFound = false
|
|
||||||
|
|
||||||
fsExtra.copySync(actionDir, targetDir, {
|
fsExtra.copySync(actionDir, targetDir, {
|
||||||
filter: (src: string) => {
|
filter: (src: string) => {
|
||||||
const basename = path.basename(src)
|
const basename = path.basename(src)
|
||||||
|
|
||||||
if (basename === 'action.yml' || basename === 'action.yaml') {
|
|
||||||
actionYmlFound = true
|
|
||||||
}
|
|
||||||
|
|
||||||
// Filter out the .git folder.
|
// Filter out the .git folder.
|
||||||
if (basename === '.git') {
|
if (basename === '.git') {
|
||||||
return false
|
return false
|
||||||
@@ -111,12 +104,6 @@ export function stageActionFiles(actionDir: string, targetDir: string): void {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
if (!actionYmlFound) {
|
|
||||||
throw new Error(
|
|
||||||
`No action.yml or action.yaml file found in source repository`
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure the correct SHA is checked out for the tag by inspecting the git metadata in the workspace
|
// Ensure the correct SHA is checked out for the tag by inspecting the git metadata in the workspace
|
||||||
|
|||||||
Reference in New Issue
Block a user