avm-eac_redmine_base0 0.19.2 → 0.20.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 736978270f8fcab622906f32cd12201ae0b25f067f603645d7fd02e1ef68943c
4
- data.tar.gz: 749239201b608a3a022442a405fee7c1cb822833bb6de1f5df8430e05e7b8038
3
+ metadata.gz: '074843787a7e86e7a312cc98d9d87a408273fc0e25a3eee3c8059d5829dcce5a'
4
+ data.tar.gz: 121135debacd00cd742479585954e8b19b1676fb5e7307d232744ab1f2ad793c
5
5
  SHA512:
6
- metadata.gz: ec2d6139649e4c47bef290fa8c82c68ac8e150465d14fcc519e07f1f82e313df89fbab78be934c4a64a7830c9653103752261f0550f77ca5dc11f72f7e2c92b5
7
- data.tar.gz: ff6043536ef4d9a0a8ac23fb17ca228fc9079c0236814d75675c66de3e96cbe2269d4e39477ab558994ef938ea403227d9ae674125d19404c993f6ee937463bc
6
+ metadata.gz: 4f3be7cf0501d9986a2fdca8697a2b3ae550258ad32a83dd4ccb1e78d380e8b0695b8616115af413f6e40734a4090e4d44b5c6959622091fc3bfabcfef448fe9
7
+ data.tar.gz: 7ac2da04bc3cd9a1ae0d73b527f30f29707aac7aec6caf8c4c86835c02a31ceaf02e2aec799f9b0be87e1a076945a68792bc7a373d5c3b36f961fc5e1e2892ab
@@ -49,7 +49,7 @@ module Avm
49
49
  # @return [Avm::EacRedmineBase0::Instances::RestApi]
50
50
  def rest_api_uncached
51
51
  url = root_url
52
- url.query_values = { key: read_entry('api.key') }
52
+ url.query_values = { key: admin_api_key }
53
53
  ::Avm::EacRedmineBase0::Instances::RestApi.new(url)
54
54
  end
55
55
  end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_rest/api'
4
+ require 'eac_rest/entity'
5
+ require 'eac_ruby_utils/core_ext'
6
+
7
+ module Avm
8
+ module EacRedmineBase0
9
+ module Instances
10
+ class RestApi < ::EacRest::Api
11
+ class EntityBase < ::EacRest::Entity
12
+ def build_request(url_suffix)
13
+ api.request_json("#{url_suffix}.json")
14
+ end
15
+
16
+ def data_from_response(response)
17
+ raise "\"#{response.url}\" returned non-ok status: #{response.status}" unless
18
+ response.status.to_s.start_with?('2')
19
+
20
+ return {} if response.body_str.blank?
21
+
22
+ response.body_data
23
+ rescue ::JSON::ParserError
24
+ raise "\"#{response.url}\" returned invalid JSON: \"#{response.body_str}\"" \
25
+ " (Status: #{response.status})"
26
+ end
27
+
28
+ def fetch_data(url_suffix)
29
+ data_from_response(build_request(url_suffix).response)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_redmine_base0/instances/rest_api/entity_base'
4
+ require 'avm/eac_redmine_base0/instances/rest_api/wiki_page'
5
+ require 'eac_rest/api'
6
+ require 'eac_ruby_utils/core_ext'
7
+
8
+ module Avm
9
+ module EacRedmineBase0
10
+ module Instances
11
+ class RestApi < ::EacRest::Api
12
+ class Project < ::Avm::EacRedmineBase0::Instances::RestApi::EntityBase
13
+ # @return [String]
14
+ def prefix
15
+ "/projects/#{id}"
16
+ end
17
+
18
+ # @return [Avm::EacRedmineBase0::Instances::RestApi::WikiPage]
19
+ def wiki_page(name)
20
+ child_entity(::Avm::EacRedmineBase0::Instances::RestApi::WikiPage, name)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_redmine_base0/instances/rest_api/entity_base'
4
+ require 'eac_rest/api'
5
+ require 'eac_ruby_utils/core_ext'
6
+
7
+ module Avm
8
+ module EacRedmineBase0
9
+ module Instances
10
+ class RestApi < ::EacRest::Api
11
+ class Root < ::Avm::EacRedmineBase0::Instances::RestApi::EntityBase
12
+ # @param id_or_identifier [String]
13
+ # @return [Avm::EacRedmineBase0::Instances::RestApi::Project]
14
+ def project(id_or_identifier)
15
+ api.entity(::Avm::EacRedmineBase0::Instances::RestApi::Project, id_or_identifier)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_redmine_base0/instances/rest_api/entity_base'
4
+ require 'eac_rest/api'
5
+ require 'eac_ruby_utils/core_ext'
6
+
7
+ module Avm
8
+ module EacRedmineBase0
9
+ module Instances
10
+ class RestApi < ::EacRest::Api
11
+ class WikiPage < ::Avm::EacRedmineBase0::Instances::RestApi::EntityBase
12
+ enable_simple_cache
13
+
14
+ # @return [Hash]
15
+ def data_from_id
16
+ fetch_data(prefix)
17
+ end
18
+
19
+ # @return [String]
20
+ def data_root
21
+ 'wiki_page'
22
+ end
23
+
24
+ # @return [String]
25
+ def prefix
26
+ "#{parent_entity.prefix}/wiki/#{id}"
27
+ end
28
+
29
+ # @return [String]
30
+ def read
31
+ data.fetch(data_root).fetch('text')
32
+ end
33
+
34
+ # @param content [String]
35
+ # @return [+self+]
36
+ def write(text)
37
+ data_from_response(
38
+ build_request(prefix).verb(:put).header('Content-type', 'application/json')
39
+ .body_data(write_data(text).to_json).response
40
+ )
41
+ end
42
+
43
+ # @param text [String]
44
+ # @return [Hash]
45
+ def write_data(text)
46
+ {
47
+ data_root => { 'text' => text }
48
+ }
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -7,6 +7,7 @@ module Avm
7
7
  module EacRedmineBase0
