build: Taskfile improvements · RDFLib/rdflib@6553986 (original) (raw)

``

1

`+

https://taskfile.dev/usage/

`

``

2

`+

https://pkg.go.dev/text/template

`

``

3

`+

https://go-task.github.io/slim-sprig/

`

1

4

`version: "3"

`

2

5

``

3

6

`vars:

`

``

7

`+

TASKFILE_DIR:

`

``

8

`+

sh: pwd

`

4

9

`# The path to the virtual environment to use when using a virtual

`

5

10

`# environment.

`

6

``

`-

VENV_PATH: '{{default ".venv" (env "VENV_PATH")}}'

`

``

11

`+

VENV_PATH: '{{(env "VENV_PATH") | default (osClean (print .TASKFILE_DIR "/.venv"))}}'

`

7

12

`# Non empty string results in tasks using a virtual environment.

`

8

``

`-

WITH_VENV: '{{env "WITH_VENV"}}'

`

``

13

`+

WITH_VENV: '{{env "WITH_VENV" | default "false"}}'

`

9

14

`# The virtual environemtn specific python interpreter to use.

`

10

``

`-

VENV_PYTHON: '{{if (eq OS "windows")}}{{.VENV_PATH}}/Scripts/python.exe{{else}}{{.VENV_PATH}}/bin/python{{end}}'

`

``

15

`+

VENV_BINPREFIX: '{{if (mustFromJson .WITH_VENV)}}{{if (eq OS "windows")}}{{.VENV_PATH}}/Scripts/{{else}}{{.VENV_PATH}}/bin/{{end}}{{end}}'

`

``

16

`+

VENV_PYTHON: '{{if (eq OS "windows")}}{{.VENV_BINPREFIX}}python.exe{{else}}{{.VENV_BINPREFIX}}python{{end}}'

`

11

17

`# The python interpreter to use.

`

12

18

`PYTHON: python

`

13

``

`-

_PYTHON: '{{if .WITH_VENV}}{{.VENV_PYTHON}}{{else}}{{.PYTHON}}{{end}}'

`

14

``

`-

Non empty string results in java being installed as a system dependency.

`

15

``

`-

INSTALL_SYSTEM_DEPS_JAVA: ""

`

16

``

`-

Non empty string results in extras being installed with pip.

`

17

``

`-

INSTALL_PIP_EXTRAS: ""

`

18

``

`-

Non empty string results in extensive tests being ran and dependencies for

`

19

``

`-

extensive tests being installed.

`

20

``

`-

EXTENSIVE: ""

`

``

19

`+

_PYTHON: '{{if (mustFromJson .WITH_VENV)}}{{.VENV_PYTHON}}{{else}}{{.PYTHON}}{{end}}'

`

``

20

`+

Truthish values ("true", "1", etc.) results in java being installed as a

`

``

21

`+

system dependency.

`

``

22

`+

INSTALL_SYSTEM_DEPS_JAVA: "false"

`

``

23

`+

Truthish values ("true", "1", etc.) results in extras being installed with

`

``

24

`+

pip.

`

``

25

`+

INSTALL_PIP_EXTRAS: "false"

`

``

26

`+

Truthish values ("true", "1", etc.) results in extensive tests being ran and

`

``

27

`+

dependencies for extensive tests being installed.

`

``

28

`+

EXTENSIVE: "false"

`

21

29

`# The python version for which tox should run, empty string does not restrict

`

22

30

`# python versions.

`

23

31

`TOX_PYTHON_VERSION: ""

`

24

``

`-

TEST_HARNESS: '{{if (and .EXTENSIVE (not (eq OS "windows")))}}./with-fuseki.sh{{end}} '

`

25

``

`-

A non empty string results in github specific things being done.

`

26

``

`-

WITH_GITHUB_ACTIONS: ""

`

27

``

`-

A non empty string results in coverage being generated for relevant

`

28

``

`-

commands.

`

29

``

`-

WITH_COVERAGE: ""

`

``

32

`+

TEST_HARNESS: '{{if (and (mustFromJson .EXTENSIVE) (not (eq OS "windows")))}}./with-fuseki.sh{{end}} '

`

``

33

`+

Truthish values ("true", "1", etc.) results in github specific things being

`

``

34

`+

done.

`

``

35

`+

WITH_GITHUB_ACTIONS: "false"

`

``

36

`+

Truthish values ("true", "1", etc.) results in coverage being generated for

`

``

37

`+

relevant commands.

`

``

38

`+

WITH_COVERAGE: "false"

`

30

39

``

31

40

`tasks:

`

32

41

`install:system-deps:

`

`@@ -35,27 +44,27 @@ tasks:

`

35

44

` - echo "OS = {{OS}}"

`

36

45

` - echo "ARCH = {{ARCH}}"

`

37

46

` - |

`

38

``

`-

{{if (and .EXTENSIVE (eq OS "linux"))}}

`

``

47

`+

{{if (and (mustFromJson .EXTENSIVE) (eq OS "linux"))}}

`

39

48

` if type apt-get >/dev/null 2>&1

`

40

49

` then

`

41

50

` sudo apt-get install -y libdb-dev

`

42

51

` elif type dnf >/dev/null 2>&1

`

43

