class PivotalIntegration::Command::Configuration

A class that exposes configuration that commands can use

Constants

KEY_API_TOKEN
KEY_PROJECT_ID
KEY_STORY_ID
KEY_USER

Public Instance Methods

api_token() click to toggle source

Returns the user’s Pivotal Tracker API token. If this token has not been configured, prompts the user for the value. The value is checked for in the inherited Git configuration, but is stored in the global Git configuration so that it can be used across multiple repositories.

@return [String] The user’s Pivotal Tracker API token

# File lib/pivotal-integration/command/configuration.rb, line 30
def api_token
  api_token = PivotalIntegration::Util::Git.get_config KEY_API_TOKEN, :inherited

  if api_token.empty?
    api_token = ask('Pivotal API Token (found at https://www.pivotaltracker.com/profile): ').strip
    PivotalIntegration::Util::Git.set_config KEY_API_TOKEN, api_token, :global
    puts
  end

  api_token
end
project() click to toggle source

Returns the Pivotal Tracker project for this repository. If it is not configured yet, prompts the user for the value.

@return [PivotalTracker::Project] The repository’s Pivotal Tracker project

# File lib/pivotal-integration/command/configuration.rb, line 71
def project
  PivotalTracker::Project.find project_id
end
project_id() click to toggle source

Returns the Pivotal Tracker project id for this repository. If this id has not been configuration, prompts the user for the value. The value is checked for in the inherited Git configuration, but is stored in the local Git configuration so that it is specific to this repository.

@return [String] The repository’s Pivotal Tracker project id

# File lib/pivotal-integration/command/configuration.rb, line 48
def project_id
  project_id = PivotalIntegration::Util::Git.get_config KEY_PROJECT_ID, :inherited

  if project_id.empty?
    project_id = choose do |menu|
      menu.prompt = 'Choose project associated with this repository: '

      PivotalTracker::Project.all.sort_by { |project| project.name }.each do |project|
        menu.choice(project.name) { project.id }
      end
    end

    PivotalIntegration::Util::Git.set_config KEY_PROJECT_ID, project_id, :local
    puts
  end

  project_id
end
story() click to toggle source

Returns the story associated with the current development branch

@return [PivotalTracker::Story] the story associated with the current development branch

# File lib/pivotal-integration/command/configuration.rb, line 102
def story
  story_id = PivotalIntegration::Util::Git.get_config KEY_STORY_ID, :branch
  if story_id.empty?
    abort("You need to be on started story branch to do this!")
  else
    project.stories.find(story_id)
  end
end
story=(story) click to toggle source

Stores the story associated with the current development branch

@param [PivotalTracker::Story] story the story associated with the current development branch @return [void]

# File lib/pivotal-integration/command/configuration.rb, line 115
def story=(story)
  PivotalIntegration::Util::Git.set_config KEY_STORY_ID, story.id, :branch
end
user() click to toggle source

Returns the Pivotal Tracker user id for this repository. If this id has not been configuration, prompts the user for the value. The value is checked for in the inherited Git configuration, but is stored in the local Git configuration so that it is specific to this repository.

@return [String] The repository’s Pivotal Tracker user id

# File lib/pivotal-integration/command/configuration.rb, line 81
def user
  user = PivotalIntegration::Util::Git.get_config KEY_USER, :inherited

  if user.empty?
    user = choose do |menu|
      menu.prompt = 'Choose your user name associated with this repository: '

      PivotalTracker::Project.all.map{ |p| p.memberships.all.map(&:name) }.flatten.uniq.each do |owner|
        menu.choice(owner) { owner }
      end
    end

    PivotalIntegration::Util::Git.set_config KEY_USER, user.inspect, :local
  end

  user
end