firespring_dev_commands 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +83 -0
- data/lib/firespring_dev_commands/audit/report/item.rb +33 -0
- data/lib/firespring_dev_commands/audit/report/levels.rb +36 -0
- data/lib/firespring_dev_commands/audit/report.rb +49 -0
- data/lib/firespring_dev_commands/aws/account/info.rb +15 -0
- data/lib/firespring_dev_commands/aws/account.rb +164 -0
- data/lib/firespring_dev_commands/aws/cloudformation/parameters.rb +26 -0
- data/lib/firespring_dev_commands/aws/cloudformation.rb +188 -0
- data/lib/firespring_dev_commands/aws/codepipeline.rb +96 -0
- data/lib/firespring_dev_commands/aws/credentials.rb +136 -0
- data/lib/firespring_dev_commands/aws/login.rb +131 -0
- data/lib/firespring_dev_commands/aws/parameter.rb +32 -0
- data/lib/firespring_dev_commands/aws/profile.rb +55 -0
- data/lib/firespring_dev_commands/aws/s3.rb +42 -0
- data/lib/firespring_dev_commands/aws.rb +10 -0
- data/lib/firespring_dev_commands/boolean.rb +7 -0
- data/lib/firespring_dev_commands/common.rb +112 -0
- data/lib/firespring_dev_commands/daterange.rb +171 -0
- data/lib/firespring_dev_commands/docker/compose.rb +271 -0
- data/lib/firespring_dev_commands/docker/status.rb +38 -0
- data/lib/firespring_dev_commands/docker.rb +276 -0
- data/lib/firespring_dev_commands/dotenv.rb +6 -0
- data/lib/firespring_dev_commands/env.rb +38 -0
- data/lib/firespring_dev_commands/eol/product_version.rb +86 -0
- data/lib/firespring_dev_commands/eol.rb +58 -0
- data/lib/firespring_dev_commands/git/info.rb +13 -0
- data/lib/firespring_dev_commands/git.rb +420 -0
- data/lib/firespring_dev_commands/jira/issue.rb +33 -0
- data/lib/firespring_dev_commands/jira/project.rb +13 -0
- data/lib/firespring_dev_commands/jira/user/type.rb +20 -0
- data/lib/firespring_dev_commands/jira/user.rb +31 -0
- data/lib/firespring_dev_commands/jira.rb +78 -0
- data/lib/firespring_dev_commands/logger.rb +8 -0
- data/lib/firespring_dev_commands/node/audit.rb +39 -0
- data/lib/firespring_dev_commands/node.rb +107 -0
- data/lib/firespring_dev_commands/php/audit.rb +71 -0
- data/lib/firespring_dev_commands/php.rb +109 -0
- data/lib/firespring_dev_commands/rake.rb +24 -0
- data/lib/firespring_dev_commands/ruby/audit.rb +30 -0
- data/lib/firespring_dev_commands/ruby.rb +113 -0
- data/lib/firespring_dev_commands/second.rb +22 -0
- data/lib/firespring_dev_commands/tar/pax_header.rb +49 -0
- data/lib/firespring_dev_commands/tar/type_flag.rb +49 -0
- data/lib/firespring_dev_commands/tar.rb +149 -0
- data/lib/firespring_dev_commands/templates/aws.rb +84 -0
- data/lib/firespring_dev_commands/templates/base_interface.rb +54 -0
- data/lib/firespring_dev_commands/templates/ci.rb +138 -0
- data/lib/firespring_dev_commands/templates/docker/application.rb +177 -0
- data/lib/firespring_dev_commands/templates/docker/default.rb +200 -0
- data/lib/firespring_dev_commands/templates/docker/node/application.rb +145 -0
- data/lib/firespring_dev_commands/templates/docker/php/application.rb +190 -0
- data/lib/firespring_dev_commands/templates/docker/ruby/application.rb +146 -0
- data/lib/firespring_dev_commands/templates/eol.rb +23 -0
- data/lib/firespring_dev_commands/templates/git.rb +147 -0
- data/lib/firespring_dev_commands/version.rb +11 -0
- data/lib/firespring_dev_commands.rb +21 -0
- metadata +436 -0
@@ -0,0 +1,200 @@
|
|
1
|
+
require_relative '../base_interface'
|
2
|
+
|
3
|
+
module Dev
|
4
|
+
module Template
|
5
|
+
# Module containing all default docker rake tasks
|
6
|
+
module Docker
|
7
|
+
# Class containing default rake tasks which are application agnostic (run against all containers)
|
8
|
+
class Default < Dev::Template::BaseInterface
|
9
|
+
# Create the rake task which runs a docker compose build
|
10
|
+
def create_build_task!
|
11
|
+
exclude = @exclude
|
12
|
+
|
13
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
14
|
+
return if exclude.include?(:build)
|
15
|
+
|
16
|
+
desc 'Builds all images used by services in the compose files' \
|
17
|
+
"\n\toptionally specify NO_CACHE=true to not use build cache" \
|
18
|
+
"\n\toptionally specify PULL=true to force pulling new base images"
|
19
|
+
task build: %w(init_docker) do
|
20
|
+
LOG.debug('In base build')
|
21
|
+
Dev::Docker::Compose.new.build
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# Create the rake task which runs a docker compose up
|
27
|
+
def create_up_task!
|
28
|
+
exclude = @exclude
|
29
|
+
|
30
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
31
|
+
return if exclude.include?(:up)
|
32
|
+
|
33
|
+
desc 'Starts containers for all services listed in the compose files' \
|
34
|
+
"\n\toptionally specify DETACHED=false to not detach from the started services"
|
35
|
+
task up: %w(init_docker) do
|
36
|
+
LOG.debug('In base up')
|
37
|
+
Dev::Docker::Compose.new.up
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# Create the rake task which runs a docker compose logs
|
43
|
+
def create_logs_task!
|
44
|
+
exclude = @exclude
|
45
|
+
|
46
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
47
|
+
return if exclude.include?(:logs)
|
48
|
+
|
49
|
+
desc 'Connects to the output stream of all running containers' \
|
50
|
+
"\n\toptionally specify NO_FOLLOW=true to print all current output and exit" \
|
51
|
+
"\n\toptionally specify TAIL=n to print the last 'n' lines of output"
|
52
|
+
task logs: %w(init_docker) do
|
53
|
+
LOG.debug('In base logs')
|
54
|
+
Dev::Docker::Compose.new.logs
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# Create the rake task which runs a docker compose down
|
60
|
+
def create_down_task!
|
61
|
+
exclude = @exclude
|
62
|
+
|
63
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
64
|
+
return if exclude.include?(:down)
|
65
|
+
|
66
|
+
desc 'Stops and removes containers and associated resources' \
|
67
|
+
"\n\toptionally specify REMOVE_VOLUMES=true to also remove unused volumes"
|
68
|
+
task down: %w(init_docker) do
|
69
|
+
LOG.debug('In base down')
|
70
|
+
Dev::Docker::Compose.new.down
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# Create the rake task which runs a docker compose down followed by an up
|
76
|
+
def create_reload_task!
|
77
|
+
exclude = @exclude
|
78
|
+
|
79
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
80
|
+
return if exclude.include?(:reload)
|
81
|
+
|
82
|
+
desc 'Runs a "down" followed by an "up"'
|
83
|
+
task reload: %w(down up) do
|
84
|
+
LOG.debug('In reload')
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
# Create the rake task which runs a docker compose clean
|
90
|
+
def create_clean_task!
|
91
|
+
exclude = @exclude
|
92
|
+
|
93
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
94
|
+
return if exclude.include?(:clean)
|
95
|
+
|
96
|
+
desc 'Removes all stopped containers and unused images, volumes, and networks'
|
97
|
+
task clean: %w(init_docker) do
|
98
|
+
LOG.debug 'In base clean'
|
99
|
+
Dev::Docker.new.prune
|
100
|
+
LOG.info
|
101
|
+
end
|
102
|
+
task prune: [:clean] do
|
103
|
+
# This is an alias to the clean command
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
# Create the rake task which runs a docker compose push
|
109
|
+
def create_push_task!
|
110
|
+
exclude = @exclude
|
111
|
+
|
112
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
113
|
+
return if exclude.include?(:push)
|
114
|
+
|
115
|
+
desc 'Push all local images to their defined image repository'
|
116
|
+
task push: %w(init_docker) do
|
117
|
+
LOG.debug 'In base push'
|
118
|
+
Dev::Docker::Compose.new.push
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
# Create the rake task which runs a docker compose pull
|
124
|
+
def create_pull_task!
|
125
|
+
exclude = @exclude
|
126
|
+
|
127
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
128
|
+
return if exclude.include?(:pull)
|
129
|
+
|
130
|
+
desc 'Pull all images from their defined image repository'
|
131
|
+
task pull: %w(init_docker) do
|
132
|
+
LOG.debug 'In base pull'
|
133
|
+
Dev::Docker::Compose.new.pull
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
# Create the rake task which shows all docker images on the system
|
139
|
+
def create_images_task!
|
140
|
+
exclude = @exclude
|
141
|
+
|
142
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
143
|
+
return if exclude.include?(:images)
|
144
|
+
|
145
|
+
desc 'Print a table of all images' \
|
146
|
+
"\n\t(equivalent to docker images)"
|
147
|
+
task images: %w(init_docker) do
|
148
|
+
Dev::Docker.new.print_images
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
# Create the rake task which shows all docker containers on the system
|
154
|
+
def create_ps_task!
|
155
|
+
exclude = @exclude
|
156
|
+
|
157
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
158
|
+
return if exclude.include?(:ps)
|
159
|
+
|
160
|
+
desc 'Print a table of all running containers' \
|
161
|
+
"\n\t(equivalent to docker ps)"
|
162
|
+
task ps: %w(init_docker) do
|
163
|
+
Dev::Docker.new.print_containers
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
# Create the rake task which shows all docker images on the system
|
169
|
+
def create_images_task!
|
170
|
+
exclude = @exclude
|
171
|
+
|
172
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
173
|
+
unless exclude.include?(:images)
|
174
|
+
desc 'Print a table of all images' \
|
175
|
+
"\n\t(equivalent to docker images)"
|
176
|
+
task images: [:init] do
|
177
|
+
Dev::Docker.new.print_images
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
# Create the rake task which shows all docker containers on the system
|
184
|
+
def create_ps_task!
|
185
|
+
exclude = @exclude
|
186
|
+
|
187
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
188
|
+
unless exclude.include?(:ps)
|
189
|
+
desc 'Print a table of all running containers' \
|
190
|
+
"\n\t(equivalent to docker ps)"
|
191
|
+
task ps: [:init] do
|
192
|
+
Dev::Docker.new.print_containers
|
193
|
+
end
|
194
|
+
end
|
195
|
+
end
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
200
|
+
end
|
@@ -0,0 +1,145 @@
|
|
1
|
+
require_relative '../../base_interface'
|
2
|
+
|
3
|
+
module Dev
|
4
|
+
module Template
|
5
|
+
module Docker
|
6
|
+
# Module for rake tasks associated with node applications
|
7
|
+
module Node
|
8
|
+
# Class for default rake tasks associated with a node project
|
9
|
+
class Application < Dev::Template::ApplicationInterface
|
10
|
+
# Allow for custom container path for the application
|
11
|
+
def initialize(application, container_path: nil, local_path: nil, exclude: [])
|
12
|
+
@node = Dev::Node.new(container_path: container_path, local_path: local_path)
|
13
|
+
super(application, exclude: exclude)
|
14
|
+
end
|
15
|
+
|
16
|
+
# Create the rake task which runs linting for the application name
|
17
|
+
def create_lint_task!
|
18
|
+
application = @name
|
19
|
+
node = @node
|
20
|
+
exclude = @exclude
|
21
|
+
return if exclude.include?(:lint)
|
22
|
+
|
23
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
24
|
+
namespace application do
|
25
|
+
desc 'Run all linting software'
|
26
|
+
task lint: %w(node:lint) do
|
27
|
+
# This is just a placeholder to execute the dependencies
|
28
|
+
end
|
29
|
+
|
30
|
+
namespace :node do
|
31
|
+
desc "Run the node linting software against the #{application}'s codebase"
|
32
|
+
task lint: %w(init_docker up_no_deps) do
|
33
|
+
LOG.debug('Check for node linting errors')
|
34
|
+
|
35
|
+
options = []
|
36
|
+
options << '-T' if Dev::Common.new.running_codebuild?
|
37
|
+
Dev::Docker::Compose.new(services: application, options: options).exec(*node.lint_command)
|
38
|
+
end
|
39
|
+
|
40
|
+
namespace :lint do
|
41
|
+
desc "Run the linting software against the #{application}'s codebase and apply all available fixes"
|
42
|
+
task fix: %w(init_docker up_no_deps) do
|
43
|
+
LOG.debug('Check and fix linting errors')
|
44
|
+
|
45
|
+
options = []
|
46
|
+
options << '-T' if Dev::Common.new.running_codebuild?
|
47
|
+
Dev::Docker::Compose.new(services: application, options: options).exec(*node.lint_fix_command)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# Create the rake task which runs all tests for the application name
|
56
|
+
def create_test_task!
|
57
|
+
application = @name
|
58
|
+
node = @node
|
59
|
+
exclude = @exclude
|
60
|
+
return if exclude.include?(:test)
|
61
|
+
|
62
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
63
|
+
namespace application do
|
64
|
+
desc 'Run all tests'
|
65
|
+
task test: %w(node:test) do
|
66
|
+
# This is just a placeholder to execute the dependencies
|
67
|
+
end
|
68
|
+
|
69
|
+
namespace :node do
|
70
|
+
desc "Run all node tests against the #{application}'s codebase"
|
71
|
+
task test: %w(init_docker up) do
|
72
|
+
LOG.debug("Running all node tests in the #{application} codebase")
|
73
|
+
|
74
|
+
options = []
|
75
|
+
options << '-T' if Dev::Common.new.running_codebuild?
|
76
|
+
Dev::Docker::Compose.new(services: application, options: options).exec(*node.test_command)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
# Create the rake task which runs the install command for the application packages
|
84
|
+
def create_install_task!
|
85
|
+
# Have to set a local variable to be accessible inside of the instance_eval block
|
86
|
+
application = @name
|
87
|
+
node = @node
|
88
|
+
exclude = @exclude
|
89
|
+
return if exclude.include?(:install)
|
90
|
+
|
91
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
92
|
+
namespace application do
|
93
|
+
namespace :node do
|
94
|
+
desc 'Install all npm packages'
|
95
|
+
task install: %w(init_docker up_no_deps) do
|
96
|
+
Dev::Docker::Compose.new(services: application).exec(*node.install_command)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
# Create the rake tasks which runs the security audits of application packages
|
104
|
+
def create_audit_task!
|
105
|
+
# Have to set a local variable to be accessible inside of the instance_eval block
|
106
|
+
application = @name
|
107
|
+
node = @node
|
108
|
+
exclude = @exclude
|
109
|
+
return if exclude.include?(:audit)
|
110
|
+
|
111
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
112
|
+
namespace application do
|
113
|
+
desc 'Run all security audits'
|
114
|
+
task audit: %w(node:audit) do
|
115
|
+
# This is just a placeholder to execute the dependencies
|
116
|
+
end
|
117
|
+
|
118
|
+
namespace :node do
|
119
|
+
desc 'Run NPM Audit on the target application' \
|
120
|
+
"\n\tuse MIN_SEVERITY=(info low moderate high critical) to fetch only severity type selected and above (default=high)." \
|
121
|
+
"\n\tuse IGNORELIST=(comma delimited list of ids) removes the entry from the list."
|
122
|
+
task audit: %w(init_docker up_no_deps) do
|
123
|
+
opts = []
|
124
|
+
opts << '-T' if Dev::Common.new.running_codebuild?
|
125
|
+
|
126
|
+
# Retrieve results of the scan.
|
127
|
+
data = Dev::Docker::Compose.new(services: application, options: opts, capture: true).exec(*node.audit_command)
|
128
|
+
Dev::Node::Audit.new(data).to_report.check
|
129
|
+
end
|
130
|
+
|
131
|
+
namespace :audit do
|
132
|
+
desc 'Run NPM Audit fix command'
|
133
|
+
task fix: %w(init_docker up_no_deps) do
|
134
|
+
Dev::Docker::Compose.new(services: application).exec(*node.audit_fix_command)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
@@ -0,0 +1,190 @@
|
|
1
|
+
require_relative '../../base_interface'
|
2
|
+
|
3
|
+
module Dev
|
4
|
+
module Template
|
5
|
+
module Docker
|
6
|
+
# Module for rake tasks associated with php applications
|
7
|
+
module Php
|
8
|
+
# Class for default rake tasks associated with a php project
|
9
|
+
class Application < Dev::Template::ApplicationInterface
|
10
|
+
# Allow for custom container path for the application
|
11
|
+
def initialize(application, container_path: nil, local_path: nil, exclude: [])
|
12
|
+
@php = Dev::Php.new(container_path: container_path, local_path: local_path)
|
13
|
+
super(application, exclude: exclude)
|
14
|
+
end
|
15
|
+
|
16
|
+
# Create the rake task which downloads the vendor directory to your local system for the given application name
|
17
|
+
def create_vendor_download_task!
|
18
|
+
application = @name
|
19
|
+
php = @php
|
20
|
+
exclude = @exclude
|
21
|
+
return if exclude.include?(:'vendor:download')
|
22
|
+
|
23
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
24
|
+
namespace application do
|
25
|
+
namespace :php do
|
26
|
+
namespace :vendor do
|
27
|
+
desc "Copy #{application} vendor files from the container to your local system"
|
28
|
+
task download: %w(init_docker up_no_deps) do
|
29
|
+
container = Dev::Docker::Compose.new.container_by_name(application)
|
30
|
+
Dev::Docker.new.copy_from_container(container, "#{php.container_path}/vendor/", "#{php.local_path}/vendor/", required: true)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# Create the rake task which uploads the vendor directory from your local system for the given application name
|
39
|
+
def create_vendor_upload_task!
|
40
|
+
application = @name
|
41
|
+
php = @php
|
42
|
+
exclude = @exclude
|
43
|
+
return if exclude.include?(:'vendor:upload')
|
44
|
+
|
45
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
46
|
+
namespace application do
|
47
|
+
namespace :php do
|
48
|
+
namespace :vendor do
|
49
|
+
desc "Copy #{application} vendor files from your local system to the container"
|
50
|
+
task upload: %w(init_docker up_no_deps) do
|
51
|
+
container = Dev::Docker::Compose.new.container_by_name(application)
|
52
|
+
Dev::Docker.new.copy_to_container(container, "#{php.local_path}/vendor/", "#{php.container_path}/vendor/")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# Create the rake task which runs linting for the application name
|
61
|
+
def create_lint_task!
|
62
|
+
application = @name
|
63
|
+
php = @php
|
64
|
+
exclude = @exclude
|
65
|
+
return if exclude.include?(:lint)
|
66
|
+
|
67
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
68
|
+
namespace application do
|
69
|
+
desc 'Run all linting software'
|
70
|
+
task lint: %w(php:lint) do
|
71
|
+
# This is just a placeholder to execute the dependencies
|
72
|
+
end
|
73
|
+
|
74
|
+
namespace :php do
|
75
|
+
desc "Run the php linting software against the #{application}'s codebase"
|
76
|
+
task lint: %w(init_docker up_no_deps) do
|
77
|
+
LOG.debug("Check for php linting errors in the #{application} codebase")
|
78
|
+
|
79
|
+
options = []
|
80
|
+
options << '-T' if Dev::Common.new.running_codebuild?
|
81
|
+
Dev::Docker::Compose.new(services: application, options: options).exec(*php.lint_command)
|
82
|
+
end
|
83
|
+
|
84
|
+
namespace :lint do
|
85
|
+
desc "Run the php linting software against the #{application}'s codebase and apply all available fixes"
|
86
|
+
task fix: %w(init_docker up_no_deps) do
|
87
|
+
LOG.debug("Check and fix all php linting errors in the #{application} codebase")
|
88
|
+
|
89
|
+
options = []
|
90
|
+
options << '-T' if Dev::Common.new.running_codebuild?
|
91
|
+
Dev::Docker::Compose.new(services: application, options: options).exec(*php.lint_fix_command)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
# Create the rake task which runs all tests for the application name
|
100
|
+
def create_test_task!
|
101
|
+
application = @name
|
102
|
+
php = @php
|
103
|
+
exclude = @exclude
|
104
|
+
return if exclude.include?(:test)
|
105
|
+
|
106
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
107
|
+
namespace application do
|
108
|
+
desc 'Run all tests'
|
109
|
+
task test: %w(php:test) do
|
110
|
+
# This is just a placeholder to execute the dependencies
|
111
|
+
end
|
112
|
+
|
113
|
+
namespace :php do
|
114
|
+
desc "Run all php tests against the #{application}'s codebase"
|
115
|
+
task test: %w(init_docker up) do
|
116
|
+
LOG.debug("Running all php tests in the #{application} codebase")
|
117
|
+
|
118
|
+
options = []
|
119
|
+
options << '-T' if Dev::Common.new.running_codebuild?
|
120
|
+
Dev::Docker::Compose.new(services: application, options: options).exec(*php.test_command)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
# Create the rake tasks which runs the install command for the application packages
|
128
|
+
def create_install_task!
|
129
|
+
# Have to set a local variable to be accessible inside of the instance_eval block
|
130
|
+
application = @name
|
131
|
+
php = @php
|
132
|
+
exclude = @exclude
|
133
|
+
return if exclude.include?(:install)
|
134
|
+
|
135
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
136
|
+
namespace application do
|
137
|
+
namespace :php do
|
138
|
+
desc 'Install all npm packages'
|
139
|
+
task install: %w(init_docker up_no_deps) do
|
140
|
+
Dev::Docker::Compose.new(services: application).exec(*php.install_command)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
# Create the rake tasks which runs the security audits for the application packages
|
148
|
+
def create_audit_task!
|
149
|
+
# Have to set a local variable to be accessible inside of the instance_eval block
|
150
|
+
application = @name
|
151
|
+
php = @php
|
152
|
+
exclude = @exclude
|
153
|
+
return if exclude.include?(:audit)
|
154
|
+
|
155
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
156
|
+
namespace application do
|
157
|
+
desc 'Run all security audits'
|
158
|
+
task audit: %w(php:audit) do
|
159
|
+
# This is just a placeholder to execute the dependencies
|
160
|
+
end
|
161
|
+
|
162
|
+
namespace :php do
|
163
|
+
desc 'Run Composer Audit on the target application' \
|
164
|
+
"\n\tuse MIN_SEVERITY=(info low moderate high critical) to fetch only severity type selected and above (default=high)." \
|
165
|
+
"\n\tuse IGNORELIST=(comma delimited list of cwe numbers) removes the entry from the list."
|
166
|
+
task audit: %w(init_docker up_no_deps) do
|
167
|
+
opts = []
|
168
|
+
opts << '-T' if Dev::Common.new.running_codebuild?
|
169
|
+
|
170
|
+
# Retrieve results of the scan.
|
171
|
+
data = Dev::Docker::Compose.new(services: application, options: opts, capture: true).exec(*php.audit_command)
|
172
|
+
Dev::Php::Audit.new(data).to_report.check
|
173
|
+
end
|
174
|
+
|
175
|
+
# namespace :audit do
|
176
|
+
# desc 'Fix the composer vulnerabilities that were found'
|
177
|
+
# task fix: %w(init_docker up_no_deps) do
|
178
|
+
# raise 'not implemented'
|
179
|
+
# # Dev::Docker::Compose.new(services: application).exec(*php.audit_fix_command)
|
180
|
+
# end
|
181
|
+
# end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
@@ -0,0 +1,146 @@
|
|
1
|
+
require_relative '../../base_interface'
|
2
|
+
|
3
|
+
module Dev
|
4
|
+
module Template
|
5
|
+
module Docker
|
6
|
+
# Module for rake tasks associated with ruby applications
|
7
|
+
module Ruby
|
8
|
+
# Class for default rake tasks associated with a ruby project
|
9
|
+
class Application < Dev::Template::ApplicationInterface
|
10
|
+
# Allow for custom container path for the application
|
11
|
+
def initialize(application, container_path: nil, local_path: nil, exclude: [])
|
12
|
+
@ruby = Dev::Ruby.new(container_path: container_path, local_path: local_path)
|
13
|
+
super(application, exclude: exclude)
|
14
|
+
end
|
15
|
+
|
16
|
+
# Create the rake task which runs linting for the application name
|
17
|
+
def create_lint_task!
|
18
|
+
application = @name
|
19
|
+
ruby = @ruby
|
20
|
+
exclude = @exclude
|
21
|
+
return if exclude.include?(:lint)
|
22
|
+
|
23
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
24
|
+
namespace application do
|
25
|
+
desc 'Run all linting software'
|
26
|
+
task lint: %w(ruby:lint) do
|
27
|
+
# This is just a placeholder to execute the dependencies
|
28
|
+
end
|
29
|
+
|
30
|
+
namespace :ruby do
|
31
|
+
desc "Run the ruby linting software against the #{application}'s codebase"
|
32
|
+
task lint: %w(init_docker up_no_deps) do
|
33
|
+
LOG.debug("Check for ruby linting errors in the #{application} codebase")
|
34
|
+
|
35
|
+
options = []
|
36
|
+
options << '-T' if Dev::Common.new.running_codebuild?
|
37
|
+
Dev::Docker::Compose.new(services: application, options: options).exec(*ruby.lint_command)
|
38
|
+
end
|
39
|
+
|
40
|
+
namespace :lint do
|
41
|
+
desc "Run the ruby linting software against the #{application}'s codebase and apply all available fixes"
|
42
|
+
task fix: %w(init_docker up_no_deps) do
|
43
|
+
LOG.debug("Check and fix all ruby linting errors in the #{application} codebase")
|
44
|
+
|
45
|
+
options = []
|
46
|
+
options << '-T' if Dev::Common.new.running_codebuild?
|
47
|
+
Dev::Docker::Compose.new(services: application, options: options).exec(*ruby.lint_fix_command)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# Create the rake task which runs all tests for the application name
|
56
|
+
def create_test_task!
|
57
|
+
application = @name
|
58
|
+
ruby = @ruby
|
59
|
+
exclude = @exclude
|
60
|
+
return if exclude.include?(:test)
|
61
|
+
|
62
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
63
|
+
namespace application do
|
64
|
+
desc 'Run all tests'
|
65
|
+
task test: [:'ruby:test'] do
|
66
|
+
# This is just a placeholder to execute the dependencies
|
67
|
+
end
|
68
|
+
|
69
|
+
namespace :ruby do
|
70
|
+
desc "Run all ruby tests against the #{application}'s codebase"
|
71
|
+
task test: %w(init_docker up_no_deps) do
|
72
|
+
LOG.debug("Running all ruby tests in the #{application} codebase")
|
73
|
+
|
74
|
+
options = []
|
75
|
+
options << '-T' if Dev::Common.new.running_codebuild?
|
76
|
+
Dev::Docker::Compose.new(services: application, options: options).exec(*ruby.test_command)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
# Create the rake task which runs the install command for the application packages
|
84
|
+
def create_install_task!
|
85
|
+
# Have to set a local variable to be accessible inside of the instance_eval block
|
86
|
+
application = @name
|
87
|
+
ruby = @ruby
|
88
|
+
exclude = @exclude
|
89
|
+
return if exclude.include?(:install)
|
90
|
+
|
91
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
92
|
+
namespace application do
|
93
|
+
namespace :ruby do
|
94
|
+
desc 'Install all npm packages'
|
95
|
+
task install: %w(init_docker up_no_deps) do
|
96
|
+
Dev::Docker::Compose.new(services: application).exec(*ruby.install_command)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
# Create the rake task which runs the security audits for the application packages
|
104
|
+
def create_audit_task!
|
105
|
+
# Have to set a local variable to be accessible inside of the instance_eval block
|
106
|
+
application = @name
|
107
|
+
ruby = @ruby
|
108
|
+
exclude = @exclude
|
109
|
+
return if exclude.include?(:audit)
|
110
|
+
|
111
|
+
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
112
|
+
namespace application do
|
113
|
+
desc 'Run all security audits'
|
114
|
+
task audit: [:'ruby:audit'] do
|
115
|
+
# This is just a placeholder to execute the dependencies
|
116
|
+
end
|
117
|
+
|
118
|
+
namespace :ruby do
|
119
|
+
desc 'Run Bundle Audit on the target application' \
|
120
|
+
"\n\tuse MIN_SEVERITY=(info low moderate high critical) to fetch only severity type selected and above (default=high)." \
|
121
|
+
"\n\tuse IGNORELIST=(comma delimited list of ids) removes the entry from the list."
|
122
|
+
task audit: %w(init_docker up_no_deps) do
|
123
|
+
opts = []
|
124
|
+
opts << '-T' if Dev::Common.new.running_codebuild?
|
125
|
+
|
126
|
+
# Retrieve results of the scan.
|
127
|
+
data = Dev::Docker::Compose.new(services: application, options: opts, capture: true).exec(*ruby.audit_command)
|
128
|
+
Dev::Ruby::Audit.new(data).to_report.check
|
129
|
+
end
|
130
|
+
|
131
|
+
# namespace :audit do
|
132
|
+
# desc 'Run NPM Audit fix command'
|
133
|
+
# task fix: %w(init_docker up_no_deps) do
|
134
|
+
# raise 'not implemented'
|
135
|
+
# # Dev::Docker::Compose.new(services: application).exec(*ruby.audit_fix_command)
|
136
|
+
# end
|
137
|
+
# end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|