jirify 0.1.5 → 0.1.6
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/README.md +1 -1
- data/jirify.bash_completion.sh +110 -0
- data/lib/jirify/cli/issue.rb +8 -1
- data/lib/jirify/cli/setup.rb +5 -2
- data/lib/jirify/config.rb +36 -8
- data/lib/jirify/version.rb +1 -1
- data/lib/jirify.rb +4 -4
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30fe694d532ff7f42489b0e15e9c5e3baf4f3ec00f82b14a2132621bd6132bd0
|
4
|
+
data.tar.gz: a01941f15a19def128da94ea49d05fd9aeace88b283c0a0c4be108ebb54874bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4bcd7b93913fdf79bec9914d42d280c0aae9f1a237e1d7eb47d75b153181d0b26af7b61c05094d816ffd7cbcbf6090c51c45277146b874e25c69faa1a411e10a
|
7
|
+
data.tar.gz: 17b11d2fff2083801a49149c615264261825bba23255cdce8ee2fcc9ce01b630a30644b0936e126be549414e65fbd1e4eece9b1d262e2f8921567aed1ca9caad
|
data/README.md
CHANGED
@@ -3,7 +3,7 @@ A simple ruby gem that helps me work with jira
|
|
3
3
|
|
4
4
|
# How to use
|
5
5
|
1. Run `gem install jirify`.
|
6
|
-
1. Execute `jira setup` and go through the setup process OR if you had the previous `config.yml` file you can just
|
6
|
+
1. Execute `jira setup` and go through the setup process OR if you had the previous `config.yml` or `.jirify` file you can just move it to the `~/.jirify/` folder.
|
7
7
|
1. Execute `jira` and `jira <command> help` to learn about available commands.
|
8
8
|
|
9
9
|
# To Do
|
@@ -0,0 +1,110 @@
|
|
1
|
+
#//bin/bash
|
2
|
+
# jirify tab-completion script for bash.
|
3
|
+
|
4
|
+
JIRIFY_FOLDER="${HOME}/.jirify"
|
5
|
+
ISSUE_KEYS_CACHE="${JIRIFY_FOLDER}/.cache"
|
6
|
+
CACHE_TTL=60
|
7
|
+
|
8
|
+
_jirify_write_issues_to_cache() {
|
9
|
+
my_issue_keys="$(jira issues -k)"
|
10
|
+
echo "$my_issue_keys" > "$ISSUE_KEYS_CACHE"
|
11
|
+
}
|
12
|
+
|
13
|
+
_jirify_maybe_reload_cache() {
|
14
|
+
if [ -f $ISSUE_KEYS_CACHE ]; then
|
15
|
+
time_elapsed=`expr $(date +%s) - $(stat -f %c $ISSUE_KEYS_CACHE)`
|
16
|
+
|
17
|
+
if (( time_elapsed >= CACHE_TTL )); then
|
18
|
+
_jirify_write_issues_to_cache
|
19
|
+
fi
|
20
|
+
else
|
21
|
+
_jirify_write_issues_to_cache
|
22
|
+
fi
|
23
|
+
}
|
24
|
+
|
25
|
+
_jirify_completions() {
|
26
|
+
current="${COMP_WORDS[COMP_CWORD]}"
|
27
|
+
previous="${COMP_WORDS[COMP_CWORD-1]}"
|
28
|
+
|
29
|
+
top_level_commands="help issues projects setup sprint version"
|
30
|
+
projects_commands="help list"
|
31
|
+
setup_commands="help init verbose"
|
32
|
+
issues_commands="help assignee block close mine open review start status take todo transition transitions unassign unblock"
|
33
|
+
|
34
|
+
_compgen_issue_keys() {
|
35
|
+
_jirify_maybe_reload_cache
|
36
|
+
my_issue_keys=$(<${ISSUE_KEYS_CACHE})
|
37
|
+
COMPREPLY=($(compgen -W "${my_issue_keys}" -- ${current}))
|
38
|
+
}
|
39
|
+
|
40
|
+
_compgen_top_level() {
|
41
|
+
COMPREPLY=($(compgen -W "${top_level_commands}" -- ${current}))
|
42
|
+
}
|
43
|
+
|
44
|
+
_compgen_projects() {
|
45
|
+
COMPREPLY=($(compgen -W "${projects_commands}" -- ${current}))
|
46
|
+
}
|
47
|
+
|
48
|
+
_compgen_setup() {
|
49
|
+
COMPREPLY=($(compgen -W "${setup_commands}" -- ${current}))
|
50
|
+
}
|
51
|
+
|
52
|
+
_compgen_issues() {
|
53
|
+
COMPREPLY=($(compgen -W "${issues_commands}" -- ${current}))
|
54
|
+
}
|
55
|
+
|
56
|
+
if [ $COMP_CWORD == 1 ]
|
57
|
+
then
|
58
|
+
_compgen_top_level
|
59
|
+
return 0
|
60
|
+
fi
|
61
|
+
|
62
|
+
if [ $COMP_CWORD == 2 ]
|
63
|
+
then
|
64
|
+
case "$previous" in
|
65
|
+
"help")
|
66
|
+
_compgen_top_level
|
67
|
+
return 0
|
68
|
+
;;
|
69
|
+
"projects")
|
70
|
+
_compgen_projects
|
71
|
+
return 0
|
72
|
+
;;
|
73
|
+
"setup")
|
74
|
+
_compgen_setup
|
75
|
+
return 0
|
76
|
+
;;
|
77
|
+
i|issues)
|
78
|
+
_compgen_issues
|
79
|
+
return 0
|
80
|
+
;;
|
81
|
+
esac
|
82
|
+
fi
|
83
|
+
|
84
|
+
if [ $COMP_CWORD == 3 ]
|
85
|
+
then
|
86
|
+
action="${COMP_WORDS[COMP_CWORD-2]}"
|
87
|
+
|
88
|
+
if [ "$previous" == "help" ]; then
|
89
|
+
case "$action" in
|
90
|
+
"projects")
|
91
|
+
_compgen_projects
|
92
|
+
return 0
|
93
|
+
;;
|
94
|
+
"setup")
|
95
|
+
_compgen_setup
|
96
|
+
return 0
|
97
|
+
;;
|
98
|
+
i|issues)
|
99
|
+
_compgen_issues
|
100
|
+
return 0
|
101
|
+
;;
|
102
|
+
esac
|
103
|
+
elif [ "$action" == "issues" ] || [ "$action" == "i" ]; then
|
104
|
+
_compgen_issue_keys
|
105
|
+
return 0
|
106
|
+
fi
|
107
|
+
fi
|
108
|
+
}
|
109
|
+
|
110
|
+
complete -F _jirify_completions jira
|
data/lib/jirify/cli/issue.rb
CHANGED
@@ -6,6 +6,7 @@ module Jirify
|
|
6
6
|
default_task :mine
|
7
7
|
|
8
8
|
desc 'mine', 'List all of the issues assigned to you in the current sprint'
|
9
|
+
method_option :key_only, type: :boolean, aliases: '-k', desc: 'Show only issue keys'
|
9
10
|
method_option :in_progress, type: :boolean, aliases: '-i', desc: 'Show only issues in progress'
|
10
11
|
method_option :in_review, type: :boolean, aliases: '-r', desc: 'Show only issues in review'
|
11
12
|
method_option :closed, type: :boolean, aliases: '-c', desc: 'Show only closed issues'
|
@@ -27,7 +28,13 @@ module Jirify
|
|
27
28
|
def mine
|
28
29
|
statuses = build_issue_statuses(options)
|
29
30
|
issues = Jirify::Issue.list_mine(statuses, options[:all])
|
30
|
-
issues.each
|
31
|
+
issues.each do |issue|
|
32
|
+
if options[:key_only]
|
33
|
+
puts issue.key
|
34
|
+
else
|
35
|
+
issue.print Config.always_verbose || options[:verbose]
|
36
|
+
end
|
37
|
+
end
|
31
38
|
end
|
32
39
|
|
33
40
|
desc 'open [ISSUE]', 'Opens an issue in your browser'
|
data/lib/jirify/cli/setup.rb
CHANGED
@@ -32,12 +32,15 @@ module Jirify
|
|
32
32
|
options['options']['filter_by_labels'] = labels unless labels.empty?
|
33
33
|
|
34
34
|
Config.write(options)
|
35
|
+
|
36
|
+
say "Done!"
|
37
|
+
say "If you want to enable bash completion, source #{Config.config_folder}/jirify.bash_completion.sh"
|
35
38
|
end
|
36
39
|
|
37
40
|
desc 'verbose', 'Set always verbose to true or false'
|
38
|
-
method_option :enable, type: :boolean, aliases: '-e', default: false, desc: 'Enable or
|
41
|
+
method_option :enable, type: :boolean, aliases: '-e', default: false, desc: 'Enable or Disable'
|
39
42
|
def verbose
|
40
|
-
Config.verbose
|
43
|
+
Config.verbose = options[:enable]
|
41
44
|
end
|
42
45
|
end
|
43
46
|
end
|
data/lib/jirify/config.rb
CHANGED
@@ -1,10 +1,30 @@
|
|
1
1
|
require 'yaml'
|
2
|
+
require 'fileutils'
|
2
3
|
|
3
4
|
module Jirify
|
4
5
|
class Config
|
5
6
|
class << self
|
7
|
+
CONFIG_FOLDER = "#{Dir.home}/.jirify".freeze
|
8
|
+
CONFIG_FILE = "#{CONFIG_FOLDER}/.jirify".freeze
|
9
|
+
|
10
|
+
def config_folder
|
11
|
+
initialize! unless initialized?
|
12
|
+
@config_folder ||= CONFIG_FOLDER
|
13
|
+
end
|
14
|
+
|
15
|
+
def config_file
|
16
|
+
initialize! unless initialized?
|
17
|
+
@config_file ||= CONFIG_FILE
|
18
|
+
end
|
19
|
+
|
6
20
|
def initialized?
|
7
|
-
File.exist?
|
21
|
+
File.directory?(CONFIG_FOLDER) && File.exist?(CONFIG_FILE)
|
22
|
+
end
|
23
|
+
|
24
|
+
def initialize!
|
25
|
+
FileUtils::mkdir_p CONFIG_FOLDER
|
26
|
+
FileUtils::touch CONFIG_FILE
|
27
|
+
FileUtils::cp "#{File.expand_path('..', File.dirname(__dir__))}/jirify.bash_completion.sh", CONFIG_FOLDER
|
8
28
|
end
|
9
29
|
|
10
30
|
def write(config)
|
@@ -14,7 +34,7 @@ module Jirify
|
|
14
34
|
File.write(config_file, config.to_yaml)
|
15
35
|
end
|
16
36
|
|
17
|
-
def verbose(value)
|
37
|
+
def verbose=(value)
|
18
38
|
unless initialized?
|
19
39
|
puts 'ERROR: You must initialize Jirify first!'.red
|
20
40
|
exit(0)
|
@@ -25,10 +45,6 @@ module Jirify
|
|
25
45
|
write(config)
|
26
46
|
end
|
27
47
|
|
28
|
-
def config_file
|
29
|
-
@config_file ||= "#{Dir.home}/.jirify"
|
30
|
-
end
|
31
|
-
|
32
48
|
def options
|
33
49
|
unless initialized?
|
34
50
|
puts 'ERROR: You must initialize Jirify first!'.red
|
@@ -55,17 +71,23 @@ module Jirify
|
|
55
71
|
end
|
56
72
|
|
57
73
|
def statuses
|
58
|
-
|
74
|
+
default = {
|
59
75
|
'blocked' => 'Blocked',
|
60
76
|
'todo' => 'To Do',
|
61
77
|
'in_progress' => 'In Progress',
|
62
78
|
'in_review' => 'In Review',
|
63
79
|
'done' => 'Closed'
|
64
80
|
}
|
81
|
+
|
82
|
+
if initialized?
|
83
|
+
options['statuses'] || default
|
84
|
+
else
|
85
|
+
default
|
86
|
+
end
|
65
87
|
end
|
66
88
|
|
67
89
|
def transitions
|
68
|
-
|
90
|
+
default = {
|
69
91
|
'block' => 'Blocked',
|
70
92
|
'unblock' => 'Unblock',
|
71
93
|
'start' => 'Start Progress',
|
@@ -75,6 +97,12 @@ module Jirify
|
|
75
97
|
'close' => 'Close',
|
76
98
|
'reopen' => 'Reopen'
|
77
99
|
}
|
100
|
+
|
101
|
+
if initialized?
|
102
|
+
options['transitions'] || default
|
103
|
+
else
|
104
|
+
default
|
105
|
+
end
|
78
106
|
end
|
79
107
|
|
80
108
|
def client_options
|
data/lib/jirify/version.rb
CHANGED
data/lib/jirify.rb
CHANGED
@@ -27,16 +27,16 @@ module Jirify
|
|
27
27
|
puts "Current Jirify version: #{VERSION}"
|
28
28
|
end
|
29
29
|
|
30
|
-
desc 'setup SUBCOMMAND', 'Jirify setup tools'
|
30
|
+
desc 'setup [SUBCOMMAND]', 'Jirify setup tools'
|
31
31
|
subcommand 'setup', Subcommands::Setup
|
32
32
|
|
33
|
-
desc 'i SUBCOMMAND', 'Alias for <jira issues>'
|
33
|
+
desc 'i [SUBCOMMAND]', 'Alias for <jira issues>'
|
34
34
|
subcommand 'i', Subcommands::Issues
|
35
35
|
|
36
|
-
desc 'issues SUBCOMMAND', 'Work with JIRA Issues'
|
36
|
+
desc 'issues [SUBCOMMAND]', 'Work with JIRA Issues'
|
37
37
|
subcommand 'issues', Subcommands::Issues
|
38
38
|
|
39
|
-
desc 'projects SUBCOMMAND', 'Work with JIRA Projects'
|
39
|
+
desc 'projects [SUBCOMMAND]', 'Work with JIRA Projects'
|
40
40
|
subcommand 'projects', Subcommands::Projects
|
41
41
|
end
|
42
42
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jirify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Georgi Gardev
|
@@ -89,6 +89,7 @@ extra_rdoc_files: []
|
|
89
89
|
files:
|
90
90
|
- README.md
|
91
91
|
- bin/jira
|
92
|
+
- jirify.bash_completion.sh
|
92
93
|
- lib/jirify.rb
|
93
94
|
- lib/jirify/cli/issue.rb
|
94
95
|
- lib/jirify/cli/project.rb
|