gooddata-edge 0.6.27.edge
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/.document +5 -0
- data/.gitignore +36 -0
- data/.rspec +3 -0
- data/.rubocop.yml +89 -0
- data/.yardopts +22 -0
- data/CHANGELOG.md +196 -0
- data/CLI.md +439 -0
- data/DEPENDENCIES.md +817 -0
- data/Gemfile +4 -0
- data/Guardfile +5 -0
- data/LICENSE +22 -0
- data/LICENSE.rb +5 -0
- data/README.md +75 -0
- data/Rakefile +179 -0
- data/TODO.md +32 -0
- data/authors.sh +4 -0
- data/bin/gooddata +7 -0
- data/dependency_decisions.yml +104 -0
- data/gooddata +9 -0
- data/gooddata.gemspec +63 -0
- data/lib/gooddata.rb +31 -0
- data/lib/gooddata/app/app.rb +16 -0
- data/lib/gooddata/bricks/base_downloader.rb +86 -0
- data/lib/gooddata/bricks/brick.rb +38 -0
- data/lib/gooddata/bricks/bricks.rb +15 -0
- data/lib/gooddata/bricks/middleware/aws_middleware.rb +29 -0
- data/lib/gooddata/bricks/middleware/base_middleware.rb +56 -0
- data/lib/gooddata/bricks/middleware/bench_middleware.rb +24 -0
- data/lib/gooddata/bricks/middleware/bulk_salesforce_middleware.rb +37 -0
- data/lib/gooddata/bricks/middleware/decode_params_middleware.rb +20 -0
- data/lib/gooddata/bricks/middleware/fs_download_middleware.rb +48 -0
- data/lib/gooddata/bricks/middleware/fs_upload_middleware.rb +36 -0
- data/lib/gooddata/bricks/middleware/gooddata_middleware.rb +39 -0
- data/lib/gooddata/bricks/middleware/logger_middleware.rb +29 -0
- data/lib/gooddata/bricks/middleware/middleware.rb +12 -0
- data/lib/gooddata/bricks/middleware/restforce_middleware.rb +61 -0
- data/lib/gooddata/bricks/middleware/stdout_middleware.rb +23 -0
- data/lib/gooddata/bricks/middleware/twitter_middleware.rb +29 -0
- data/lib/gooddata/bricks/middleware/undot_params_middleware.rb +37 -0
- data/lib/gooddata/bricks/pipeline.rb +32 -0
- data/lib/gooddata/bricks/utils.rb +18 -0
- data/lib/gooddata/cli/cli.rb +27 -0
- data/lib/gooddata/cli/commands/auth_cmd.rb +29 -0
- data/lib/gooddata/cli/commands/domain_cmd.rb +28 -0
- data/lib/gooddata/cli/commands/project_cmd.rb +45 -0
- data/lib/gooddata/cli/hooks.rb +57 -0
- data/lib/gooddata/cli/shared.rb +61 -0
- data/lib/gooddata/cli/terminal.rb +20 -0
- data/lib/gooddata/client.rb +67 -0
- data/lib/gooddata/commands/api.rb +64 -0
- data/lib/gooddata/commands/auth.rb +107 -0
- data/lib/gooddata/commands/base.rb +12 -0
- data/lib/gooddata/commands/commands.rb +12 -0
- data/lib/gooddata/commands/datasets.rb +148 -0
- data/lib/gooddata/commands/datawarehouse.rb +20 -0
- data/lib/gooddata/commands/domain.rb +40 -0
- data/lib/gooddata/commands/process.rb +67 -0
- data/lib/gooddata/commands/project.rb +175 -0
- data/lib/gooddata/commands/projects.rb +20 -0
- data/lib/gooddata/commands/role.rb +36 -0
- data/lib/gooddata/commands/runners.rb +47 -0
- data/lib/gooddata/commands/scaffold.rb +69 -0
- data/lib/gooddata/commands/user.rb +39 -0
- data/lib/gooddata/connection.rb +127 -0
- data/lib/gooddata/core/core.rb +12 -0
- data/lib/gooddata/core/logging.rb +105 -0
- data/lib/gooddata/core/nil_logger.rb +23 -0
- data/lib/gooddata/core/project.rb +74 -0
- data/lib/gooddata/core/rest.rb +149 -0
- data/lib/gooddata/core/user.rb +20 -0
- data/lib/gooddata/data/data.rb +12 -0
- data/lib/gooddata/data/guesser.rb +122 -0
- data/lib/gooddata/exceptions/attr_element_not_found.rb +16 -0
- data/lib/gooddata/exceptions/command_failed.rb +11 -0
- data/lib/gooddata/exceptions/exceptions.rb +12 -0
- data/lib/gooddata/exceptions/execution_limit_exceeded.rb +13 -0
- data/lib/gooddata/exceptions/filter_maqlization.rb +16 -0
- data/lib/gooddata/exceptions/malformed_user.rb +15 -0
- data/lib/gooddata/exceptions/no_project_error.rb +15 -0
- data/lib/gooddata/exceptions/object_migration.rb +32 -0
- data/lib/gooddata/exceptions/project_not_found.rb +13 -0
- data/lib/gooddata/exceptions/segment_not_empty.rb +18 -0
- data/lib/gooddata/exceptions/uncomputable_report.rb +13 -0
- data/lib/gooddata/exceptions/user_in_different_domain.rb +15 -0
- data/lib/gooddata/exceptions/validation_error.rb +16 -0
- data/lib/gooddata/extensions/big_decimal.rb +17 -0
- data/lib/gooddata/extensions/enumerable.rb +39 -0
- data/lib/gooddata/extensions/extensions.rb +10 -0
- data/lib/gooddata/extensions/false.rb +15 -0
- data/lib/gooddata/extensions/hash.rb +38 -0
- data/lib/gooddata/extensions/nil.rb +15 -0
- data/lib/gooddata/extensions/numeric.rb +15 -0
- data/lib/gooddata/extensions/object.rb +27 -0
- data/lib/gooddata/extensions/symbol.rb +15 -0
- data/lib/gooddata/extensions/true.rb +15 -0
- data/lib/gooddata/extract.rb +21 -0
- data/lib/gooddata/goodzilla/goodzilla.rb +159 -0
- data/lib/gooddata/helpers/auth_helpers.rb +75 -0
- data/lib/gooddata/helpers/csv_helper.rb +61 -0
- data/lib/gooddata/helpers/data_helper.rb +116 -0
- data/lib/gooddata/helpers/global_helpers.rb +331 -0
- data/lib/gooddata/helpers/global_helpers_params.rb +172 -0
- data/lib/gooddata/helpers/helpers.rb +10 -0
- data/lib/gooddata/mixins/author.rb +26 -0
- data/lib/gooddata/mixins/content_getter.rb +15 -0
- data/lib/gooddata/mixins/content_property_reader.rb +17 -0
- data/lib/gooddata/mixins/content_property_writer.rb +17 -0
- data/lib/gooddata/mixins/contributor.rb +20 -0
- data/lib/gooddata/mixins/data_getter.rb +15 -0
- data/lib/gooddata/mixins/data_property_reader.rb +19 -0
- data/lib/gooddata/mixins/data_property_writer.rb +19 -0
- data/lib/gooddata/mixins/inspector.rb +53 -0
- data/lib/gooddata/mixins/is_attribute.rb +17 -0
- data/lib/gooddata/mixins/is_dimension.rb +17 -0
- data/lib/gooddata/mixins/is_fact.rb +17 -0
- data/lib/gooddata/mixins/is_label.rb +19 -0
- data/lib/gooddata/mixins/links.rb +15 -0
- data/lib/gooddata/mixins/md_finders.rb +77 -0
- data/lib/gooddata/mixins/md_grantees.rb +42 -0
- data/lib/gooddata/mixins/md_id_to_uri.rb +34 -0
- data/lib/gooddata/mixins/md_json.rb +15 -0
- data/lib/gooddata/mixins/md_lock.rb +87 -0
- data/lib/gooddata/mixins/md_object_id.rb +15 -0
- data/lib/gooddata/mixins/md_object_indexer.rb +64 -0
- data/lib/gooddata/mixins/md_object_query.rb +128 -0
- data/lib/gooddata/mixins/md_relations.rb +43 -0
- data/lib/gooddata/mixins/meta_getter.rb +17 -0
- data/lib/gooddata/mixins/meta_property_reader.rb +19 -0
- data/lib/gooddata/mixins/meta_property_writer.rb +19 -0
- data/lib/gooddata/mixins/mixins.rb +19 -0
- data/lib/gooddata/mixins/not_attribute.rb +17 -0
- data/lib/gooddata/mixins/not_exportable.rb +15 -0
- data/lib/gooddata/mixins/not_fact.rb +17 -0
- data/lib/gooddata/mixins/not_group.rb +17 -0
- data/lib/gooddata/mixins/not_label.rb +19 -0
- data/lib/gooddata/mixins/not_metric.rb +19 -0
- data/lib/gooddata/mixins/obj_id.rb +15 -0
- data/lib/gooddata/mixins/rest_getters.rb +17 -0
- data/lib/gooddata/mixins/rest_resource.rb +47 -0
- data/lib/gooddata/mixins/root_key_getter.rb +15 -0
- data/lib/gooddata/mixins/root_key_setter.rb +15 -0
- data/lib/gooddata/mixins/timestamps.rb +19 -0
- data/lib/gooddata/mixins/to_json.rb +11 -0
- data/lib/gooddata/mixins/uri_getter.rb +9 -0
- data/lib/gooddata/models/blueprint/anchor_field.rb +64 -0
- data/lib/gooddata/models/blueprint/attribute_field.rb +29 -0
- data/lib/gooddata/models/blueprint/blueprint.rb +11 -0
- data/lib/gooddata/models/blueprint/blueprint_field.rb +70 -0
- data/lib/gooddata/models/blueprint/dashboard_builder.rb +30 -0
- data/lib/gooddata/models/blueprint/dataset_blueprint.rb +449 -0
- data/lib/gooddata/models/blueprint/date_dimension.rb +14 -0
- data/lib/gooddata/models/blueprint/fact_field.rb +20 -0
- data/lib/gooddata/models/blueprint/label_field.rb +43 -0
- data/lib/gooddata/models/blueprint/project_blueprint.rb +746 -0
- data/lib/gooddata/models/blueprint/project_builder.rb +83 -0
- data/lib/gooddata/models/blueprint/reference_field.rb +43 -0
- data/lib/gooddata/models/blueprint/schema_blueprint.rb +160 -0
- data/lib/gooddata/models/blueprint/schema_builder.rb +89 -0
- data/lib/gooddata/models/blueprint/to_manifest.rb +181 -0
- data/lib/gooddata/models/blueprint/to_wire.rb +154 -0
- data/lib/gooddata/models/client.rb +182 -0
- data/lib/gooddata/models/client_synchronization_result.rb +31 -0
- data/lib/gooddata/models/client_synchronization_result_details.rb +41 -0
- data/lib/gooddata/models/datawarehouse.rb +92 -0
- data/lib/gooddata/models/domain.rb +479 -0
- data/lib/gooddata/models/execution.rb +115 -0
- data/lib/gooddata/models/execution_detail.rb +81 -0
- data/lib/gooddata/models/from_wire.rb +160 -0
- data/lib/gooddata/models/invitation.rb +75 -0
- data/lib/gooddata/models/links.rb +50 -0
- data/lib/gooddata/models/membership.rb +441 -0
- data/lib/gooddata/models/metadata.rb +272 -0
- data/lib/gooddata/models/metadata/attribute.rb +134 -0
- data/lib/gooddata/models/metadata/dashboard.rb +108 -0
- data/lib/gooddata/models/metadata/dashboard/dashboard_item.rb +76 -0
- data/lib/gooddata/models/metadata/dashboard/filter_apply_item.rb +37 -0
- data/lib/gooddata/models/metadata/dashboard/filter_item.rb +64 -0
- data/lib/gooddata/models/metadata/dashboard/geo_chart_item.rb +56 -0
- data/lib/gooddata/models/metadata/dashboard/headline_item.rb +56 -0
- data/lib/gooddata/models/metadata/dashboard/iframe_item.rb +46 -0
- data/lib/gooddata/models/metadata/dashboard/report_item.rb +92 -0
- data/lib/gooddata/models/metadata/dashboard/text_item.rb +55 -0
- data/lib/gooddata/models/metadata/dashboard_tab.rb +141 -0
- data/lib/gooddata/models/metadata/dataset.rb +64 -0
- data/lib/gooddata/models/metadata/dimension.rb +54 -0
- data/lib/gooddata/models/metadata/fact.rb +44 -0
- data/lib/gooddata/models/metadata/label.rb +128 -0
- data/lib/gooddata/models/metadata/metadata.rb +12 -0
- data/lib/gooddata/models/metadata/metric.rb +198 -0
- data/lib/gooddata/models/metadata/report.rb +247 -0
- data/lib/gooddata/models/metadata/report_definition.rb +264 -0
- data/lib/gooddata/models/metadata/scheduled_mail.rb +274 -0
- data/lib/gooddata/models/metadata/scheduled_mail/dashboard_attachment.rb +62 -0
- data/lib/gooddata/models/metadata/scheduled_mail/report_attachment.rb +64 -0
- data/lib/gooddata/models/metadata/variable.rb +91 -0
- data/lib/gooddata/models/model.rb +282 -0
- data/lib/gooddata/models/models.rb +12 -0
- data/lib/gooddata/models/module_constants.rb +31 -0
- data/lib/gooddata/models/process.rb +316 -0
- data/lib/gooddata/models/profile.rb +426 -0
- data/lib/gooddata/models/project.rb +1514 -0
- data/lib/gooddata/models/project_creator.rb +126 -0
- data/lib/gooddata/models/project_metadata.rb +67 -0
- data/lib/gooddata/models/project_role.rb +79 -0
- data/lib/gooddata/models/report_data_result.rb +266 -0
- data/lib/gooddata/models/schedule.rb +518 -0
- data/lib/gooddata/models/segment.rb +201 -0
- data/lib/gooddata/models/tab_builder.rb +27 -0
- data/lib/gooddata/models/user_filters/mandatory_user_filter.rb +76 -0
- data/lib/gooddata/models/user_filters/user_filter.rb +100 -0
- data/lib/gooddata/models/user_filters/user_filter_builder.rb +512 -0
- data/lib/gooddata/models/user_filters/user_filters.rb +13 -0
- data/lib/gooddata/models/user_filters/variable_user_filter.rb +31 -0
- data/lib/gooddata/models/user_group.rb +241 -0
- data/lib/gooddata/rest/README.md +37 -0
- data/lib/gooddata/rest/client.rb +389 -0
- data/lib/gooddata/rest/connection.rb +765 -0
- data/lib/gooddata/rest/object.rb +69 -0
- data/lib/gooddata/rest/object_factory.rb +76 -0
- data/lib/gooddata/rest/resource.rb +27 -0
- data/lib/gooddata/rest/rest.rb +24 -0
- data/lib/gooddata/version.rb +23 -0
- data/lib/templates/bricks/brick.rb.erb +7 -0
- data/lib/templates/bricks/main.rb.erb +5 -0
- data/lib/templates/project/Goodfile.erb +4 -0
- data/lib/templates/project/data/commits.csv +4 -0
- data/lib/templates/project/data/devs.csv +4 -0
- data/lib/templates/project/data/repos.csv +3 -0
- data/lib/templates/project/model/model.rb.erb +20 -0
- data/spec/bricks/bricks_spec.rb +112 -0
- data/spec/bricks/default-config.json +8 -0
- data/spec/data/.gooddata +4 -0
- data/spec/data/blueprints/additional_dataset_module.json +32 -0
- data/spec/data/blueprints/big_blueprint_not_pruned.json +2079 -0
- data/spec/data/blueprints/invalid_blueprint.json +103 -0
- data/spec/data/blueprints/m_n_model.json +104 -0
- data/spec/data/blueprints/model_module.json +25 -0
- data/spec/data/blueprints/test_blueprint.json +38 -0
- data/spec/data/blueprints/test_project_model_spec.json +106 -0
- data/spec/data/cc/data/source/commits.csv +4 -0
- data/spec/data/cc/data/source/devs.csv +4 -0
- data/spec/data/cc/data/source/repos.csv +3 -0
- data/spec/data/cc/devel.prm +0 -0
- data/spec/data/cc/graph/graph.grf +11 -0
- data/spec/data/cc/workspace.prm +19 -0
- data/spec/data/column_based_permissions.csv +7 -0
- data/spec/data/column_based_permissions2.csv +6 -0
- data/spec/data/gd_gse_data_blueprint.json +1371 -0
- data/spec/data/gd_gse_data_manifest.json +1424 -0
- data/spec/data/gd_gse_data_model.json +1772 -0
- data/spec/data/gooddata_version_process/gooddata_version.rb +9 -0
- data/spec/data/gooddata_version_process/gooddata_version.zip +0 -0
- data/spec/data/hello_world_process/hello_world.rb +9 -0
- data/spec/data/hello_world_process/hello_world.zip +0 -0
- data/spec/data/line_based_permissions.csv +3 -0
- data/spec/data/manifests/test_blueprint.json +32 -0
- data/spec/data/manifests/test_project.json +107 -0
- data/spec/data/reports/left_attr_report.json +108 -0
- data/spec/data/reports/metric_only_one_line.json +83 -0
- data/spec/data/reports/report_1.json +197 -0
- data/spec/data/reports/top_attr_report.json +108 -0
- data/spec/data/ruby_params_process/ruby_params.rb +9 -0
- data/spec/data/ruby_process/deep_files/deep_stuff.txt +1 -0
- data/spec/data/ruby_process/process.rb +8 -0
- data/spec/data/ruby_process/stuff.txt +1 -0
- data/spec/data/superfluous_titles_view.json +81 -0
- data/spec/data/test-ci-data.csv +2 -0
- data/spec/data/users.csv +12 -0
- data/spec/data/wire_models/model_view.json +1775 -0
- data/spec/data/wire_models/nu_model.json +3046 -0
- data/spec/data/wire_models/test_blueprint.json +63 -0
- data/spec/data/wire_test_project.json +150 -0
- data/spec/environment/default.rb +41 -0
- data/spec/environment/develop.rb +31 -0
- data/spec/environment/environment.rb +18 -0
- data/spec/environment/hotfix.rb +21 -0
- data/spec/environment/production.rb +35 -0
- data/spec/environment/release.rb +21 -0
- data/spec/environment/staging.rb +30 -0
- data/spec/environment/staging_3.rb +36 -0
- data/spec/helpers/blueprint_helper.rb +26 -0
- data/spec/helpers/cli_helper.rb +36 -0
- data/spec/helpers/connection_helper.rb +41 -0
- data/spec/helpers/crypto_helper.rb +17 -0
- data/spec/helpers/csv_helper.rb +18 -0
- data/spec/helpers/process_helper.rb +33 -0
- data/spec/helpers/project_helper.rb +59 -0
- data/spec/helpers/schedule_helper.rb +31 -0
- data/spec/helpers/spec_helper.rb +15 -0
- data/spec/integration/blueprint_updates_spec.rb +101 -0
- data/spec/integration/blueprint_with_grain_spec.rb +72 -0
- data/spec/integration/clients_spec.rb +134 -0
- data/spec/integration/command_datawarehouse_spec.rb +39 -0
- data/spec/integration/command_projects_spec.rb +32 -0
- data/spec/integration/create_from_template_spec.rb +22 -0
- data/spec/integration/create_project_spec.rb +24 -0
- data/spec/integration/date_dim_switch_spec.rb +142 -0
- data/spec/integration/deprecated_load_spec.rb +58 -0
- data/spec/integration/full_process_schedule_spec.rb +298 -0
- data/spec/integration/full_project_spec.rb +569 -0
- data/spec/integration/over_to_user_filters_spec.rb +94 -0
- data/spec/integration/partial_md_export_import_spec.rb +42 -0
- data/spec/integration/project_spec.rb +264 -0
- data/spec/integration/rest_spec.rb +213 -0
- data/spec/integration/schedule_spec.rb +626 -0
- data/spec/integration/segments_spec.rb +141 -0
- data/spec/integration/user_filters_spec.rb +290 -0
- data/spec/integration/user_group_spec.rb +127 -0
- data/spec/integration/variables_spec.rb +188 -0
- data/spec/logging_in_logging_out_spec.rb +93 -0
- data/spec/spec_helper.rb +95 -0
- data/spec/unit/bricks/bricks_spec.rb +35 -0
- data/spec/unit/bricks/middleware/aws_middelware_spec.rb +51 -0
- data/spec/unit/bricks/middleware/bench_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/bulk_salesforce_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/gooddata_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/logger_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/restforce_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/stdout_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/twitter_middleware_spec.rb +15 -0
- data/spec/unit/cli/cli_spec.rb +17 -0
- data/spec/unit/cli/commands/cmd_auth_spec.rb +17 -0
- data/spec/unit/commands/command_projects_spec.rb +22 -0
- data/spec/unit/core/connection_spec.rb +57 -0
- data/spec/unit/core/logging_spec.rb +133 -0
- data/spec/unit/core/nil_logger_spec.rb +13 -0
- data/spec/unit/core/project_spec.rb +54 -0
- data/spec/unit/extensions/hash_spec.rb +23 -0
- data/spec/unit/godzilla/goodzilla_spec.rb +78 -0
- data/spec/unit/helpers/csv_helper_spec.rb +22 -0
- data/spec/unit/helpers/data_helper_spec.rb +61 -0
- data/spec/unit/helpers/global_helpers_spec.rb +111 -0
- data/spec/unit/helpers_spec.rb +86 -0
- data/spec/unit/models/blueprint/attributes_spec.rb +29 -0
- data/spec/unit/models/blueprint/dataset_spec.rb +121 -0
- data/spec/unit/models/blueprint/labels_spec.rb +44 -0
- data/spec/unit/models/blueprint/project_blueprint_spec.rb +648 -0
- data/spec/unit/models/blueprint/reference_spec.rb +29 -0
- data/spec/unit/models/blueprint/schema_builder_spec.rb +38 -0
- data/spec/unit/models/blueprint/to_wire_spec.rb +174 -0
- data/spec/unit/models/domain_spec.rb +144 -0
- data/spec/unit/models/execution_spec.rb +108 -0
- data/spec/unit/models/from_wire_spec.rb +296 -0
- data/spec/unit/models/invitation_spec.rb +17 -0
- data/spec/unit/models/membership_spec.rb +132 -0
- data/spec/unit/models/metadata_spec.rb +104 -0
- data/spec/unit/models/metric_spec.rb +117 -0
- data/spec/unit/models/model_spec.rb +82 -0
- data/spec/unit/models/params_spec.rb +118 -0
- data/spec/unit/models/profile_spec.rb +215 -0
- data/spec/unit/models/project_creator_spec.rb +127 -0
- data/spec/unit/models/project_role_spec.rb +94 -0
- data/spec/unit/models/project_spec.rb +162 -0
- data/spec/unit/models/report_result_data_spec.rb +199 -0
- data/spec/unit/models/schedule_spec.rb +418 -0
- data/spec/unit/models/to_manifest_spec.rb +63 -0
- data/spec/unit/models/unit_project_spec.rb +125 -0
- data/spec/unit/models/user_filters_spec.rb +95 -0
- data/spec/unit/models/variable_spec.rb +265 -0
- data/spec/unit/rest/polling_spec.rb +89 -0
- data/spec/unit/rest/resource_spec.rb +10 -0
- data/yard-server.sh +3 -0
- metadata +1125 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
module GoodData
|
8
|
+
module Command
|
9
|
+
# Also known as ADS and DSS
|
10
|
+
class DataWarehouse
|
11
|
+
class << self
|
12
|
+
# Create new project based on options supplied
|
13
|
+
def create(options = { client: GoodData.connection })
|
14
|
+
description = options[:summary] || options[:description]
|
15
|
+
GoodData::DataWarehouse.create(options.merge(:description => description))
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
require_relative '../exceptions/command_failed'
|
8
|
+
require_relative '../models/domain'
|
9
|
+
|
10
|
+
module GoodData
|
11
|
+
module Command
|
12
|
+
# Low level access to GoodData API
|
13
|
+
class Domain
|
14
|
+
attr_reader :name
|
15
|
+
|
16
|
+
class << self
|
17
|
+
def add_user(domain, login, password, opts = { :client => GoodData.connection })
|
18
|
+
data = {
|
19
|
+
:domain => domain,
|
20
|
+
:login => login,
|
21
|
+
:password => password
|
22
|
+
}
|
23
|
+
GoodData::Domain.add_user(data.merge(opts))
|
24
|
+
end
|
25
|
+
|
26
|
+
def list_users(domain_name, options = { :client => GoodData.connection })
|
27
|
+
client = GoodData.connect(options)
|
28
|
+
domain = client.domain(domain_name)
|
29
|
+
|
30
|
+
rows = domain.users.to_a.map do |user|
|
31
|
+
[user.email, user.full_name]
|
32
|
+
end
|
33
|
+
|
34
|
+
table = Terminal::Table.new :headings => ['Email', 'Full Name'], :rows => rows
|
35
|
+
puts table
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
require 'pathname'
|
8
|
+
|
9
|
+
require_relative '../core/core'
|
10
|
+
|
11
|
+
module GoodData
|
12
|
+
module Command
|
13
|
+
class Process
|
14
|
+
class << self
|
15
|
+
def list(options = { :client => GoodData.connection, :project => GoodData.project })
|
16
|
+
GoodData::Process[:all, options]
|
17
|
+
end
|
18
|
+
|
19
|
+
def get(options = {})
|
20
|
+
pid = options[:project_id]
|
21
|
+
fail ArgumentError, 'None or invalid project_id specified' if pid.nil? || pid.empty?
|
22
|
+
|
23
|
+
id = options[:process_id]
|
24
|
+
fail ArgumentError, 'None or invalid process_id' if id.nil? || id.empty?
|
25
|
+
c = options[:client]
|
26
|
+
c.with_project(pid) do |project|
|
27
|
+
project.processes(id)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def delete(process_id, options = { :client => GoodData.connection, :project => GoodData.project })
|
32
|
+
c = options[:client]
|
33
|
+
pid = options[:project_id]
|
34
|
+
process = c.with_project(pid) do |project|
|
35
|
+
project.processes(process_id)
|
36
|
+
end
|
37
|
+
process.delete
|
38
|
+
end
|
39
|
+
|
40
|
+
# TODO: check files_to_exclude param. Does it do anything? It should check that in case of using CLI, it makes sure the files are not deployed
|
41
|
+
def deploy(dir, options = { :client => GoodData.connection, :project => GoodData.project })
|
42
|
+
params = options[:params].nil? ? [] : [options[:params]]
|
43
|
+
c = options[:client]
|
44
|
+
pid = options[:project_id]
|
45
|
+
c.with_project(pid) do |project|
|
46
|
+
project.deploy_process(dir, options.merge(:files_to_exclude => params))
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def execute_process(process_id, executable, options = { :client => GoodData.connection, :project => GoodData.project })
|
51
|
+
process = GoodData::Process[process_id, options]
|
52
|
+
process.execute_process(executable, options)
|
53
|
+
end
|
54
|
+
|
55
|
+
def run(dir, executable, options = { :client => GoodData.connection, :project => GoodData.project })
|
56
|
+
verbose = options[:v]
|
57
|
+
dir = Pathname(dir)
|
58
|
+
name = options[:name] || "Temporary deploy[#{dir}][#{options[:project_name]}]"
|
59
|
+
GoodData::Process.with_deploy(dir, options.merge(:name => name, :project_id => ProjectHelper::PROJECT_ID)) do |process|
|
60
|
+
puts HighLine.color('Executing', HighLine::BOLD) if verbose
|
61
|
+
process.execute(executable, options)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,175 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
require 'pathname'
|
8
|
+
require 'terminal-table'
|
9
|
+
|
10
|
+
require_relative '../connection'
|
11
|
+
|
12
|
+
module GoodData
|
13
|
+
module Command
|
14
|
+
class Project
|
15
|
+
class << self
|
16
|
+
# Create new project based on options supplied
|
17
|
+
def create(options = { client: GoodData.connection })
|
18
|
+
title = options[:title]
|
19
|
+
summary = options[:summary]
|
20
|
+
template = options[:template]
|
21
|
+
token = options[:token]
|
22
|
+
client = options[:client]
|
23
|
+
driver = options[:driver] || 'Pg'
|
24
|
+
GoodData::Project.create(:title => title, :summary => summary, :template => template, :auth_token => token, :client => client, :driver => driver)
|
25
|
+
end
|
26
|
+
|
27
|
+
# Show existing project
|
28
|
+
def show(id, options = { client: GoodData.connection })
|
29
|
+
client = options[:client]
|
30
|
+
client.projects(id)
|
31
|
+
end
|
32
|
+
|
33
|
+
def invite(project_id, email, role, msg = GoodData::Project::DEFAULT_INVITE_MESSAGE, options = {})
|
34
|
+
client = options[:client]
|
35
|
+
project = client.projects(project_id)
|
36
|
+
fail "Invalid project id '#{project_id}' specified" if project.nil?
|
37
|
+
|
38
|
+
project.invite(email, role, msg)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Clone existing project
|
42
|
+
#
|
43
|
+
# @param project_id [String | GoodData::Project] Project id or project instance to delete
|
44
|
+
# @option options [String] :data Clone including all the data (default true)
|
45
|
+
# @option options [String] :users Clone including all the users (default false)
|
46
|
+
# @option options [String] :title Name of the cloned project (default "Clone of {old_project_title}")
|
47
|
+
# @option options [Boolean] :verbose (false) Switch on verbose mode for detailed logging
|
48
|
+
def clone(project_id, options = { client: GoodData.connection })
|
49
|
+
client = options[:client]
|
50
|
+
client.with_project(project_id) do |project|
|
51
|
+
project.clone(options)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# Deletes existing project
|
56
|
+
#
|
57
|
+
# @param project_id [String | GoodData::Project] Project id or project instance to delete
|
58
|
+
def delete(project_id, options = { client: GoodData.connection })
|
59
|
+
client = options[:client]
|
60
|
+
p = client.projects(project_id)
|
61
|
+
p.delete
|
62
|
+
end
|
63
|
+
|
64
|
+
# Get Spec and ID (of project)
|
65
|
+
def get_spec_and_project_id(base_path)
|
66
|
+
goodfile_path = GoodData::Helpers.find_goodfile(Pathname(base_path))
|
67
|
+
fail 'Goodfile could not be located in any parent directory. Please make sure you are inside a gooddata project folder.' if goodfile_path.nil?
|
68
|
+
goodfile = JSON.parse(File.read(goodfile_path), :symbolize_names => true)
|
69
|
+
spec_path = goodfile[:model] || fail('You need to specify the path of the build spec')
|
70
|
+
fail "Model path provided in Goodfile \"#{spec_path}\" does not exist" unless File.exist?(spec_path) && !File.directory?(spec_path)
|
71
|
+
|
72
|
+
spec_path = Pathname(spec_path)
|
73
|
+
|
74
|
+
content = File.read(spec_path)
|
75
|
+
spec = if spec_path.extname == '.rb'
|
76
|
+
eval(content)
|
77
|
+
elsif spec_path.extname == '.json'
|
78
|
+
JSON.parse(spec_path, :symbolize_names => true)
|
79
|
+
end
|
80
|
+
[spec, goodfile[:project_id]]
|
81
|
+
end
|
82
|
+
|
83
|
+
# Update project
|
84
|
+
def update(opts = { client: GoodData.connection })
|
85
|
+
client, project = GoodData.get_client_and_project(opts)
|
86
|
+
GoodData::Model::ProjectCreator.migrate(:spec => opts[:spec], :client => client, :project => project)
|
87
|
+
end
|
88
|
+
|
89
|
+
# Build project
|
90
|
+
def build(opts = { client: GoodData.connection })
|
91
|
+
client = opts[:client]
|
92
|
+
fail ArgumentError, 'No :client specified' if client.nil?
|
93
|
+
|
94
|
+
GoodData::Model::ProjectCreator.migrate(opts.merge(:client => client))
|
95
|
+
end
|
96
|
+
|
97
|
+
# Performs project validation
|
98
|
+
#
|
99
|
+
# @param project_id [String | GoodData::Project] Project id or project instance to validate
|
100
|
+
# @return [Object] Report of found problems
|
101
|
+
def validate(project_id, options = { client: GoodData.connection })
|
102
|
+
client = options[:client]
|
103
|
+
client.with_project(project_id, &:validate)
|
104
|
+
end
|
105
|
+
|
106
|
+
def jack_in(options)
|
107
|
+
goodfile_path = GoodData::Helpers.find_goodfile(Pathname('.'))
|
108
|
+
|
109
|
+
spin_session = proc do |goodfile, _blueprint|
|
110
|
+
project_id = options[:project_id] || goodfile[:project_id]
|
111
|
+
|
112
|
+
begin
|
113
|
+
require 'gooddata'
|
114
|
+
client = GoodData.connect(options)
|
115
|
+
project = client.projects(project_id) if project_id
|
116
|
+
puts "Use 'exit' to quit the live session. Use 'q' to jump out of displaying a large output."
|
117
|
+
binding.pry(:quiet => true, # rubocop:disable Lint/Debugger
|
118
|
+
:prompt => [proc do |_target_self, _nest_level, _pry|
|
119
|
+
'project_live_session: '
|
120
|
+
end])
|
121
|
+
rescue GoodData::ProjectNotFound
|
122
|
+
puts "Project with id \"#{project_id}\" could not be found. Make sure that the id you provided is correct."
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
if goodfile_path
|
127
|
+
goodfile = MultiJson.load(File.read(goodfile_path), :symbolize_keys => true)
|
128
|
+
model_key = goodfile[:model]
|
129
|
+
blueprint = GoodData::Model::ProjectBlueprint.new(eval(File.read(model_key)).to_hash) if File.exist?(model_key) && !File.directory?(model_key)
|
130
|
+
FileUtils.cd(goodfile_path.dirname) do
|
131
|
+
spin_session.call(goodfile, blueprint)
|
132
|
+
end
|
133
|
+
else
|
134
|
+
spin_session.call({}, nil)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
# Lists roles in a project
|
139
|
+
#
|
140
|
+
# @param project_id [String | GoodData::Project] Project id or project instance to list the users in
|
141
|
+
# @return [Array <GoodData::Role>] List of project roles
|
142
|
+
def roles(project_id, options = { client: GoodData.connection })
|
143
|
+
client = options[:client]
|
144
|
+
client.with_project(project_id, &:roles)
|
145
|
+
end
|
146
|
+
|
147
|
+
# Lists users in a project
|
148
|
+
#
|
149
|
+
# @param project_id [String | GoodData::Project] Project id or project instance to list the users in
|
150
|
+
# @return [Array <GoodData::Membership>] List of project users
|
151
|
+
def users(project_id, options = { client: GoodData.connection })
|
152
|
+
client = options[:client] || GoodData.connect(options)
|
153
|
+
client.with_project(project_id, &:users)
|
154
|
+
end
|
155
|
+
|
156
|
+
# Lists users in a project
|
157
|
+
#
|
158
|
+
# @param options [Hash] List of users
|
159
|
+
#
|
160
|
+
# TODO: Review and refactor #users & #list_users
|
161
|
+
def list_users(options = { client: GoodData.connection })
|
162
|
+
client = GoodData.connect(options)
|
163
|
+
project = client.projects(options[:project_id])
|
164
|
+
|
165
|
+
rows = project.users.to_a.map do |user|
|
166
|
+
[user.email, user.full_name, user.role.title, user.user_groups.join(', ')]
|
167
|
+
end
|
168
|
+
|
169
|
+
table = Terminal::Table.new :headings => ['Email', 'Full Name', 'Role', 'Groups'], :rows => rows
|
170
|
+
puts table
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
require 'pathname'
|
8
|
+
|
9
|
+
module GoodData
|
10
|
+
module Command
|
11
|
+
class Projects
|
12
|
+
class << self
|
13
|
+
def list(options = { client: GoodData.connection })
|
14
|
+
client = options[:client]
|
15
|
+
client.projects
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
require_relative '../core/core'
|
8
|
+
|
9
|
+
module GoodData
|
10
|
+
module Command
|
11
|
+
class Role
|
12
|
+
class << self
|
13
|
+
def list(_pid, opts = { :client => GoodData.connection, :project => GoodData.project })
|
14
|
+
p = opts[:project]
|
15
|
+
fail ArgumentError, 'No :project specified' if p.nil?
|
16
|
+
|
17
|
+
project = GoodData::Project[p, opts]
|
18
|
+
fail ArgumentError, 'Wrong :project specified' if project.nil?
|
19
|
+
|
20
|
+
roles_response = client.get("/gdc/projects/#{project.pid}/roles")
|
21
|
+
|
22
|
+
roles = {}
|
23
|
+
roles_response['projectRoles']['roles'].each do |role_uri|
|
24
|
+
r = client.get(role_uri)
|
25
|
+
identifier = r['projectRole']['meta']['identifier']
|
26
|
+
roles[identifier] = {
|
27
|
+
:user_uri => r['projectRole']['links']['roleUsers'],
|
28
|
+
:uri => role_uri
|
29
|
+
}
|
30
|
+
end
|
31
|
+
roles
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
require 'pathname'
|
8
|
+
|
9
|
+
module GoodData
|
10
|
+
module Command
|
11
|
+
class Runners
|
12
|
+
def self.run_ruby_locally(brick_dir, options = {})
|
13
|
+
pid = options[:project_id]
|
14
|
+
fail 'You have to specify a project ID' if pid.nil?
|
15
|
+
fail 'You have to specify directory of the brick run' if brick_dir.nil?
|
16
|
+
fail 'You specified file as a birck run directory. You have to specify directory.' if File.exist?(brick_dir) && !File.directory?(brick_dir)
|
17
|
+
|
18
|
+
params = options[:expanded_params] || {}
|
19
|
+
|
20
|
+
client = GoodData.connect(options[:username], options[:password])
|
21
|
+
sst = client.connection.sst_token
|
22
|
+
pwd = Pathname.new(Dir.pwd)
|
23
|
+
|
24
|
+
server_uri = URI(options[:server]) unless options[:server].nil?
|
25
|
+
scheme = server_uri.nil? ? '' : server_uri.scheme
|
26
|
+
hostname = server_uri.nil? ? '' : server_uri.host
|
27
|
+
|
28
|
+
script_body = <<-script_body
|
29
|
+
require 'fileutils'
|
30
|
+
FileUtils::cd(\"#{pwd + brick_dir}\") do\
|
31
|
+
|
32
|
+
$SCRIPT_PARAMS = {
|
33
|
+
"GDC_SST" => \"#{sst}\",
|
34
|
+
"GDC_PROJECT_ID" => \"#{pid}\",
|
35
|
+
"GDC_PROTOCOL" => \"#{scheme}\",
|
36
|
+
"GDC_HOSTNAME" => \"#{hostname}\",
|
37
|
+
"GDC_LOGGER_FILE" => STDOUT,
|
38
|
+
"GDC_ENV_LOCAL" => true
|
39
|
+
}.merge(#{params})
|
40
|
+
require './main.rb'
|
41
|
+
end
|
42
|
+
script_body
|
43
|
+
system('ruby', '-e', script_body)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
require 'erubis'
|
8
|
+
require 'fileutils'
|
9
|
+
require 'pathname'
|
10
|
+
|
11
|
+
module GoodData
|
12
|
+
module Command
|
13
|
+
class Scaffold
|
14
|
+
TEMPLATES_PATH = Pathname(__FILE__) + '../../../templates'
|
15
|
+
|
16
|
+
class << self
|
17
|
+
# Scaffolds new project
|
18
|
+
# TODO: Add option for custom output dir
|
19
|
+
def project(name)
|
20
|
+
fail ArgumentError, 'No name specified' if name.nil?
|
21
|
+
|
22
|
+
FileUtils.mkdir(name)
|
23
|
+
FileUtils.cd(name) do
|
24
|
+
FileUtils.mkdir('model')
|
25
|
+
FileUtils.cd('model') do
|
26
|
+
input = File.read(TEMPLATES_PATH + 'project/model/model.rb.erb')
|
27
|
+
eruby = Erubis::Eruby.new(input)
|
28
|
+
File.open('model.rb', 'w') do |f|
|
29
|
+
f.write(eruby.result(:name => name))
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
FileUtils.mkdir('data')
|
34
|
+
FileUtils.cd('data') do
|
35
|
+
FileUtils.cp(Dir.glob(TEMPLATES_PATH + 'project/data/*.csv'), '.')
|
36
|
+
end
|
37
|
+
|
38
|
+
input = File.read(TEMPLATES_PATH + 'project/Goodfile.erb')
|
39
|
+
eruby = Erubis::Eruby.new(input)
|
40
|
+
File.open('Goodfile', 'w') do |f|
|
41
|
+
f.write(eruby.result)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Scaffolds new brick
|
47
|
+
# TODO: Add option for custom output dir
|
48
|
+
def brick(name)
|
49
|
+
fail ArgumentError, 'No name specified' if name.nil?
|
50
|
+
|
51
|
+
FileUtils.mkdir(name)
|
52
|
+
FileUtils.cd(name) do
|
53
|
+
input = File.read(TEMPLATES_PATH + 'bricks/brick.rb.erb')
|
54
|
+
eruby = Erubis::Eruby.new(input)
|
55
|
+
File.open('brick.rb', 'w') do |f|
|
56
|
+
f.write(eruby.result)
|
57
|
+
end
|
58
|
+
|
59
|
+
input = File.read(TEMPLATES_PATH + 'bricks/main.rb.erb')
|
60
|
+
eruby = Erubis::Eruby.new(input)
|
61
|
+
File.open('main.rb', 'w') do |f|
|
62
|
+
f.write(eruby.result)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|