Class: GitlabCli::Command::Snippet

Inherits:
Thor
  • Object
show all
Defined in:
lib/gitlab_cli/command/snippet.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details



6
7
8
# File 'lib/gitlab_cli/command/snippet.rb', line 6

def self.banner(task, namespace = true, subcommand = true)
  "#{basename} #{task.formatted_usage(self, true, subcommand)}"
end

Instance Method Details

#add(project, file = nil) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/gitlab_cli/command/snippet.rb', line 22

def add(project, file=nil)
  snippet = GitlabCli::Util::Snippet.create(project, options['title'], options['file_name'], file)

  GitlabCli.ui.success "Snippet created."
  GitlabCli.ui.info "ID: %s" % [snippet.id]
  GitlabCli.ui.info "URL: %s" % [snippet.view_url]
end

#delete(project, snippet) ⇒ Object



92
93
94
95
96
97
98
99
# File 'lib/gitlab_cli/command/snippet.rb', line 92

def delete(project, snippet)
  response = GitlabCli.ui.yes? "Are you sure you want to delete this snippet? (Yes\\No)" unless options['yes']
  exit unless options['yes'] || response

  snippet = GitlabCli::Util::Snippet.delete(project, snippet)

  GitlabCli.ui.success "Successfully deleted the snippet."
end

#download(project, snippet, file_path) ⇒ Object



127
128
129
130
131
# File 'lib/gitlab_cli/command/snippet.rb', line 127

def download(project, snippet, file_path)
  snippet = GitlabCli::Util::Snippet.download(project, snippet, file_path)

  GitlabCli.ui.success "Snippet file saved successfully.\n"
end

#edit(project, snippet) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/gitlab_cli/command/snippet.rb', line 63

def edit(project, snippet)
  snippet_obj = GitlabCli::Util::Snippet.get(project, snippet)
  snippet_code = GitlabCli::Util::Snippet.view(project, snippet)

  editor = ENV['editor'] || 'vi'

  temp_file_path = "/tmp/snippet.%s" % [rand]
  File.open(temp_file_path, 'w') { |file| file.write(snippet_code) }

  system("vi %s" % [temp_file_path])

  snippet_code = File.read(temp_file_path)

  snippet = GitlabCli::Util::Snippet.update(project, snippet_obj, snippet_code)
  GitlabCli.ui.success "Snippet updated."
  GitlabCli.ui.info "URL: %s" % [snippet.view_url]
end

#info(project, snippet) ⇒ Object



107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/gitlab_cli/command/snippet.rb', line 107

def info(project, snippet)
  snippet = GitlabCli::Util::Snippet.get(project, snippet)

  ui = GitlabCli.ui

  ui.info "Snippet ID: %s" % [snippet.id]
  ui.info "Title: %s" % [snippet.title]
  ui.info "File Name: %s" % [snippet.file_name]
  ui.info "Author: %s <%s>" % [snippet.author.name, snippet.author.email]
  ui.info "Created at: %s" % [Time.parse(snippet.created_at)]
  ui.info "Updated at: %s" % [Time.parse(snippet.updated_at)]
  ui.info "Expires at: %s" % [snippet.expires_at.nil? ? "Never" : Time.parse(snippet.expires_at)]
end

#view(project, snippet) ⇒ Object



41
42
43
44
45
46
47
48
49
50
# File 'lib/gitlab_cli/command/snippet.rb', line 41

def view(project, snippet)
  snippet = GitlabCli::Util::Snippet.view(project, snippet)    

  pager = ENV['pager'] || 'less'

  unless system("echo %s | %s" % [Shellwords.escape(snippet), pager])
    GitlabCli.ui.error "Problem displaying snippet"
    exit 1
  end
end