52

` then

`

44

53

` sudo dnf install -y libdb-devel

`

45

54

` fi

`

46

``

`-

{{else if (and .EXTENSIVE (eq OS "darwin"))}}

`

``

55

`+

{{else if (and (mustFromJson .EXTENSIVE) (eq OS "darwin"))}}

`

47

56

` brew install berkeley-db@4

`

48

57

` {{end}}

`

49

58

``

50

59

`install:tox:

`

51

60

`desc: Install tox

`

52

61

`cmds:

`

53

``

`-

`

``

62

`+

`

54

63

``

55

64

`install:pip-deps:

`

56

65

`desc: Install pip dependencies

`

57

66

`cmds:

`

58

``

`-

`

``

67

`+

`

59

68

``

60

69

`install:flake8:

`

61

70

`desc: Install flake8 dependencies

`

`@@ -82,6 +91,22 @@ tasks:

`

82

91

` - task: _rimraf

`

83

92

`vars: { _PYTHON: "{{.PYTHON}}", RIMRAF_TARGET: "{{.VENV_PATH}}" }

`

84

93

``

``

94

`+

venv:run:

`

``

95

`+

desc: Run a command inside the venv

`

``

96

`+

cmds:

`

``

97

`+

`

``

98

`+

VIRTUAL_ENV="{{.VENV_PATH}}" PATH="{{.VENV_PATH}}/bin${PATH:+:${PATH}}" {{.CLI_ARGS}}

`

``

99

+

``

100

`+

run:

`

``

101

`+

desc: Run a command. If WITH_VENV is truthish, the command will be run inside the virtual environment.

`

``

102

`+

cmds:

`

``

103

`+

`

``

104

`+

{{if (mustFromJson .WITH_VENV)}}

`

``

105

`+

VIRTUAL_ENV="{{.VENV_PATH}}" PATH="{{.VENV_PATH}}/bin${PATH:+:${PATH}}" {{.CLI_ARGS}}

`

``

106

`+

{{else}}

`

``

107

`+

{{.CLI_ARGS}}

`

``

108

`+

{{end}}

`

``

109

+

85

110

`tox:

`

86

111

`desc: Run tox

`

87

112

`cmds:

`

`@@ -95,36 +120,50 @@ tasks:

`

95

120

` -m tox \

`

96

121

` {{.CLI_ARGS}}

`

97

122

`env:

`

98

``

`-

TOXENV: '{{if .TOX_PYTHON_VERSION}}py{{mustRegexReplaceAll "^([0-9]+)..*" .TOX_PYTHON_VERSION "${1}${2}"}}{{if .EXTENSIVE}}-extensive{{end}}{{.TOXENV_SUFFIX | default ""}}{{end}}'

`

``

123

`+

TOXENV: '{{if .TOX_PYTHON_VERSION}}py{{mustRegexReplaceAll "^([0-9]+)..*" .TOX_PYTHON_VERSION "${1}${2}"}}{{if (mustFromJson .EXTENSIVE)}}-extensive{{end}}{{.TOXENV_SUFFIX | default ""}}{{end}}'

`

99

124

`test:

`

100

125

`desc: Run tests

`

101

126

`cmds:

`

102

``

`-

`

``

127

`+

`

103

128

``

104

129

`flake8:

`

105

130

`desc: Run flake8

`

106

131

`cmds:

`

107

132

` - "{{._PYTHON}} -m flakeheaven lint {{.CLI_ARGS}}"

`

108

133

``

``

134

`+

black:

`

``

135

`+

desc: Run black

`

``

136

`+

cmds:

`

``

137

`+

`

``

138

`+

isort:

`

``

139

`+

desc: Run isort

`

``

140

`+

cmds:

`

``

141

`+

`

``

142

`+

mypy:

`

``

143

`+

desc: Run mypy

`

``

144

`+

cmds:

`

``

145

`+

`

``

146

+

109

147

`lint:fix:

`

110

148

`desc: Fix auto-fixable linting errors

`

111

149

`cmds:

`

112

``

`-

`

113

``

`-

`

``

150

`+

`

``

151

`+

`

114

152

``

115

153

`lint:

`

116

154

`desc: Perform linting

`

117

155

`cmds:

`

118

``

`-

`

119

``

`-

`

``

156

`+

`

``

157

`+

vars: { CHECK: true }

`

``

158

`+

`

``

159

`+

vars: { CHECK: true }

`

120

160

` - task: flake8

`

121

161

``

122

``

-

123

162

`validate:static:

`

124

163

`desc: Perform static validation

`

125

164

`cmds:

`

126

165

` - task: lint

`

127

``

`-

`

``

166

`+

`

128

167

``

129

168

`validate:fix:

`

130

169

`desc: Fix auto-fixable validation errors.

`

`@@ -217,7 +256,7 @@ tasks:

`

217

256

` - task: install:system-deps

`

218

257

` - task: install:tox

`

219

258

`vars:

`

220

``

`-

WITH_GITHUB_ACTIONS: 1

`

``

259

`+

WITH_GITHUB_ACTIONS: true

`

221

260

` - cmd: "{{._PYTHON}} -m pip install coveralls"

`

222

261

` - task: tox

`

223

262

`vars:

`