class GoodData::Command::Project
Public Class Methods
Source
# File lib/gooddata/commands/project.rb, line 91 def build(opts = { client: GoodData.connection }) client = opts[:client] fail ArgumentError, 'No :client specified' if client.nil? GoodData::Model::ProjectCreator.migrate(opts.merge(:client => client)) end
Build project
Source
# File lib/gooddata/commands/project.rb, line 49 def clone(project_id, options = { client: GoodData.connection }) client = options[:client] client.with_project(project_id) do |project| project.clone(options) end end
Clone existing project
@param project_id [String | GoodData::Project
] Project
id or project instance to delete @option options [String] :data Clone including all the data (default true) @option options [String] :users Clone including all the users (default false) @option options [String] :title Name of the cloned project (default “Clone of {old_project_title}”) @option options [Boolean] :exclude_schedules Specifies whether to include scheduled emails @option options [Boolean] :verbose (false) Switch on verbose mode for detailed logging
Source
# File lib/gooddata/commands/project.rb, line 17 def create(options = { client: GoodData.connection }) title = options[:title] summary = options[:summary] template = options[:template] token = options[:token] client = options[:client] driver = options[:driver] || 'Pg' GoodData::Project.create(:title => title, :summary => summary, :template => template, :auth_token => token, :client => client, :driver => driver) end
Create new project based on options supplied
Source
# File lib/gooddata/commands/project.rb, line 59 def delete(project_id, options = { client: GoodData.connection }) client = options[:client] p = client.projects(project_id) p.delete end
Deletes existing project
@param project_id [String | GoodData::Project
] Project
id or project instance to delete
Source
# File lib/gooddata/commands/project.rb, line 66 def get_spec_and_project_id(base_path) goodfile_path = GoodData::Helpers.find_goodfile(Pathname(base_path)) fail 'Goodfile could not be located in any parent directory. Please make sure you are inside a gooddata project folder.' if goodfile_path.nil? goodfile = JSON.parse(File.read(goodfile_path), :symbolize_names => true) spec_path = goodfile[:model] || fail('You need to specify the path of the build spec') fail "Model path provided in Goodfile \"#{spec_path}\" does not exist" unless File.exist?(spec_path) && !File.directory?(spec_path) spec_path = Pathname(spec_path) content = File.read(spec_path) spec = if spec_path.extname == '.rb' eval(content) elsif spec_path.extname == '.json' JSON.parse(spec_path, :symbolize_names => true) end [spec, goodfile[:project_id]] end
Get Spec and ID (of project)
Source
# File lib/gooddata/commands/project.rb, line 33 def invite(project_id, email, role, msg = GoodData::Project::DEFAULT_INVITE_MESSAGE, options = {}) client = options[:client] project = client.projects(project_id) fail "Invalid project id '#{project_id}' specified" if project.nil? project.invite(email, role, msg) end
Source
# File lib/gooddata/commands/project.rb, line 130 def list_users(options = { client: GoodData.connection }) client = GoodData.connect(options) project = client.projects(options[:project_id]) rows = project.users.to_a.map do |user| [user.email, user.full_name, user.role.title, user.user_groups.join(', ')] end table = Terminal::Table.new :headings => ['Email', 'Full Name', 'Role', 'Groups'], :rows => rows puts table end
Lists users in a project
@param options [Hash] List of users
TODO: Review and refactor users & list_users
Source
# File lib/gooddata/commands/project.rb, line 111 def roles(project_id, options = { client: GoodData.connection }) client = options[:client] client.with_project(project_id, &:roles) end
Lists roles in a project
@param project_id [String | GoodData::Project
] Project
id or project instance to list the users in @return [Array <GoodData::Role>] List of project roles
Source
# File lib/gooddata/commands/project.rb, line 28 def show(id, options = { client: GoodData.connection }) client = options[:client] client.projects(id) end
Show existing project
Source
# File lib/gooddata/commands/project.rb, line 85 def update(opts = { client: GoodData.connection }) client, project = GoodData.get_client_and_project(opts) GoodData::Model::ProjectCreator.migrate(:spec => opts[:spec], :client => client, :project => project) end
Update project
Source
# File lib/gooddata/commands/project.rb, line 120 def users(project_id, options = { client: GoodData.connection }) client = options[:client] || GoodData.connect(options) client.with_project(project_id, &:users) end
Lists users in a project
@param project_id [String | GoodData::Project
] Project
id or project instance to list the users in @return [Array <GoodData::Membership>] List of project users
Source
# File lib/gooddata/commands/project.rb, line 102 def validate(project_id, options = { client: GoodData.connection }) client = options[:client] client.with_project(project_id, &:validate) end
Performs project validation
@param project_id [String | GoodData::Project
] Project
id or project instance to validate @return [Object] Report
of found problems