linear-cli 0.9.1 → 0.9.3
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/CHANGELOG.md +7 -2
- data/changelog/0.9.3/fixed_probblem_with_tempfile_for_editing_operations.yml +4 -0
- data/changelog/0.9.3/tag.yml +1 -0
- data/exe/scripts/lc.sh +4 -1
- data/exe/scripts/lclose.sh +2 -2
- data/exe/scripts/lcreate.sh +1 -1
- data/lib/linear/cli/sub_commands.rb +4 -4
- data/lib/linear/cli/version.rb +1 -1
- data/lib/linear/cli/what_for.rb +3 -3
- data/lib/linear/cli.rb +3 -1
- data/lib/linear/models/comment.rb +31 -0
- data/lib/linear/models/issue/class_methods.rb +2 -1
- data/lib/linear/models/issue.rb +11 -2
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5da1640ef734d4c0d3ed5ce059e80041a6808cef50ae9e2921b2bc19da92801e
|
4
|
+
data.tar.gz: 32909d592219559b20c96c2ee5c6ab28d02814c0ffd8b96c2ef443277f00b988
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '02380bc10cd1f815c4d2b70e7ed758ff3d295cf201658657ceba8ec17e309515534028745badaf96ffccd7799ddcd17907cfafb5de26d859da42e85bd1748c06'
|
7
|
+
data.tar.gz: 53213093b700258f122730864dfab5adaadd049eecbd7c2cb2bd13ebe2491e06f4db775c7a5515f977155ebfa07d0e9dbeafe6b0e0b37a8859dcc96627d52cdf
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
## [Unreleased]
|
4
4
|
|
5
|
+
## [0.9.3] - 2024-02-07
|
6
|
+
### Fixed
|
7
|
+
- Fixed probblem with tempfile for editing operations (@bougyman)
|
8
|
+
|
5
9
|
## [0.9.1] - 2024-02-06
|
6
10
|
### Fixed
|
7
11
|
- Fixed wrapper to be more normal about help when listing leaf commands (@bougyman)
|
@@ -75,8 +79,9 @@
|
|
75
79
|
### Added
|
76
80
|
- Added new changelog management system (changelog-rb) (@bougyman)
|
77
81
|
|
78
|
-
[Unreleased]: https://github.com/rubyists/linear-cli/compare/0.9.
|
79
|
-
[0.9.
|
82
|
+
[Unreleased]: https://github.com/rubyists/linear-cli/compare/0.9.3...HEAD
|
83
|
+
[0.9.3]: https://github.com/rubyists/linear-cli/compare/v0.9.1...0.9.3
|
84
|
+
[0.9.1]: https://github.com/rubyists/linear-cli/compare/v0.9.0...v0.9.1
|
80
85
|
[0.9.0]: https://github.com/rubyists/linear-cli/compare/v0.8.6...v0.9.0
|
81
86
|
[0.8.6]: https://github.com/rubyists/linear-cli/compare/v0.8.4...v0.8.6
|
82
87
|
[0.8.4]: https://github.com/rubyists/linear-cli/compare/v0.8.1...v0.8.4
|
@@ -0,0 +1 @@
|
|
1
|
+
date: 2024-02-07
|
data/exe/scripts/lc.sh
CHANGED
@@ -21,7 +21,10 @@ then
|
|
21
21
|
fi
|
22
22
|
linear-cli "$@"
|
23
23
|
result=$?
|
24
|
-
if [ $result -
|
24
|
+
if [ $result -eq 1 ]; then
|
25
|
+
printf "\nlc: You may pass --help for further information on any subcommand\n" >&2
|
26
|
+
exit 1
|
27
|
+
elif [ $result -gt 1 ]; then
|
25
28
|
if [ $result -eq 130 ]; then
|
26
29
|
printf "\n\nlc: linear-cli interrupted\n" >&2
|
27
30
|
exit 130
|
data/exe/scripts/lclose.sh
CHANGED
@@ -4,6 +4,6 @@ then
|
|
4
4
|
printf "This wrapper adds the --close option to the 'issue update' command.\n" >&2
|
5
5
|
printf "It is used to close one or many issues. The issues are specified by their ID/slugs.\n" >&2
|
6
6
|
printf "For closing multiple issues, you really want to pass --reason so you do not get prompted for each issue.\n\n" >&2
|
7
|
-
exec
|
7
|
+
exec lc issue update --close --help
|
8
8
|
fi
|
9
|
-
exec
|
9
|
+
exec lc issue update --close "$@"
|
data/exe/scripts/lcreate.sh
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
#!/usr/bin/env bash
|
2
|
-
exec
|
2
|
+
exec lc issue create "$@"
|
@@ -21,10 +21,6 @@ module Rubyists
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def choose_a_team!(teams)
|
24
|
-
prompt.on(:keypress) do |event|
|
25
|
-
prompt.trigger(:keydown) if event.value == 'j'
|
26
|
-
prompt.trigger(:keyup) if event.value == 'k'
|
27
|
-
end
|
28
24
|
key = prompt.select('Choose a team', teams.to_h { |t| [t.name, t.key] })
|
29
25
|
Rubyists::Linear::Team.find key
|
30
26
|
end
|
@@ -50,6 +46,10 @@ module Rubyists
|
|
50
46
|
git.current_branch
|
51
47
|
end
|
52
48
|
|
49
|
+
def branch_for(branch_name)
|
50
|
+
git.branches.local.detect { |b| b.name == branch_name } || git.branch(branch_name)
|
51
|
+
end
|
52
|
+
|
53
53
|
# Horrible way to do this, but it is working for now
|
54
54
|
def pull_or_push_new_branch!(branch_name)
|
55
55
|
git.pull
|
data/lib/linear/cli/version.rb
CHANGED
data/lib/linear/cli/what_for.rb
CHANGED
@@ -51,7 +51,7 @@ module Rubyists
|
|
51
51
|
answer = prompt.ask("#{question}: ('-' to open an editor)", default: '-')
|
52
52
|
return answer unless answer == '-'
|
53
53
|
|
54
|
-
answer = editor_for [
|
54
|
+
answer = editor_for [question.downcase, '.md']
|
55
55
|
raise SmellsBad, "No content provided for #{question}" if answer.empty?
|
56
56
|
|
57
57
|
answer
|
@@ -78,11 +78,11 @@ module Rubyists
|
|
78
78
|
projects.select { |p| p.match_score?(search_term).positive? }.sort_by { |p| p.match_score?(search_term) }
|
79
79
|
end
|
80
80
|
|
81
|
-
def project_for(team, project = nil)
|
81
|
+
def project_for(team, project = nil) # rubocop:disable Metrics/AbcSize
|
82
82
|
projects = team.projects
|
83
83
|
return nil if projects.empty?
|
84
84
|
|
85
|
-
possibles = project_scores(projects, project)
|
85
|
+
possibles = project ? project_scores(projects, project) : []
|
86
86
|
return ask_for_projects(projects, search: project) if possibles.empty?
|
87
87
|
|
88
88
|
first = possibles.first
|
data/lib/linear/cli.rb
CHANGED
@@ -24,6 +24,7 @@ module Dry
|
|
24
24
|
out.puts Completely::Completions.new(
|
25
25
|
Input.new(@registry, @program_name).call(include_aliases:)
|
26
26
|
).script
|
27
|
+
# Here is the only change in our monkeypatch! Lame, right?
|
27
28
|
out.puts 'complete -F _linear-cli_completions lc'
|
28
29
|
out.string
|
29
30
|
end
|
@@ -44,6 +45,7 @@ module Rubyists
|
|
44
45
|
return @prompt if @prompt
|
45
46
|
|
46
47
|
@prompt = TTY::Prompt.new
|
48
|
+
# This gives ex/vim style navigation to menus
|
47
49
|
@prompt.on(:keypress) do |event|
|
48
50
|
@prompt.trigger(:keydown) if event.value == 'j'
|
49
51
|
@prompt.trigger(:keyup) if event.value == 'k'
|
@@ -92,8 +94,8 @@ module Rubyists
|
|
92
94
|
module Linear
|
93
95
|
# Open this back up to register 3rd party/other commands
|
94
96
|
module CLI
|
95
|
-
register 'completion', Dry::CLI::Completion::Command[self]
|
96
97
|
# NOTE: We have monkeypatched the Generator to add our 'lc' alias
|
98
|
+
register 'completion', Dry::CLI::Completion::Command[self]
|
97
99
|
end
|
98
100
|
end
|
99
101
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'gqli'
|
4
|
+
|
5
|
+
module Rubyists
|
6
|
+
# Namespace for Linear
|
7
|
+
module Linear
|
8
|
+
M :base_model
|
9
|
+
Comment = Class.new(BaseModel)
|
10
|
+
# The Comment class represents a Linear issue comment.
|
11
|
+
class Comment
|
12
|
+
include SemanticLogger::Loggable
|
13
|
+
|
14
|
+
Base = fragment('BaseComment', 'Comment') do
|
15
|
+
id
|
16
|
+
body
|
17
|
+
url
|
18
|
+
createdAt
|
19
|
+
updatedAt
|
20
|
+
end
|
21
|
+
|
22
|
+
def to_s
|
23
|
+
format('%<id>-12s %<url>s', id:, url:)
|
24
|
+
end
|
25
|
+
|
26
|
+
def inspection
|
27
|
+
format('id: "%<id>s" url: "%<url>s"', id:, url:)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Rubyists
|
4
4
|
# Namespace for Linear
|
5
5
|
module Linear
|
6
|
-
M :user, :team
|
6
|
+
M :user, :team, :comment
|
7
7
|
# The Issue class represents a Linear issue.
|
8
8
|
class Issue
|
9
9
|
# Class methods for Issue
|
@@ -21,6 +21,7 @@ module Rubyists
|
|
21
21
|
___ Base
|
22
22
|
assignee { ___ User.full_fragment }
|
23
23
|
team { ___ Team.full_fragment }
|
24
|
+
comments { nodes { ___ Comment.base_fragment } }
|
24
25
|
end
|
25
26
|
end
|
26
27
|
|
data/lib/linear/models/issue.rb
CHANGED
@@ -13,7 +13,8 @@ module Rubyists
|
|
13
13
|
include SemanticLogger::Loggable
|
14
14
|
extend ClassMethods
|
15
15
|
many_to_one :assignee, :User
|
16
|
-
many_to_one :team
|
16
|
+
many_to_one :team
|
17
|
+
one_to_many :comments
|
17
18
|
|
18
19
|
BASIC_FILTER = { completedAt: { null: true } }.freeze
|
19
20
|
|
@@ -117,9 +118,17 @@ module Rubyists
|
|
117
118
|
"Description was unparsable: #{description}\n"
|
118
119
|
end
|
119
120
|
|
121
|
+
def display_comments
|
122
|
+
comments.map { |c| "--- #{c.createdAt} ---\n#{TTY::Markdown.parse(c.body)}" }.join("\n")
|
123
|
+
end
|
124
|
+
|
120
125
|
def full
|
121
126
|
sep = '-' * to_s.length
|
122
|
-
format("%<to_s>s\n%<sep>s\n%<description>s\n",
|
127
|
+
format("%<to_s>s\n%<sep>s\n%<description>s\n%<comments>s",
|
128
|
+
sep:,
|
129
|
+
to_s:,
|
130
|
+
description: parsed_description,
|
131
|
+
comments: display_comments)
|
123
132
|
end
|
124
133
|
|
125
134
|
def display(options)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: linear-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tj (bougyman) Vanderpoel
|
@@ -246,6 +246,8 @@ files:
|
|
246
246
|
- changelog/0.9.0/tag.yml
|
247
247
|
- changelog/0.9.1/fixed_wrapper_to_be_more_normal_about_help_when_listing_leaf_commands.yml
|
248
248
|
- changelog/0.9.1/tag.yml
|
249
|
+
- changelog/0.9.3/fixed_probblem_with_tempfile_for_editing_operations.yml
|
250
|
+
- changelog/0.9.3/tag.yml
|
249
251
|
- changelog/unreleased/.gitkeep
|
250
252
|
- cinemas/listings.cinema
|
251
253
|
- cinemas/listings.cinema.gif
|
@@ -285,6 +287,7 @@ files:
|
|
285
287
|
- lib/linear/models/base_model.rb
|
286
288
|
- lib/linear/models/base_model/class_methods.rb
|
287
289
|
- lib/linear/models/base_model/method_magic.rb
|
290
|
+
- lib/linear/models/comment.rb
|
288
291
|
- lib/linear/models/issue.rb
|
289
292
|
- lib/linear/models/issue/class_methods.rb
|
290
293
|
- lib/linear/models/label.rb
|