Skip to content

Commit a9b473a

Browse files
committed
apt-get - add retry, apt-get & brew updates
_update_ must be specified when only installing packages
1 parent a94ae52 commit a9b473a

File tree

4 files changed

+71
-34
lines changed

4 files changed

+71
-34
lines changed

README.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,16 @@ Installs Bundler using the code from [ruby/setup-ruby].
3636
3737
### apt: (Ubuntu)
3838
39-
List of packages to install. Space delimited. Including `_upgrade_` will do so. `update` is always done.
39+
List of packages to install. Space delimited. Special options are `_update_`, `_upgrade_`, and `_dist-upgrade_`.
40+
41+
If `_upgrade_` or `_dist-upgrade_` are included, `_update_` will also be done.
42+
43+
If neither is included and you're just installing package(s), `_update_` WILL NOT BE DONE unless it's included.
44+
4045

4146
### brew: (macOS)
4247

43-
List of packages to install. Space delimited. Special options are `_update_` and `_upgrade_`.
48+
List of packages to install. Space delimited. Special options are `_update_` and `_upgrade_`, and both work similar to `apt-get:`.
4449

4550
### mingw: (Windows)
4651

apt.js

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,36 @@ const { execSync } = require('./common')
88
let apt = core.getInput('apt-get').replace(/[^a-z_ \d.-]+/gi, '').trim().toLowerCase()
99

1010
export const run = async () => {
11-
let needUpdate = true
1211
try {
1312
if (apt !== '') {
14-
15-
if (apt.includes('_upgrade_')) {
16-
execSync('sudo apt-get -qy update')
13+
14+
const opts = '-o Acquire::Retries=3'
15+
let needUpdate = true
16+
let needUpgrade = true
17+
18+
if (/\b_update_\b/.test(apt)) {
19+
execSync(`sudo apt-get ${opts} -qy update`)
20+
apt = apt.replace(/\b_update_\b/gi, '').trim()
1721
needUpdate = false
18-
execSync('sudo apt-get -qy dist-upgrade')
22+
}
23+
24+
if (/\b_dist-upgrade_\b/.test(apt)) {
25+
if (needUpdate) { execSync('sudo apt-get -qy update') }
26+
execSync(`sudo apt-get ${opts} -qy dist-upgrade`)
27+
needUpgrade = false
28+
apt = apt.replace(/\b_dist-upgrade_\b/gi, '').trim()
29+
}
30+
31+
if (/\b_upgrade_\b/.test(apt)) {
32+
if (needUpgrade) {
33+
if (needUpdate) { execSync(`sudo apt-get ${opts} -qy update`) }
34+
execSync(`sudo apt-get ${opts} -qy upgrade`)
35+
}
1936
apt = apt.replace(/\b_upgrade_\b/gi, '').trim()
2037
}
2138

2239
if (apt !== '') {
23-
if (needUpdate) { execSync('sudo apt-get -qy update') }
24-
execSync(`sudo apt-get -qy --no-install-recommends install ${apt}`)
40+
execSync(`sudo apt-get ${opts} -qy --no-install-recommends install ${apt}`)
2541
}
2642
}
2743
} catch (error) {

brew.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,20 @@ let brew = core.getInput('brew').replace(/[^a-z_ \d.@-]+/gi, '').trim().toLowerC
1010
export const run = async () => {
1111
try {
1212
if (brew !== '') {
13-
if (brew.includes('_update_')) {
13+
let needUpdate = true
14+
15+
if (/\b_update_\b/.test(brew)) {
1416
execSync('brew update')
17+
needUpdate = false
1518
brew = brew.replace(/\b_update_\b/gi, '').trim()
1619
}
17-
18-
if (brew.includes('_upgrade_')) {
19-
execSync('brew update')
20-
execSync('brew upgrade')
20+
21+
if (/\b_upgrade_\b/.test(brew)) {
22+
if (needUpdate) { execSync('brew update') }
2123
brew = brew.replace(/\b_upgrade_\b/gi, '').trim()
2224
}
23-
24-
if (brew !== '') {
25-
execSync(`brew install ${brew}`)
26-
}
25+
26+
if (brew !== '') { execSync(`brew install ${brew}`) }
2727
}
2828
} catch (error) {
2929
core.setFailed(error.message)

dist/index.js

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -68,20 +68,36 @@ const { execSync } = __webpack_require__(498)
6868
let apt = core.getInput('apt-get').replace(/[^a-z_ \d.-]+/gi, '').trim().toLowerCase()
6969

7070
const run = async () => {
71-
let needUpdate = true
7271
try {
7372
if (apt !== '') {
74-
75-
if (apt.includes('_upgrade_')) {
76-
execSync('sudo apt-get -qy update')
73+
74+
const opts = '-o Acquire::Retries=3'
75+
let needUpdate = true
76+
let needUpgrade = true
77+
78+
if (/\b_update_\b/.test(apt)) {
79+
execSync(`sudo apt-get ${opts} -qy update`)
80+
apt = apt.replace(/\b_update_\b/gi, '').trim()
7781
needUpdate = false
78-
execSync('sudo apt-get -qy dist-upgrade')
82+
}
83+
84+
if (/\b_dist-upgrade_\b/.test(apt)) {
85+
if (needUpdate) { execSync('sudo apt-get -qy update') }
86+
execSync(`sudo apt-get ${opts} -qy dist-upgrade`)
87+
needUpgrade = false
88+
apt = apt.replace(/\b_dist-upgrade_\b/gi, '').trim()
89+
}
90+
91+
if (/\b_upgrade_\b/.test(apt)) {
92+
if (needUpgrade) {
93+
if (needUpdate) { execSync(`sudo apt-get ${opts} -qy update`) }
94+
execSync(`sudo apt-get ${opts} -qy upgrade`)
95+
}
7996
apt = apt.replace(/\b_upgrade_\b/gi, '').trim()
8097
}
8198

8299
if (apt !== '') {
83-
if (needUpdate) { execSync('sudo apt-get -qy update') }
84-
execSync(`sudo apt-get -qy --no-install-recommends install ${apt}`)
100+
execSync(`sudo apt-get ${opts} -qy --no-install-recommends install ${apt}`)
85101
}
86102
}
87103
} catch (error) {
@@ -1777,20 +1793,20 @@ let brew = core.getInput('brew').replace(/[^a-z_ \d.@-]+/gi, '').trim().toLowerC
17771793
const run = async () => {
17781794
try {
17791795
if (brew !== '') {
1780-
if (brew.includes('_update_')) {
1796+
let needUpdate = true
1797+
1798+
if (/\b_update_\b/.test(brew)) {
17811799
execSync('brew update')
1800+
needUpdate = false
17821801
brew = brew.replace(/\b_update_\b/gi, '').trim()
17831802
}
1784-
1785-
if (brew.includes('_upgrade_')) {
1786-
execSync('brew update')
1787-
execSync('brew upgrade')
1803+
1804+
if (/\b_upgrade_\b/.test(brew)) {
1805+
if (needUpdate) { execSync('brew update') }
17881806
brew = brew.replace(/\b_upgrade_\b/gi, '').trim()
17891807
}
1790-
1791-
if (brew !== '') {
1792-
execSync(`brew install ${brew}`)
1793-
}
1808+
1809+
if (brew !== '') { execSync(`brew install ${brew}`) }
17941810
}
17951811
} catch (error) {
17961812
core.setFailed(error.message)

0 commit comments

Comments
 (0)