8
8
  module Instances
9
9
  class RestApi < ::EacRest::Api
10
+ require_sub __FILE__
10
11
  end
11
12
  end
12
13
  end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+
5
+ module Avm
6
+ module EacRedmineBase0
7
+ module Instances
8
+ module Runners
9
+ class Project
10
+ class WikiPage
11
+ class Read
12
+ runner_with :help, :output
13
+
14
+ def run
15
+ run_output
16
+ end
17
+
18
+ def output_content
19
+ runner_context.call(:wiki_page_content)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+
5
+ module Avm
6
+ module EacRedmineBase0
7
+ module Instances
8
+ module Runners
9
+ class Project
10
+ class WikiPage
11
+ class Write
12
+ runner_with :help, :confirmation, :input do
13
+ bool_opt '-f', '--force'
14
+ end
15
+ delegate :force?, to: :parsed
16
+
17
+ def run
18
+ start_banner
19
+ if write?
20
+ run_write
21
+ else
22
+ success 'Content unchanged, no further action will be taken'
23
+ end
24
+ end
25
+
26
+ def start_banner
27
+ infov 'Content'
28
+ infov ' * Current', current_content
29
+ infov ' * New', new_content
30
+ infov ' * Changed?', content_changed?
31
+ end
32
+
33
+ # @return [Boolean]
34
+ def content_changed?
35
+ new_content != current_content
36
+ end
37
+
38
+ def run_write
39
+ if confirm?('Write?')
40
+ infom 'Writing...'
41
+ runner_context.call(:wiki_page).write(new_content)
42
+ success('Writed!')
43
+ else
44
+ success('Unconfirmed, no further action will be taken')
45
+ end
46
+ end
47
+
48
+ # @return [Boolean]
49
+ def write?
50
+ parsed.force? || content_changed?
51
+ end
52
+
53
+ private
54
+
55
+ # @return [String]
56
+ def current_content_uncached
57
+ runner_context.call(:wiki_page_content)
58
+ end
59
+
60
+ # @return [String]
61
+ def new_content_uncached
62
+ input_content
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+
5
+ module Avm
6
+ module EacRedmineBase0
7
+ module Instances
8
+ module Runners
9
+ class Project
10
+ class WikiPage
11
+ runner_with :help, :subcommands do
12
+ pos_arg :name
13
+ subcommands
14
+ end
15
+
16
+ def wiki_page
17
+ runner_context.call(:project).wiki_page(parsed.name)
18
+ end
19
+
20
+ def wiki_page_content
21
+ wiki_page.read
22
+ end
23
+
24
+ require_sub __FILE__
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+
5
+ module Avm
6
+ module EacRedmineBase0
7
+ module Instances
8
+ module Runners
9
+ class Project
10
+ runner_with :help, :subcommands do
11
+ pos_arg :id_or_identifier
12
+ subcommands
13
+ end
14
+
15
+ private
16
+
17
+ def project_uncached
18
+ runner_context.call(:instance).rest_api.root_entity.project(parsed.id_or_identifier)
19
+ end
20
+
21
+ require_sub __FILE__
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacRedmineBase0
5
- VERSION = '0.19.2'
5
+ VERSION = '0.20.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avm-eac_redmine_base0
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.2
4
+ version: 0.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Put here the authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-26 00:00:00.000000000 Z
11
+ date: 2023-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avm
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.67'
19
+ version: '0.68'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.67'
26
+ version: '0.68'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: avm-eac_generic_base0
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -67,7 +67,7 @@ dependencies:
67
67
  version: '0.4'
