structurizr 1.0.0.pre.alpha.1 → 1.0.0.pre.alpha.2

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: df83d13062a0819df87ea4dc9a1321f83bb81c54d965f9df2ac28411b614a5b9
4
- data.tar.gz: facec0bf9bc67e67da85e10a9ac51fb6fa1817b4b74f7e12e543ff0f64566724
3
+ metadata.gz: fe8a005a3c60de0672a5d97461b0ec492efc28cdd47b9ccce953adbb405b032a
4
+ data.tar.gz: 2c7e7fa0f87ac51bdc9a78adb68be7c640b2f1f04e01b93d28912031a18de16d
5
5
  SHA512:
6
- metadata.gz: b41f7c1f86b695ddb5810dac2b0b378b300653770ef4b3b9b522e08026bf89c310445ee5290663505369242cea4f98b87b21e4b4dbe94dbbe12306192b79c0c8
7
- data.tar.gz: 4c02c4a4dc5547bc6b9d82be0417ba98a83f05f554c799cede8b1f2b2227b907005051833725dcb4a57c3a9b833504dd175331263ff667c168da812eb324a744
6
+ metadata.gz: 20e3190211889b56a2a8721050c658253bcb6971a8a14ebf1baa7afecea7457437b8f964ed973678eccf84adad97dd8b50683433475056d201a0861b9836144d
7
+ data.tar.gz: 04dc35d206db7f33cee95cbe3adb8668e8bd4536e1d550f69e4118a1d2575f2d24f362d030c263ae3b6e31d29fb7cdf6b1843e00f6d13ba1654ea1a5c964ff02
data/.rubocop.yml CHANGED
@@ -1,5 +1,6 @@
1
1
  AllCops:
2
2
  NewCops: enable
3
+ TargetRubyVersion: 2.5
3
4
 
4
5
  Style/Documentation:
5
6
  Enabled: false
