Skip to content

Commit 13568fe

Browse files
sscotthoNaiPs
authored andcommitted
Add override flag support
1 parent d7c796e commit 13568fe

File tree

6 files changed

+83
-3
lines changed

6 files changed

+83
-3
lines changed

.github/workflows/e2e.yml

+17
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,23 @@ jobs:
4646
true
4747
shell: bash
4848

49+
test-override:
50+
runs-on: ubuntu-latest
51+
env:
52+
SECRET_1: DONT_OVERRIDE
53+
steps:
54+
- uses: actions/checkout@v3
55+
- name: Export secrets to env variables (override)
56+
uses: ./
57+
with:
58+
override: false
59+
secrets: ${{ toJSON(secrets) }}
60+
- name: Verify secrets to env variables (override)
61+
run: |
62+
[[ "${SECRET_1}" != "DONT_OVERRIDE" ]] && echo "Override test failed" && exit 1
63+
true
64+
shell: bash
65+
4966
test-convert:
5067
runs-on: ubuntu-latest
5168
steps:

README.md

+17
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,23 @@ steps:
113113
- run: echo "Value of PREFIXED_MY_SECRET: $PREFIXED_MY_SECRET"
114114
```
115115

116+
**Override:**
117+
118+
Overrides already existing variables (default is true)
119+
120+
```yaml
121+
env:
122+
MY_SECRET: DONT_OVERRIDE
123+
steps:
124+
- uses: actions/checkout@v3
125+
- uses: oNaiPs/secrets-to-env-action@v1
126+
with:
127+
secrets: ${{ toJSON(secrets) }}
128+
override: false
129+
- run: echo "Value of MY_SECRET: $MY_SECRET"
130+
Value of MY_SECRET: DONT_OVERRIDE
131+
```
132+
116133
**Convert:**
117134

118135
Converts all exported secrets according to a [template](https://github.com/blakeembrey/change-case#core).

__tests__/main.test.ts

+31
Original file line numberDiff line numberDiff line change
@@ -212,4 +212,35 @@ describe('secrets-to-env-action', () => {
212212
PREFIX_my_secret_2: inputSecrets.MY_SECRET_2
213213
})
214214
})
215+
216+
it('overrides variables', () => {
217+
process.env = {
218+
MY_SECRET_1: 'OVERRIDE'
219+
}
220+
221+
mockInputs({
222+
secrets: JSON.stringify(inputSecrets),
223+
override: 'true'
224+
})
225+
main()
226+
227+
expect(newSecrets).toEqual(inputSecrets)
228+
})
229+
230+
it('does not override variables', () => {
231+
process.env = {
232+
MY_SECRET_1: 'DONT_OVERRIDE'
233+
}
234+
235+
mockInputs({
236+
secrets: JSON.stringify(inputSecrets),
237+
override: 'false'
238+
})
239+
main()
240+
241+
const filteredNewSecrets = Object.assign({}, newSecrets)
242+
delete filteredNewSecrets.MY_SECRET_1
243+
244+
expect(newSecrets).toEqual(filteredNewSecrets)
245+
})
215246
})

dist/index.js

+9-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ export default async function run(): Promise<void> {
3232
const convertPrefix = convertPrefixStr.length
3333
? convertPrefixStr === 'true'
3434
: true
35+
const overrideStr: string = core.getInput('override')
36+
const override = overrideStr.length ? overrideStr === 'true' : true
3537

3638
let secrets: Record<string, string>
3739
try {
@@ -89,7 +91,12 @@ with:
8991
}
9092

9193
if (process.env[newKey]) {
92-
core.warning(`Will re-write "${newKey}" environment variable.`)
94+
if (override) {
95+
core.warning(`Will re-write "${newKey}" environment variable.`)
96+
} else {
97+
core.info(`Skip overwriting secret ${newKey}`)
98+
continue
99+
}
93100
}
94101

95102
core.exportVariable(newKey, secrets[key])

0 commit comments

Comments
 (0)