68
68
  - - ">="
69
69
  - !ruby/object:Gem::Version
70
- version: 0.4.1
70
+ version: 0.4.2
71
71
  type: :runtime
72
72
  prerelease: false
73
73
  version_requirements: !ruby/object:Gem::Requirement
@@ -77,7 +77,7 @@ dependencies:
77
77
  version: '0.4'
78
78
  - - ">="
79
79
  - !ruby/object:Gem::Version
80
- version: 0.4.1
80
+ version: 0.4.2
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: curb
83
83
  requirement: !ruby/object:Gem::Requirement
@@ -118,20 +118,14 @@ dependencies:
118
118
  requirements:
119
119
  - - "~>"
120
120
  - !ruby/object:Gem::Version
121
- version: '0.7'
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: 0.7.3
121
+ version: '0.9'
125
122
  type: :runtime
126
123
  prerelease: false
127
124
  version_requirements: !ruby/object:Gem::Requirement
128
125
  requirements:
129
126
  - - "~>"
130
127
  - !ruby/object:Gem::Version
131
- version: '0.7'
132
- - - ">="
133
- - !ruby/object:Gem::Version
134
- version: 0.7.3
128
+ version: '0.9'
135
129
  - !ruby/object:Gem::Dependency
136
130
  name: eac_ruby_utils
137
131
  requirement: !ruby/object:Gem::Requirement
@@ -179,8 +173,16 @@ files:
179
173
  - lib/avm/eac_redmine_base0/instances/deploy.rb
180
174
  - lib/avm/eac_redmine_base0/instances/docker_image.rb
181
175
  - lib/avm/eac_redmine_base0/instances/rest_api.rb
176
+ - lib/avm/eac_redmine_base0/instances/rest_api/entity_base.rb
177
+ - lib/avm/eac_redmine_base0/instances/rest_api/project.rb
178
+ - lib/avm/eac_redmine_base0/instances/rest_api/root.rb
179
+ - lib/avm/eac_redmine_base0/instances/rest_api/wiki_page.rb
182
180
  - lib/avm/eac_redmine_base0/instances/runners.rb
183
181
  - lib/avm/eac_redmine_base0/instances/runners/docker.rb
182
+ - lib/avm/eac_redmine_base0/instances/runners/project.rb
183
+ - lib/avm/eac_redmine_base0/instances/runners/project/wiki_page.rb
184
+ - lib/avm/eac_redmine_base0/instances/runners/project/wiki_page/read.rb
185
+ - lib/avm/eac_redmine_base0/instances/runners/project/wiki_page/write.rb
184
186
  - lib/avm/eac_redmine_base0/instances/runners/project_rename.rb
185
187
  - lib/avm/eac_redmine_base0/sources.rb
186
188
  - lib/avm/eac_redmine_base0/sources/base.rb