data/Makefile CHANGED
@@ -1,15 +1,4 @@
1
- .PHONY: download-jars test console
2
-
3
-
4
- download-jars:
5
- rm -f lib/structurizr/metal/jars/*.jar
6
- mvn dependency:get -Dartifact=commons-logging:commons-logging:LATEST -Ddest=./lib/structurizr/metal/jars/
7
- mvn dependency:get -Dartifact=com.fasterxml.jackson.core:jackson-core:LATEST -Ddest=./lib/structurizr/metal/jars/
8
- mvn dependency:get -Dartifact=com.fasterxml.jackson.core:jackson-databind:LATEST -Ddest=./lib/structurizr/metal/jars/
9
- mvn dependency:get -Dartifact=com.fasterxml.jackson.core:jackson-annotations:LATEST -Ddest=./lib/structurizr/metal/jars/
10
- mvn dependency:get -Dartifact=com.structurizr:structurizr-core:LATEST -Ddest=./lib/structurizr/metal/jars/
11
- mvn dependency:get -Dartifact=com.structurizr:structurizr-graphviz:LATEST -Ddest=./lib/structurizr/metal/jars/
12
- mvn dependency:get -Dartifact=com.structurizr:structurizr-client:LATEST -Ddest=./lib/structurizr/metal/jars/
1
+ .PHONY: test setup bundle lint console download-jars
13
2
 
14
3
  test:
15
4
  jruby -Itest -Ilib bin/test
@@ -24,8 +13,15 @@ bundle:
24
13
  lint:
25
14
  jruby -S bundle exec rubocop
26
15
 
27
- build:
28
- jruby -S gem build
29
-
30
16
  console:
31
17
  bin/console
18
+
19
+ download-jars:
20
+ rm -f lib/structurizr/metal/jars/*.jar
21
+ mvn dependency:get -Dartifact=commons-logging:commons-logging:LATEST -Ddest=./lib/structurizr/metal/jars/
22
+ mvn dependency:get -Dartifact=com.fasterxml.jackson.core:jackson-core:LATEST -Ddest=./lib/structurizr/metal/jars/
23
+ mvn dependency:get -Dartifact=com.fasterxml.jackson.core:jackson-databind:LATEST -Ddest=./lib/structurizr/metal/jars/
24
+ mvn dependency:get -Dartifact=com.fasterxml.jackson.core:jackson-annotations:LATEST -Ddest=./lib/structurizr/metal/jars/
25
+ mvn dependency:get -Dartifact=com.structurizr:structurizr-core:LATEST -Ddest=./lib/structurizr/metal/jars/
26
+ mvn dependency:get -Dartifact=com.structurizr:structurizr-graphviz:LATEST -Ddest=./lib/structurizr/metal/jars/
27
+ mvn dependency:get -Dartifact=com.structurizr:structurizr-client:LATEST -Ddest=./lib/structurizr/metal/jars/
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env jruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'structurizr'
5
+ require 'structurizr/repl'
6
+
7
+ application = Structurizr::REPL::Application.new
8
+
9
+ application.parse_workspace_path!
10
+ application.prepare_context!
11
+ application.setup_pry!
12
+
13
+ application.start
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Structurizr
4
+ module REPL
5
+ module Commands
6
+ class Workspace < Pry::ClassCommand
7
+ match 'workspace'
8
+ description 'Access current workspace'
9
+ group 'Structurizr'
10
+ command_options keep_retval: true
11
+
12
+ def process
13
+ target_self.workspace
14
+ end
15
+ end
16
+
17
+ class Model < Pry::ClassCommand
18
+ match 'model'
19
+ description "Access current workspace's model"
20
+ group 'Structurizr'
21
+ command_options keep_retval: true
22
+
23
+ def process
24
+ target_self.workspace.model
25
+ end
26
+ end
27
+
28
+ module Shortcuts
29
+ All = Pry::CommandSet.new
30
+
31
+ {
32
+ 'Relationships' => 'relationships',
33
+ 'Elements' => 'elements',
34
+ 'People' => 'people',
35
+ 'SoftwareSystems' => 'software_systems'
36
+ }.each do |class_name, attribute_name|
37
+ shortcut_class = Class.new(Pry::ClassCommand) do
38
+ match attribute_name
39
+ description "Access model's #{attribute_name}"
40
+ group 'Structurizr'
41
+ command_options keep_retval: true
42
+
43
+ define_method :process do
44
+ target_self.workspace.model.public_send(attribute_name.to_sym)
45
+ end
46
+ end
47
+
48
+ const_set(class_name, shortcut_class)
49
+
50
+ All.add_command shortcut_class
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'pry'
4
+ require 'structurizr/repl/commands'
5
+
6
+ module Structurizr
7
+ module REPL
8
+ # Simple module which defines a reader for a nested attribute
9
+ module Delegation
10
+ def delegate(*methods, to:)
11
+ methods.each do |method|
12
+ define_method method do
13
+ public_send(to).public_send(method)
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ InvalidWorkspaceFileError = Class.new(StandardError)
20
+
21
+ class Context
22
+ extend Delegation
23
+
24
+ attr_reader :workspace
25
+
26
+ delegate :model, to: :workspace
27
+ delegate :relationships, :elements, :software_systems, :people, to: :model
28
+
29
+ def initialize(workspace)
30
+ @workspace = workspace
31
+ end
32
+ end
33
+
34
+ class Application
35
+ attr_reader :context, :workspace_path, :argv
36
+
37
+ def initialize(argv)
38
+ @argv = argv
39
+ end
40
+
41
+ def parse_workspace_path!
42
+ @workspace_path =
43
+ if (input_path = argv.first) && File.file?(input_path)
44
+ argv.first
45
+ else
46
+ puts 'Usage: structurizr-repl <path/to/structurizr.json>'
47
+
48
+ raise InvalidWorkspaceFileError, 'Please specify a valid path'
49
+ end
50
+ end
51
+
52
+ def prepare_context!
53
+ @context = Structurizr::REPL::Context.new(
54
+ Structurizr::Workspace.from_json(
55
+ File.read(workspace_path)
56
+ )
57
+ )
58
+ end
59
+
60
+ def setup_pry!
61
+ setup_welcome_message
62
+ register_commands
63
+ end
64
+
65
+ def start
66
+ Pry.start(context)
67
+ end
68
+
69
+ private
70
+
71
+ def register_commands
72
+ Pry::Commands.add_command Structurizr::REPL::Commands::Workspace
73
+ Pry::Commands.add_command Structurizr::REPL::Commands::Model
74
+ Pry::Commands.import Structurizr::REPL::Commands::Shortcuts::All
75
+ end
76
+
77
+ def setup_welcome_message
78
+ Pry.hooks.add_hook(
79
+ :before_session,
80
+ :structurizr_welcome_message
81
+ ) do |output, _binding, _pry|
82
+ output.puts <<~ECHO
83
+ Welcome to Structurizr REPL
84
+
85
+ Type `help structurizr` to get a list of commands
86
+ ECHO
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Structurizr
4
- VERSION = '1.0.0-alpha.1'
4
+ VERSION = '1.0.0-alpha.2'
5
5
  end
data/structurizr.gemspec CHANGED
@@ -25,8 +25,8 @@ Gem::Specification.new do |spec|
25
25
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
26
26
  spec.require_paths = ['lib']
27
27
 
28
+ spec.add_dependency 'pry'
28
29
  spec.add_development_dependency 'minitest'
29
- spec.add_development_dependency 'pry'
30
30
  spec.add_development_dependency 'rubocop'
31
31
  spec.add_development_dependency 'rubocop-minitest'
32
32
  spec.add_development_dependency 'simplecov', '~> 0.17.1'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: structurizr
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre.alpha.1
4
+ version: 1.0.0.pre.alpha.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor S. Morozov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-06-10 00:00:00.000000000 Z
11
+ date: 2022-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -16,9 +16,9 @@ dependencies:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
18
  version: '0'
19
- name: minitest
19
+ name: pry
20
20
  prerelease: false
21
- type: :development
21
+ type: :runtime
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
@@ -30,7 +30,7 @@ dependencies:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: '0'
33
- name: pry
33
+ name: minitest
34
34
  prerelease: false
35
35
  type: :development
36
36
  version_requirements: !ruby/object:Gem::Requirement
@@ -83,7 +83,8 @@ dependencies:
83
83
  description:
84
84
  email:
85
85
  - igor@morozov.is
86
- executables: []
86
+ executables:
87
+ - structurizr-repl
87
88
  extensions: []
88
89
  extra_rdoc_files: []
89
90
  files:
@@ -98,6 +99,7 @@ files:
98
99
  - README.md
99
100
  - bin/console
100
101
  - bin/test
102
+ - exe/structurizr-repl
101
103
  - lib/structurizr.rb
102
104
  - lib/structurizr/arc42_documentation_template.rb
103
105
  - lib/structurizr/automatic_documentation_template.rb
@@ -127,6 +129,8 @@ files:
127
129
  - lib/structurizr/paper_size.rb
128
130
  - lib/structurizr/person.rb
129
131
  - lib/structurizr/relationship.rb
132
+ - lib/structurizr/repl.rb
133
+ - lib/structurizr/repl/commands.rb
130
134
  - lib/structurizr/routing.rb
131
135
  - lib/structurizr/shape.rb
132
136
  - lib/structurizr/software_system.rb