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

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 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