inspec 2.0.16 → 2.0.17
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 +4 -4
- data/.rubocop.yml +101 -101
- data/CHANGELOG.md +2949 -2944
- data/Gemfile +55 -55
- data/LICENSE +14 -14
- data/MAINTAINERS.md +31 -31
- data/MAINTAINERS.toml +47 -47
- data/README.md +438 -438
- data/Rakefile +284 -284
- data/bin/inspec +12 -12
- data/docs/.gitignore +2 -2
- data/docs/README.md +40 -40
- data/docs/dsl_inspec.md +258 -258
- data/docs/dsl_resource.md +93 -93
- data/docs/glossary.md +99 -99
- data/docs/habitat.md +191 -191
- data/docs/inspec_and_friends.md +107 -107
- data/docs/matchers.md +165 -165
- data/docs/migration.md +293 -293
- data/docs/platforms.md +118 -118
- data/docs/plugin_kitchen_inspec.md +49 -49
- data/docs/profiles.md +370 -370
- data/docs/reporters.md +105 -105
- data/docs/resources/aide_conf.md.erb +75 -75
- data/docs/resources/apache.md.erb +67 -67
- data/docs/resources/apache_conf.md.erb +68 -68
- data/docs/resources/apt.md.erb +71 -71
- data/docs/resources/audit_policy.md.erb +47 -47
- data/docs/resources/auditd.md.erb +79 -79
- data/docs/resources/auditd_conf.md.erb +68 -68
- data/docs/resources/aws_cloudtrail_trail.md.erb +140 -140
- data/docs/resources/aws_cloudtrail_trails.md.erb +81 -81
- data/docs/resources/aws_cloudwatch_alarm.md.erb +86 -86
- data/docs/resources/aws_cloudwatch_log_metric_filter.md.erb +151 -151
- data/docs/resources/aws_ec2_instance.md.erb +106 -106
- data/docs/resources/aws_iam_access_key.md.erb +123 -123
- data/docs/resources/aws_iam_access_keys.md.erb +198 -198
- data/docs/resources/aws_iam_group.md.erb +46 -46
- data/docs/resources/aws_iam_groups.md.erb +43 -43
- data/docs/resources/aws_iam_password_policy.md.erb +76 -76
- data/docs/resources/aws_iam_policies.md.erb +82 -82
- data/docs/resources/aws_iam_policy.md.erb +146 -146
- data/docs/resources/aws_iam_role.md.erb +65 -65
- data/docs/resources/aws_iam_root_user.md.erb +58 -58
- data/docs/resources/aws_iam_user.md.erb +64 -64
- data/docs/resources/aws_iam_users.md.erb +89 -89
- data/docs/resources/aws_kms_keys.md.erb +84 -84
- data/docs/resources/aws_route_table.md.erb +47 -47
- data/docs/resources/aws_s3_bucket.md.erb +134 -134
- data/docs/resources/aws_security_group.md.erb +152 -152
- data/docs/resources/aws_security_groups.md.erb +92 -92
- data/docs/resources/aws_sns_topic.md.erb +62 -62
- data/docs/resources/aws_subnet.md.erb +133 -133
- data/docs/resources/aws_subnets.md.erb +126 -126
- data/docs/resources/aws_vpc.md.erb +120 -120
- data/docs/resources/aws_vpcs.md.erb +48 -48
- data/docs/resources/azure_generic_resource.md.erb +170 -139
- data/docs/resources/azure_resource_group.md.erb +284 -284
- data/docs/resources/azure_virtual_machine.md.erb +347 -314
- data/docs/resources/azure_virtual_machine_data_disk.md.erb +224 -182
- data/docs/resources/bash.md.erb +75 -75
- data/docs/resources/bond.md.erb +90 -90
- data/docs/resources/bridge.md.erb +57 -57
- data/docs/resources/bsd_service.md.erb +67 -67
- data/docs/resources/command.md.erb +138 -138
- data/docs/resources/cpan.md.erb +79 -79
- data/docs/resources/cran.md.erb +64 -64
- data/docs/resources/crontab.md.erb +88 -88
- data/docs/resources/csv.md.erb +54 -54
- data/docs/resources/dh_params.md.erb +217 -217
- data/docs/resources/directory.md.erb +30 -30
- data/docs/resources/docker.md.erb +164 -164
- data/docs/resources/docker_container.md.erb +104 -104
- data/docs/resources/docker_image.md.erb +94 -94
- data/docs/resources/docker_service.md.erb +114 -114
- data/docs/resources/elasticsearch.md.erb +242 -242
- data/docs/resources/etc_fstab.md.erb +125 -125
- data/docs/resources/etc_group.md.erb +75 -75
- data/docs/resources/etc_hosts.md.erb +78 -78
- data/docs/resources/etc_hosts_allow.md.erb +74 -74
- data/docs/resources/etc_hosts_deny.md.erb +74 -74
- data/docs/resources/file.md.erb +515 -515
- data/docs/resources/filesystem.md.erb +41 -41
- data/docs/resources/firewalld.md.erb +107 -107
- data/docs/resources/gem.md.erb +79 -79
- data/docs/resources/group.md.erb +61 -61
- data/docs/resources/grub_conf.md.erb +101 -101
- data/docs/resources/host.md.erb +78 -78
- data/docs/resources/http.md.erb +101 -101
- data/docs/resources/iis_app.md.erb +122 -122
- data/docs/resources/iis_site.md.erb +135 -135
- data/docs/resources/inetd_conf.md.erb +94 -94
- data/docs/resources/ini.md.erb +76 -76
- data/docs/resources/interface.md.erb +58 -58
- data/docs/resources/iptables.md.erb +64 -64
- data/docs/resources/json.md.erb +62 -62
- data/docs/resources/kernel_module.md.erb +107 -107
- data/docs/resources/kernel_parameter.md.erb +53 -53
- data/docs/resources/key_rsa.md.erb +85 -85
- data/docs/resources/launchd_service.md.erb +57 -57
- data/docs/resources/limits_conf.md.erb +75 -75
- data/docs/resources/login_def.md.erb +71 -71
- data/docs/resources/mount.md.erb +69 -69
- data/docs/resources/mssql_session.md.erb +60 -60
- data/docs/resources/mysql_conf.md.erb +99 -99
- data/docs/resources/mysql_session.md.erb +74 -74
- data/docs/resources/nginx.md.erb +79 -79
- data/docs/resources/nginx_conf.md.erb +128 -128
- data/docs/resources/npm.md.erb +60 -60
- data/docs/resources/ntp_conf.md.erb +60 -60
- data/docs/resources/oneget.md.erb +53 -53
- data/docs/resources/oracledb_session.md.erb +52 -52
- data/docs/resources/os.md.erb +141 -141
- data/docs/resources/os_env.md.erb +78 -78
- data/docs/resources/package.md.erb +120 -120
- data/docs/resources/packages.md.erb +67 -67
- data/docs/resources/parse_config.md.erb +103 -103
- data/docs/resources/parse_config_file.md.erb +138 -138
- data/docs/resources/passwd.md.erb +141 -141
- data/docs/resources/pip.md.erb +67 -67
- data/docs/resources/port.md.erb +137 -137
- data/docs/resources/postgres_conf.md.erb +79 -79
- data/docs/resources/postgres_hba_conf.md.erb +93 -93
- data/docs/resources/postgres_ident_conf.md.erb +76 -76
- data/docs/resources/postgres_session.md.erb +69 -69
- data/docs/resources/powershell.md.erb +102 -102
- data/docs/resources/processes.md.erb +109 -109
- data/docs/resources/rabbitmq_config.md.erb +41 -41
- data/docs/resources/registry_key.md.erb +158 -158
- data/docs/resources/runit_service.md.erb +57 -57
- data/docs/resources/security_policy.md.erb +47 -47
- data/docs/resources/service.md.erb +121 -121
- data/docs/resources/shadow.md.erb +144 -144
- data/docs/resources/ssh_config.md.erb +80 -80
- data/docs/resources/sshd_config.md.erb +83 -83
- data/docs/resources/ssl.md.erb +119 -119
- data/docs/resources/sys_info.md.erb +42 -42
- data/docs/resources/systemd_service.md.erb +57 -57
- data/docs/resources/sysv_service.md.erb +57 -57
- data/docs/resources/upstart_service.md.erb +57 -57
- data/docs/resources/user.md.erb +140 -140
- data/docs/resources/users.md.erb +127 -127
- data/docs/resources/vbscript.md.erb +55 -55
- data/docs/resources/virtualization.md.erb +57 -57
- data/docs/resources/windows_feature.md.erb +47 -47
- data/docs/resources/windows_hotfix.md.erb +53 -53
- data/docs/resources/windows_task.md.erb +95 -95
- data/docs/resources/wmi.md.erb +81 -81
- data/docs/resources/x509_certificate.md.erb +151 -151
- data/docs/resources/xinetd_conf.md.erb +156 -156
- data/docs/resources/xml.md.erb +85 -85
- data/docs/resources/yaml.md.erb +69 -69
- data/docs/resources/yum.md.erb +98 -98
- data/docs/resources/zfs_dataset.md.erb +53 -53
- data/docs/resources/zfs_pool.md.erb +47 -47
- data/docs/ruby_usage.md +203 -203
- data/docs/shared/matcher_be.md.erb +1 -1
- data/docs/shared/matcher_cmp.md.erb +43 -43
- data/docs/shared/matcher_eq.md.erb +3 -3
- data/docs/shared/matcher_include.md.erb +1 -1
- data/docs/shared/matcher_match.md.erb +1 -1
- data/docs/shell.md +172 -172
- data/examples/README.md +8 -8
- data/examples/inheritance/README.md +65 -65
- data/examples/inheritance/controls/example.rb +14 -14
- data/examples/inheritance/inspec.yml +15 -15
- data/examples/kitchen-ansible/.kitchen.yml +25 -25
- data/examples/kitchen-ansible/Gemfile +19 -19
- data/examples/kitchen-ansible/README.md +53 -53
- data/examples/kitchen-ansible/files/nginx.repo +6 -6
- data/examples/kitchen-ansible/tasks/main.yml +16 -16
- data/examples/kitchen-ansible/test/integration/default/default.yml +5 -5
- data/examples/kitchen-ansible/test/integration/default/web_spec.rb +28 -28
- data/examples/kitchen-chef/.kitchen.yml +20 -20
- data/examples/kitchen-chef/Berksfile +3 -3
- data/examples/kitchen-chef/Gemfile +19 -19
- data/examples/kitchen-chef/README.md +27 -27
- data/examples/kitchen-chef/metadata.rb +7 -7
- data/examples/kitchen-chef/recipes/default.rb +6 -6
- data/examples/kitchen-chef/recipes/nginx.rb +30 -30
- data/examples/kitchen-chef/test/integration/default/web_spec.rb +28 -28
- data/examples/kitchen-puppet/.kitchen.yml +22 -22
- data/examples/kitchen-puppet/Gemfile +20 -20
- data/examples/kitchen-puppet/Puppetfile +25 -25
- data/examples/kitchen-puppet/README.md +53 -53
- data/examples/kitchen-puppet/manifests/site.pp +33 -33
- data/examples/kitchen-puppet/metadata.json +11 -11
- data/examples/kitchen-puppet/test/integration/default/web_spec.rb +28 -28
- data/examples/meta-profile/README.md +37 -37
- data/examples/meta-profile/controls/example.rb +13 -13
- data/examples/meta-profile/inspec.yml +13 -13
- data/examples/profile-attribute.yml +2 -2
- data/examples/profile-attribute/README.md +14 -14
- data/examples/profile-attribute/controls/example.rb +11 -11
- data/examples/profile-attribute/inspec.yml +8 -8
- data/examples/profile-aws/controls/iam_password_policy_expiration.rb +8 -8
- data/examples/profile-aws/controls/iam_password_policy_max_age.rb +8 -8
- data/examples/profile-aws/controls/iam_root_user_mfa.rb +8 -8
- data/examples/profile-aws/controls/iam_users_access_key_age.rb +8 -8
- data/examples/profile-aws/controls/iam_users_console_users_mfa.rb +8 -8
- data/examples/profile-aws/inspec.yml +11 -11
- data/examples/profile-azure/controls/azure_resource_group_example.rb +24 -24
- data/examples/profile-azure/controls/azure_vm_example.rb +29 -29
- data/examples/profile-azure/inspec.yml +11 -11
- data/examples/profile-sensitive/README.md +29 -29
- data/examples/profile-sensitive/controls/sensitive-failures.rb +9 -9
- data/examples/profile-sensitive/controls/sensitive.rb +9 -9
- data/examples/profile-sensitive/inspec.yml +8 -8
- data/examples/profile/README.md +48 -48
- data/examples/profile/controls/example.rb +23 -23
- data/examples/profile/controls/gordon.rb +36 -36
- data/examples/profile/controls/meta.rb +34 -34
- data/examples/profile/inspec.yml +10 -10
- data/examples/profile/libraries/gordon_config.rb +53 -53
- data/inspec.gemspec +47 -47
- data/lib/bundles/README.md +3 -3
- data/lib/bundles/inspec-artifact.rb +7 -7
- data/lib/bundles/inspec-artifact/README.md +1 -1
- data/lib/bundles/inspec-artifact/cli.rb +277 -277
- data/lib/bundles/inspec-compliance.rb +16 -16
- data/lib/bundles/inspec-compliance/.kitchen.yml +20 -20
- data/lib/bundles/inspec-compliance/README.md +185 -185
- data/lib/bundles/inspec-compliance/api.rb +316 -316
- data/lib/bundles/inspec-compliance/api/login.rb +152 -152
- data/lib/bundles/inspec-compliance/bootstrap.sh +41 -41
- data/lib/bundles/inspec-compliance/cli.rb +254 -254
- data/lib/bundles/inspec-compliance/configuration.rb +103 -103
- data/lib/bundles/inspec-compliance/http.rb +86 -86
- data/lib/bundles/inspec-compliance/support.rb +36 -36
- data/lib/bundles/inspec-compliance/target.rb +98 -98
- data/lib/bundles/inspec-compliance/test/integration/default/cli.rb +93 -93
- data/lib/bundles/inspec-habitat.rb +12 -12
- data/lib/bundles/inspec-habitat/cli.rb +36 -36
- data/lib/bundles/inspec-habitat/log.rb +10 -10
- data/lib/bundles/inspec-habitat/profile.rb +390 -390
- data/lib/bundles/inspec-init.rb +8 -8
- data/lib/bundles/inspec-init/README.md +31 -31
- data/lib/bundles/inspec-init/cli.rb +97 -97
- data/lib/bundles/inspec-init/templates/profile/README.md +3 -3
- data/lib/bundles/inspec-init/templates/profile/controls/example.rb +19 -19
- data/lib/bundles/inspec-init/templates/profile/inspec.yml +8 -8
- data/lib/bundles/inspec-supermarket.rb +13 -13
- data/lib/bundles/inspec-supermarket/README.md +45 -45
- data/lib/bundles/inspec-supermarket/api.rb +84 -84
- data/lib/bundles/inspec-supermarket/cli.rb +73 -73
- data/lib/bundles/inspec-supermarket/target.rb +34 -34
- data/lib/fetchers/git.rb +163 -163
- data/lib/fetchers/local.rb +74 -74
- data/lib/fetchers/mock.rb +35 -35
- data/lib/fetchers/url.rb +204 -204
- data/lib/inspec.rb +24 -24
- data/lib/inspec/archive/tar.rb +29 -29
- data/lib/inspec/archive/zip.rb +19 -19
- data/lib/inspec/backend.rb +92 -92
- data/lib/inspec/base_cli.rb +350 -333
- data/lib/inspec/cached_fetcher.rb +66 -66
- data/lib/inspec/cli.rb +292 -302
- data/lib/inspec/completions/bash.sh.erb +45 -45
- data/lib/inspec/completions/fish.sh.erb +34 -34
- data/lib/inspec/completions/zsh.sh.erb +61 -61
- data/lib/inspec/control_eval_context.rb +179 -179
- data/lib/inspec/dependencies/cache.rb +72 -72
- data/lib/inspec/dependencies/dependency_set.rb +92 -92
- data/lib/inspec/dependencies/lockfile.rb +115 -115
- data/lib/inspec/dependencies/requirement.rb +123 -123
- data/lib/inspec/dependencies/resolver.rb +86 -86
- data/lib/inspec/describe.rb +27 -27
- data/lib/inspec/dsl.rb +66 -66
- data/lib/inspec/dsl_shared.rb +33 -33
- data/lib/inspec/env_printer.rb +157 -157
- data/lib/inspec/errors.rb +13 -13
- data/lib/inspec/exceptions.rb +12 -12
- data/lib/inspec/expect.rb +45 -45
- data/lib/inspec/fetcher.rb +45 -45
- data/lib/inspec/file_provider.rb +275 -275
- data/lib/inspec/formatters.rb +3 -3
- data/lib/inspec/formatters/base.rb +250 -250
- data/lib/inspec/formatters/json_rspec.rb +20 -20
- data/lib/inspec/formatters/show_progress.rb +12 -12
- data/lib/inspec/library_eval_context.rb +58 -58
- data/lib/inspec/log.rb +11 -11
- data/lib/inspec/metadata.rb +247 -247
- data/lib/inspec/method_source.rb +24 -24
- data/lib/inspec/objects.rb +14 -14
- data/lib/inspec/objects/attribute.rb +65 -65
- data/lib/inspec/objects/control.rb +61 -61
- data/lib/inspec/objects/describe.rb +92 -92
- data/lib/inspec/objects/each_loop.rb +36 -36
- data/lib/inspec/objects/list.rb +15 -15
- data/lib/inspec/objects/or_test.rb +40 -40
- data/lib/inspec/objects/ruby_helper.rb +15 -15
- data/lib/inspec/objects/tag.rb +27 -27
- data/lib/inspec/objects/test.rb +87 -87
- data/lib/inspec/objects/value.rb +27 -27
- data/lib/inspec/plugins.rb +60 -60
- data/lib/inspec/plugins/cli.rb +24 -24
- data/lib/inspec/plugins/fetcher.rb +86 -86
- data/lib/inspec/plugins/resource.rb +133 -133
- data/lib/inspec/plugins/secret.rb +15 -15
- data/lib/inspec/plugins/source_reader.rb +40 -40
- data/lib/inspec/polyfill.rb +12 -12
- data/lib/inspec/profile.rb +510 -510
- data/lib/inspec/profile_context.rb +207 -207
- data/lib/inspec/profile_vendor.rb +66 -66
- data/lib/inspec/reporters.rb +50 -50
- data/lib/inspec/reporters/base.rb +24 -24
- data/lib/inspec/reporters/cli.rb +356 -356
- data/lib/inspec/reporters/json.rb +116 -116
- data/lib/inspec/reporters/json_min.rb +48 -48
- data/lib/inspec/reporters/junit.rb +77 -77
- data/lib/inspec/require_loader.rb +33 -33
- data/lib/inspec/resource.rb +186 -186
- data/lib/inspec/rule.rb +266 -266
- data/lib/inspec/runner.rb +344 -344
- data/lib/inspec/runner_mock.rb +41 -41
- data/lib/inspec/runner_rspec.rb +174 -174
- data/lib/inspec/runtime_profile.rb +26 -26
- data/lib/inspec/schema.rb +213 -213
- data/lib/inspec/secrets.rb +19 -19
- data/lib/inspec/secrets/yaml.rb +30 -30
- data/lib/inspec/shell.rb +220 -223
- data/lib/inspec/shell_detector.rb +90 -90
- data/lib/inspec/source_reader.rb +29 -29
- data/lib/inspec/version.rb +8 -8
- data/lib/matchers/matchers.rb +339 -339
- data/lib/resource_support/aws.rb +40 -40
- data/lib/resource_support/aws/aws_backend_base.rb +12 -12
- data/lib/resource_support/aws/aws_backend_factory_mixin.rb +12 -12
- data/lib/resource_support/aws/aws_plural_resource_mixin.rb +21 -21
- data/lib/resource_support/aws/aws_resource_mixin.rb +66 -66
- data/lib/resource_support/aws/aws_singular_resource_mixin.rb +24 -24
- data/lib/resources/aide_conf.rb +160 -160
- data/lib/resources/apache.rb +48 -48
- data/lib/resources/apache_conf.rb +156 -156
- data/lib/resources/apt.rb +149 -149
- data/lib/resources/audit_policy.rb +63 -63
- data/lib/resources/auditd.rb +231 -231
- data/lib/resources/auditd_conf.rb +55 -55
- data/lib/resources/aws/aws_cloudtrail_trail.rb +77 -77
- data/lib/resources/aws/aws_cloudtrail_trails.rb +47 -47
- data/lib/resources/aws/aws_cloudwatch_alarm.rb +62 -62
- data/lib/resources/aws/aws_cloudwatch_log_metric_filter.rb +100 -100
- data/lib/resources/aws/aws_ec2_instance.rb +157 -157
- data/lib/resources/aws/aws_iam_access_key.rb +106 -106
- data/lib/resources/aws/aws_iam_access_keys.rb +144 -144
- data/lib/resources/aws/aws_iam_group.rb +56 -56
- data/lib/resources/aws/aws_iam_groups.rb +45 -45
- data/lib/resources/aws/aws_iam_password_policy.rb +116 -116
- data/lib/resources/aws/aws_iam_policies.rb +46 -46
- data/lib/resources/aws/aws_iam_policy.rb +119 -119
- data/lib/resources/aws/aws_iam_role.rb +51 -51
- data/lib/resources/aws/aws_iam_root_user.rb +60 -60
- data/lib/resources/aws/aws_iam_user.rb +111 -111
- data/lib/resources/aws/aws_iam_users.rb +96 -96
- data/lib/resources/aws/aws_kms_keys.rb +46 -46
- data/lib/resources/aws/aws_route_table.rb +61 -61
- data/lib/resources/aws/aws_s3_bucket.rb +115 -115
- data/lib/resources/aws/aws_security_group.rb +93 -93
- data/lib/resources/aws/aws_security_groups.rb +68 -68
- data/lib/resources/aws/aws_sns_topic.rb +53 -53
- data/lib/resources/aws/aws_subnet.rb +88 -88
- data/lib/resources/aws/aws_subnets.rb +53 -53
- data/lib/resources/aws/aws_vpc.rb +69 -69
- data/lib/resources/aws/aws_vpcs.rb +45 -45
- data/lib/resources/azure/azure_backend.rb +377 -377
- data/lib/resources/azure/azure_generic_resource.rb +59 -59
- data/lib/resources/azure/azure_resource_group.rb +152 -152
- data/lib/resources/azure/azure_virtual_machine.rb +264 -264
- data/lib/resources/azure/azure_virtual_machine_data_disk.rb +136 -136
- data/lib/resources/bash.rb +35 -35
- data/lib/resources/bond.rb +68 -68
- data/lib/resources/bridge.rb +122 -122
- data/lib/resources/command.rb +69 -69
- data/lib/resources/cpan.rb +58 -58
- data/lib/resources/cran.rb +64 -64
- data/lib/resources/crontab.rb +170 -170
- data/lib/resources/csv.rb +60 -60
- data/lib/resources/dh_params.rb +82 -82
- data/lib/resources/directory.rb +25 -25
- data/lib/resources/docker.rb +236 -236
- data/lib/resources/docker_container.rb +89 -89
- data/lib/resources/docker_image.rb +83 -83
- data/lib/resources/docker_object.rb +57 -57
- data/lib/resources/docker_service.rb +90 -90
- data/lib/resources/elasticsearch.rb +169 -169
- data/lib/resources/etc_fstab.rb +102 -102
- data/lib/resources/etc_group.rb +156 -156
- data/lib/resources/etc_hosts.rb +81 -81
- data/lib/resources/etc_hosts_allow_deny.rb +123 -123
- data/lib/resources/file.rb +298 -298
- data/lib/resources/filesystem.rb +31 -31
- data/lib/resources/firewalld.rb +144 -144
- data/lib/resources/gem.rb +70 -70
- data/lib/resources/groups.rb +215 -215
- data/lib/resources/grub_conf.rb +237 -237
- data/lib/resources/host.rb +300 -300
- data/lib/resources/http.rb +250 -250
- data/lib/resources/iis_app.rb +104 -104
- data/lib/resources/iis_site.rb +148 -148
- data/lib/resources/inetd_conf.rb +62 -62
- data/lib/resources/ini.rb +29 -29
- data/lib/resources/interface.rb +129 -129
- data/lib/resources/iptables.rb +69 -69
- data/lib/resources/json.rb +117 -117
- data/lib/resources/kernel_module.rb +107 -107
- data/lib/resources/kernel_parameter.rb +58 -58
- data/lib/resources/key_rsa.rb +67 -67
- data/lib/resources/limits_conf.rb +55 -55
- data/lib/resources/login_def.rb +66 -66
- data/lib/resources/mount.rb +88 -88
- data/lib/resources/mssql_session.rb +101 -101
- data/lib/resources/mysql.rb +81 -81
- data/lib/resources/mysql_conf.rb +134 -134
- data/lib/resources/mysql_session.rb +71 -71
- data/lib/resources/nginx.rb +96 -96
- data/lib/resources/nginx_conf.rb +227 -227
- data/lib/resources/npm.rb +48 -48
- data/lib/resources/ntp_conf.rb +58 -58
- data/lib/resources/oneget.rb +71 -71
- data/lib/resources/oracledb_session.rb +139 -139
- data/lib/resources/os.rb +36 -36
- data/lib/resources/os_env.rb +76 -76
- data/lib/resources/package.rb +363 -363
- data/lib/resources/packages.rb +111 -111
- data/lib/resources/parse_config.rb +116 -116
- data/lib/resources/passwd.rb +74 -74
- data/lib/resources/pip.rb +89 -89
- data/lib/resources/platform.rb +109 -109
- data/lib/resources/port.rb +771 -771
- data/lib/resources/postgres.rb +130 -130
- data/lib/resources/postgres_conf.rb +121 -121
- data/lib/resources/postgres_hba_conf.rb +100 -100
- data/lib/resources/postgres_ident_conf.rb +78 -78
- data/lib/resources/postgres_session.rb +71 -71
- data/lib/resources/powershell.rb +57 -57
- data/lib/resources/processes.rb +204 -204
- data/lib/resources/rabbitmq_conf.rb +52 -52
- data/lib/resources/registry_key.rb +296 -296
- data/lib/resources/security_policy.rb +180 -180
- data/lib/resources/service.rb +789 -789
- data/lib/resources/shadow.rb +140 -140
- data/lib/resources/ssh_conf.rb +102 -102
- data/lib/resources/ssl.rb +99 -99
- data/lib/resources/sys_info.rb +28 -28
- data/lib/resources/toml.rb +32 -32
- data/lib/resources/users.rb +654 -654
- data/lib/resources/vbscript.rb +69 -69
- data/lib/resources/virtualization.rb +251 -251
- data/lib/resources/windows_feature.rb +84 -84
- data/lib/resources/windows_hotfix.rb +35 -35
- data/lib/resources/windows_task.rb +105 -105
- data/lib/resources/wmi.rb +113 -113
- data/lib/resources/x509_certificate.rb +143 -143
- data/lib/resources/xinetd.rb +111 -111
- data/lib/resources/xml.rb +46 -46
- data/lib/resources/yaml.rb +47 -47
- data/lib/resources/yum.rb +180 -180
- data/lib/resources/zfs_dataset.rb +60 -60
- data/lib/resources/zfs_pool.rb +49 -49
- data/lib/source_readers/flat.rb +39 -39
- data/lib/source_readers/inspec.rb +75 -75
- data/lib/utils/command_wrapper.rb +27 -27
- data/lib/utils/convert.rb +12 -12
- data/lib/utils/database_helpers.rb +77 -77
- data/lib/utils/erlang_parser.rb +192 -192
- data/lib/utils/filter.rb +272 -272
- data/lib/utils/filter_array.rb +27 -27
- data/lib/utils/find_files.rb +44 -44
- data/lib/utils/hash.rb +41 -41
- data/lib/utils/json_log.rb +18 -18
- data/lib/utils/latest_version.rb +22 -22
- data/lib/utils/modulator.rb +12 -12
- data/lib/utils/nginx_parser.rb +85 -85
- data/lib/utils/object_traversal.rb +49 -49
- data/lib/utils/parser.rb +274 -274
- data/lib/utils/plugin_registry.rb +93 -93
- data/lib/utils/simpleconfig.rb +120 -120
- data/lib/utils/spdx.rb +13 -13
- data/lib/utils/spdx.txt +343 -343
- metadata +1 -1
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module Inspec::Resources
|
|
4
|
-
class ZfsDataset < Inspec.resource(1)
|
|
5
|
-
name 'zfs_dataset'
|
|
6
|
-
supports platform: 'unix'
|
|
7
|
-
desc "
|
|
8
|
-
Use the zfs_dataset InSpec audit resource to test if the named
|
|
9
|
-
ZFS Dataset is present and/or has certain properties.
|
|
10
|
-
"
|
|
11
|
-
example "
|
|
12
|
-
describe zfs_dataset('tank/tmp') do
|
|
13
|
-
its('exec') { should eq('off') }
|
|
14
|
-
its('setuid') { should eq('off') }
|
|
15
|
-
end
|
|
16
|
-
"
|
|
17
|
-
|
|
18
|
-
def initialize(zfs_dataset)
|
|
19
|
-
return skip_resource 'The `zfs_dataset` resource is not supported on your OS yet.' if !inspec.os.bsd?
|
|
20
|
-
@zfs_dataset = zfs_dataset
|
|
21
|
-
|
|
22
|
-
@params = gather
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
# method called by 'it { should exist }'
|
|
26
|
-
def exists?
|
|
27
|
-
inspec.command("/sbin/zfs get -Hp all #{@zfs_dataset}").exit_status == 0
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def mounted?
|
|
31
|
-
return false if !exists?
|
|
32
|
-
inspec.mount(@params['mountpoint']).mounted?
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def to_s
|
|
36
|
-
"ZFS Dataset #{@zfs_dataset}"
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def gather
|
|
40
|
-
cmd = inspec.command("/sbin/zfs get -Hp all #{@zfs_dataset}")
|
|
41
|
-
return nil if cmd.exit_status.to_i != 0
|
|
42
|
-
|
|
43
|
-
# parse data
|
|
44
|
-
cmd.stdout.chomp.split("\n").each_with_object(Hash.new(0)) do |line, h|
|
|
45
|
-
t = line.split("\t")
|
|
46
|
-
h[t[1].to_s] = t[2].to_s
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
# override method
|
|
51
|
-
def exec
|
|
52
|
-
@params['exec']
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
# expose all parameters
|
|
56
|
-
def method_missing(name)
|
|
57
|
-
@params[name.to_s]
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module Inspec::Resources
|
|
4
|
+
class ZfsDataset < Inspec.resource(1)
|
|
5
|
+
name 'zfs_dataset'
|
|
6
|
+
supports platform: 'unix'
|
|
7
|
+
desc "
|
|
8
|
+
Use the zfs_dataset InSpec audit resource to test if the named
|
|
9
|
+
ZFS Dataset is present and/or has certain properties.
|
|
10
|
+
"
|
|
11
|
+
example "
|
|
12
|
+
describe zfs_dataset('tank/tmp') do
|
|
13
|
+
its('exec') { should eq('off') }
|
|
14
|
+
its('setuid') { should eq('off') }
|
|
15
|
+
end
|
|
16
|
+
"
|
|
17
|
+
|
|
18
|
+
def initialize(zfs_dataset)
|
|
19
|
+
return skip_resource 'The `zfs_dataset` resource is not supported on your OS yet.' if !inspec.os.bsd?
|
|
20
|
+
@zfs_dataset = zfs_dataset
|
|
21
|
+
|
|
22
|
+
@params = gather
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# method called by 'it { should exist }'
|
|
26
|
+
def exists?
|
|
27
|
+
inspec.command("/sbin/zfs get -Hp all #{@zfs_dataset}").exit_status == 0
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def mounted?
|
|
31
|
+
return false if !exists?
|
|
32
|
+
inspec.mount(@params['mountpoint']).mounted?
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def to_s
|
|
36
|
+
"ZFS Dataset #{@zfs_dataset}"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def gather
|
|
40
|
+
cmd = inspec.command("/sbin/zfs get -Hp all #{@zfs_dataset}")
|
|
41
|
+
return nil if cmd.exit_status.to_i != 0
|
|
42
|
+
|
|
43
|
+
# parse data
|
|
44
|
+
cmd.stdout.chomp.split("\n").each_with_object(Hash.new(0)) do |line, h|
|
|
45
|
+
t = line.split("\t")
|
|
46
|
+
h[t[1].to_s] = t[2].to_s
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# override method
|
|
51
|
+
def exec
|
|
52
|
+
@params['exec']
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# expose all parameters
|
|
56
|
+
def method_missing(name)
|
|
57
|
+
@params[name.to_s]
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
data/lib/resources/zfs_pool.rb
CHANGED
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module Inspec::Resources
|
|
4
|
-
class ZfsPool < Inspec.resource(1)
|
|
5
|
-
name 'zfs_pool'
|
|
6
|
-
supports platform: 'unix'
|
|
7
|
-
desc "
|
|
8
|
-
Use the zfs_pool InSpec audit resource to test if the named
|
|
9
|
-
ZFS Pool is present and/or has certain properties.
|
|
10
|
-
"
|
|
11
|
-
example "
|
|
12
|
-
describe zfs_pool('tank') do
|
|
13
|
-
its('failmode') { should eq('continue') }
|
|
14
|
-
end
|
|
15
|
-
"
|
|
16
|
-
|
|
17
|
-
def initialize(zfs_pool)
|
|
18
|
-
return skip_resource 'The `zfs_pool` resource is not supported on your OS yet.' if !inspec.os.bsd?
|
|
19
|
-
@zfs_pool = zfs_pool
|
|
20
|
-
|
|
21
|
-
@params = gather
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
# method called by 'it { should exist }'
|
|
25
|
-
def exists?
|
|
26
|
-
inspec.command("/sbin/zpool get -Hp all #{@zfs_pool}").exit_status == 0
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def to_s
|
|
30
|
-
"ZFS Pool #{@zfs_pool}"
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def gather
|
|
34
|
-
cmd = inspec.command("/sbin/zpool get -Hp all #{@zfs_pool}")
|
|
35
|
-
return nil if cmd.exit_status.to_i != 0
|
|
36
|
-
|
|
37
|
-
# parse data
|
|
38
|
-
cmd.stdout.chomp.split("\n").each_with_object(Hash.new(0)) do |line, h|
|
|
39
|
-
t = line.split("\t")
|
|
40
|
-
h[t[1].to_s] = t[2].to_s
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# expose all parameters
|
|
45
|
-
def method_missing(name)
|
|
46
|
-
@params[name.to_s]
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module Inspec::Resources
|
|
4
|
+
class ZfsPool < Inspec.resource(1)
|
|
5
|
+
name 'zfs_pool'
|
|
6
|
+
supports platform: 'unix'
|
|
7
|
+
desc "
|
|
8
|
+
Use the zfs_pool InSpec audit resource to test if the named
|
|
9
|
+
ZFS Pool is present and/or has certain properties.
|
|
10
|
+
"
|
|
11
|
+
example "
|
|
12
|
+
describe zfs_pool('tank') do
|
|
13
|
+
its('failmode') { should eq('continue') }
|
|
14
|
+
end
|
|
15
|
+
"
|
|
16
|
+
|
|
17
|
+
def initialize(zfs_pool)
|
|
18
|
+
return skip_resource 'The `zfs_pool` resource is not supported on your OS yet.' if !inspec.os.bsd?
|
|
19
|
+
@zfs_pool = zfs_pool
|
|
20
|
+
|
|
21
|
+
@params = gather
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# method called by 'it { should exist }'
|
|
25
|
+
def exists?
|
|
26
|
+
inspec.command("/sbin/zpool get -Hp all #{@zfs_pool}").exit_status == 0
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def to_s
|
|
30
|
+
"ZFS Pool #{@zfs_pool}"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def gather
|
|
34
|
+
cmd = inspec.command("/sbin/zpool get -Hp all #{@zfs_pool}")
|
|
35
|
+
return nil if cmd.exit_status.to_i != 0
|
|
36
|
+
|
|
37
|
+
# parse data
|
|
38
|
+
cmd.stdout.chomp.split("\n").each_with_object(Hash.new(0)) do |line, h|
|
|
39
|
+
t = line.split("\t")
|
|
40
|
+
h[t[1].to_s] = t[2].to_s
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# expose all parameters
|
|
45
|
+
def method_missing(name)
|
|
46
|
+
@params[name.to_s]
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
data/lib/source_readers/flat.rb
CHANGED
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
# author: Dominik Richter
|
|
3
|
-
# author: Christoph Hartmann
|
|
4
|
-
|
|
5
|
-
require 'inspec/fetcher'
|
|
6
|
-
require 'inspec/metadata'
|
|
7
|
-
|
|
8
|
-
module SourceReaders
|
|
9
|
-
class Flat < Inspec.source_reader(1)
|
|
10
|
-
name 'flat'
|
|
11
|
-
priority 5
|
|
12
|
-
|
|
13
|
-
def self.resolve(target)
|
|
14
|
-
# TODO: eventually remove the metadata.rb exception here
|
|
15
|
-
# when we have fully phased out metadata.rb in 1.0
|
|
16
|
-
files = target.files.find_all { |x|
|
|
17
|
-
x.end_with?('.rb') && !x.include?('/') && x != 'metadata.rb'
|
|
18
|
-
}
|
|
19
|
-
return nil if files.empty?
|
|
20
|
-
new(target, files)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
attr_reader :metadata, :tests, :libraries, :data_files
|
|
24
|
-
|
|
25
|
-
def initialize(target, files)
|
|
26
|
-
@target = target
|
|
27
|
-
@metadata = ::Inspec::Metadata.new(nil)
|
|
28
|
-
@tests = load_tests(files)
|
|
29
|
-
@libraries = {}
|
|
30
|
-
@data_files = {}
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
private
|
|
34
|
-
|
|
35
|
-
def load_tests(files)
|
|
36
|
-
Hash[files.map { |x| [x, @target.read(x)] }]
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# author: Dominik Richter
|
|
3
|
+
# author: Christoph Hartmann
|
|
4
|
+
|
|
5
|
+
require 'inspec/fetcher'
|
|
6
|
+
require 'inspec/metadata'
|
|
7
|
+
|
|
8
|
+
module SourceReaders
|
|
9
|
+
class Flat < Inspec.source_reader(1)
|
|
10
|
+
name 'flat'
|
|
11
|
+
priority 5
|
|
12
|
+
|
|
13
|
+
def self.resolve(target)
|
|
14
|
+
# TODO: eventually remove the metadata.rb exception here
|
|
15
|
+
# when we have fully phased out metadata.rb in 1.0
|
|
16
|
+
files = target.files.find_all { |x|
|
|
17
|
+
x.end_with?('.rb') && !x.include?('/') && x != 'metadata.rb'
|
|
18
|
+
}
|
|
19
|
+
return nil if files.empty?
|
|
20
|
+
new(target, files)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
attr_reader :metadata, :tests, :libraries, :data_files
|
|
24
|
+
|
|
25
|
+
def initialize(target, files)
|
|
26
|
+
@target = target
|
|
27
|
+
@metadata = ::Inspec::Metadata.new(nil)
|
|
28
|
+
@tests = load_tests(files)
|
|
29
|
+
@libraries = {}
|
|
30
|
+
@data_files = {}
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
def load_tests(files)
|
|
36
|
+
Hash[files.map { |x| [x, @target.read(x)] }]
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
# author: Dominik Richter
|
|
3
|
-
# author: Christoph Hartmann
|
|
4
|
-
|
|
5
|
-
require 'inspec/fetcher'
|
|
6
|
-
require 'inspec/metadata'
|
|
7
|
-
|
|
8
|
-
module SourceReaders
|
|
9
|
-
class InspecReader < Inspec.source_reader(1)
|
|
10
|
-
name 'inspec'
|
|
11
|
-
priority 10
|
|
12
|
-
|
|
13
|
-
def self.resolve(target)
|
|
14
|
-
return new(target, 'inspec.yml') if target.files.include?('inspec.yml')
|
|
15
|
-
# TODO: deprecated for 1.0.0 release
|
|
16
|
-
if target.files.include?('metadata.rb') &&
|
|
17
|
-
(
|
|
18
|
-
target.files.include?('controls') ||
|
|
19
|
-
target.files.include?('test')
|
|
20
|
-
)
|
|
21
|
-
return new(target, 'metadata.rb')
|
|
22
|
-
end
|
|
23
|
-
nil
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
attr_reader :metadata, :tests, :libraries, :data_files
|
|
27
|
-
|
|
28
|
-
# This create a new instance of an InSpec profile source reader
|
|
29
|
-
#
|
|
30
|
-
# @param [FileProvider] target An instance of a FileProvider object that can list files and read them
|
|
31
|
-
# @param [String] metadata_source eg. inspec.yml or metadata.rb
|
|
32
|
-
def initialize(target, metadata_source)
|
|
33
|
-
@target = target
|
|
34
|
-
@metadata = load_metadata(metadata_source)
|
|
35
|
-
@tests = load_tests
|
|
36
|
-
@libraries = load_libs
|
|
37
|
-
@data_files = load_data_files
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
private
|
|
41
|
-
|
|
42
|
-
def load_metadata(metadata_source)
|
|
43
|
-
Inspec::Metadata.from_ref(
|
|
44
|
-
metadata_source,
|
|
45
|
-
@target.read(metadata_source),
|
|
46
|
-
nil,
|
|
47
|
-
)
|
|
48
|
-
rescue Psych::SyntaxError => e
|
|
49
|
-
raise "Unable to parse inspec.yml: line #{e.line}, #{e.problem} #{e.context}"
|
|
50
|
-
rescue => e
|
|
51
|
-
raise "Unable to parse #{metadata_source}: #{e.class} -- #{e.message}"
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def load_tests
|
|
55
|
-
tests = @target.files.find_all do |path|
|
|
56
|
-
path.start_with?('controls') && path.end_with?('.rb')
|
|
57
|
-
end
|
|
58
|
-
Hash[tests.map { |x| [x, @target.read(x)] }.delete_if { |_file, contents| contents.nil? }]
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def load_libs
|
|
62
|
-
tests = @target.files.find_all do |path|
|
|
63
|
-
path.start_with?('libraries') && path.end_with?('.rb')
|
|
64
|
-
end
|
|
65
|
-
Hash[tests.map { |x| [x, @target.read(x)] }.delete_if { |_file, contents| contents.nil? }]
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def load_data_files
|
|
69
|
-
files = @target.files.find_all do |path|
|
|
70
|
-
path.start_with?('files' + File::SEPARATOR)
|
|
71
|
-
end
|
|
72
|
-
Hash[files.map { |x| [x, @target.read(x)] }.delete_if { |_file, contents| contents.nil? }]
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
end
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# author: Dominik Richter
|
|
3
|
+
# author: Christoph Hartmann
|
|
4
|
+
|
|
5
|
+
require 'inspec/fetcher'
|
|
6
|
+
require 'inspec/metadata'
|
|
7
|
+
|
|
8
|
+
module SourceReaders
|
|
9
|
+
class InspecReader < Inspec.source_reader(1)
|
|
10
|
+
name 'inspec'
|
|
11
|
+
priority 10
|
|
12
|
+
|
|
13
|
+
def self.resolve(target)
|
|
14
|
+
return new(target, 'inspec.yml') if target.files.include?('inspec.yml')
|
|
15
|
+
# TODO: deprecated for 1.0.0 release
|
|
16
|
+
if target.files.include?('metadata.rb') &&
|
|
17
|
+
(
|
|
18
|
+
target.files.include?('controls') ||
|
|
19
|
+
target.files.include?('test')
|
|
20
|
+
)
|
|
21
|
+
return new(target, 'metadata.rb')
|
|
22
|
+
end
|
|
23
|
+
nil
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
attr_reader :metadata, :tests, :libraries, :data_files
|
|
27
|
+
|
|
28
|
+
# This create a new instance of an InSpec profile source reader
|
|
29
|
+
#
|
|
30
|
+
# @param [FileProvider] target An instance of a FileProvider object that can list files and read them
|
|
31
|
+
# @param [String] metadata_source eg. inspec.yml or metadata.rb
|
|
32
|
+
def initialize(target, metadata_source)
|
|
33
|
+
@target = target
|
|
34
|
+
@metadata = load_metadata(metadata_source)
|
|
35
|
+
@tests = load_tests
|
|
36
|
+
@libraries = load_libs
|
|
37
|
+
@data_files = load_data_files
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
private
|
|
41
|
+
|
|
42
|
+
def load_metadata(metadata_source)
|
|
43
|
+
Inspec::Metadata.from_ref(
|
|
44
|
+
metadata_source,
|
|
45
|
+
@target.read(metadata_source),
|
|
46
|
+
nil,
|
|
47
|
+
)
|
|
48
|
+
rescue Psych::SyntaxError => e
|
|
49
|
+
raise "Unable to parse inspec.yml: line #{e.line}, #{e.problem} #{e.context}"
|
|
50
|
+
rescue => e
|
|
51
|
+
raise "Unable to parse #{metadata_source}: #{e.class} -- #{e.message}"
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def load_tests
|
|
55
|
+
tests = @target.files.find_all do |path|
|
|
56
|
+
path.start_with?('controls') && path.end_with?('.rb')
|
|
57
|
+
end
|
|
58
|
+
Hash[tests.map { |x| [x, @target.read(x)] }.delete_if { |_file, contents| contents.nil? }]
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def load_libs
|
|
62
|
+
tests = @target.files.find_all do |path|
|
|
63
|
+
path.start_with?('libraries') && path.end_with?('.rb')
|
|
64
|
+
end
|
|
65
|
+
Hash[tests.map { |x| [x, @target.read(x)] }.delete_if { |_file, contents| contents.nil? }]
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def load_data_files
|
|
69
|
+
files = @target.files.find_all do |path|
|
|
70
|
+
path.start_with?('files' + File::SEPARATOR)
|
|
71
|
+
end
|
|
72
|
+
Hash[files.map { |x| [x, @target.read(x)] }.delete_if { |_file, contents| contents.nil? }]
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
# author: Dominik Richter
|
|
3
|
-
# author: Christoph Hartmann
|
|
4
|
-
|
|
5
|
-
require 'shellwords'
|
|
6
|
-
|
|
7
|
-
class CommandWrapper
|
|
8
|
-
UNIX_SHELLS = %w{sh bash zsh}.freeze
|
|
9
|
-
|
|
10
|
-
def self.wrap(cmd, options)
|
|
11
|
-
unless options.is_a?(Hash)
|
|
12
|
-
raise 'All options for the command wrapper must be provided as a hash. '\
|
|
13
|
-
"You entered: #{options.inspect}. Please consult the documentation."
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
wrap = options[:wrap]
|
|
17
|
-
raise "Called command wrapper with wrap: #{wrap.inspect}. It must be called with a Proc." if !wrap.nil? && !wrap.is_a?(Proc)
|
|
18
|
-
return wrap.call(cmd) unless wrap.nil?
|
|
19
|
-
|
|
20
|
-
shell = options[:shell]
|
|
21
|
-
raise "Don't know how to wrap commands for shell: #{shell.inspect}." unless UNIX_SHELLS.include?(shell)
|
|
22
|
-
|
|
23
|
-
path = options[:path] || shell
|
|
24
|
-
args = options[:args] || '-c'
|
|
25
|
-
path.to_s + ' ' + args + ' ' + Shellwords.escape(cmd)
|
|
26
|
-
end
|
|
27
|
-
end
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# author: Dominik Richter
|
|
3
|
+
# author: Christoph Hartmann
|
|
4
|
+
|
|
5
|
+
require 'shellwords'
|
|
6
|
+
|
|
7
|
+
class CommandWrapper
|
|
8
|
+
UNIX_SHELLS = %w{sh bash zsh}.freeze
|
|
9
|
+
|
|
10
|
+
def self.wrap(cmd, options)
|
|
11
|
+
unless options.is_a?(Hash)
|
|
12
|
+
raise 'All options for the command wrapper must be provided as a hash. '\
|
|
13
|
+
"You entered: #{options.inspect}. Please consult the documentation."
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
wrap = options[:wrap]
|
|
17
|
+
raise "Called command wrapper with wrap: #{wrap.inspect}. It must be called with a Proc." if !wrap.nil? && !wrap.is_a?(Proc)
|
|
18
|
+
return wrap.call(cmd) unless wrap.nil?
|
|
19
|
+
|
|
20
|
+
shell = options[:shell]
|
|
21
|
+
raise "Don't know how to wrap commands for shell: #{shell.inspect}." unless UNIX_SHELLS.include?(shell)
|
|
22
|
+
|
|
23
|
+
path = options[:path] || shell
|
|
24
|
+
args = options[:args] || '-c'
|
|
25
|
+
path.to_s + ' ' + args + ' ' + Shellwords.escape(cmd)
|
|
26
|
+
end
|
|
27
|
+
end
|