dependz 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/dependz.rb +27 -0
  3. metadata +58 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 2d5f3e96944577b4d8351f07bcc7c211512882b86eed15fc6bf8a002fc51e101
4
+ data.tar.gz: d5abc3939a18b2e432ff644060d6f99ef325c8b08e34675ebfb057e0b323beb5
5
+ SHA512:
6
+ metadata.gz: 2ef84921a4dfe830971bf9c1808306bba3ef59d142a2f39e689ad0985fe0ae1f8a8ed8254b158f051fa7fc73a50da5a7d82002c2203e3679357a91d028af04ef
7
+ data.tar.gz: 56a02358759536311fd169792fc5e1533d58a0bd97c6899508c24f17feb832a5447746d0b0a7b52a558996bc638066ae2f4089b0cc0f9d4b419661a878086402
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rgl/adjacency'
4
+ require 'rgl/topsort'
5
+
6
+ class Dependz
7
+ class CircularDependenceError < StandardError; end
8
+
9
+ def initialize
10
+ @dag = RGL::DirectedAdjacencyGraph.new
11
+ end
12
+
13
+ def add(depends_by:, depends_on:)
14
+ new_dag = @dag.dup
15
+ new_dag.add_edge(depends_by, depends_on)
16
+
17
+ raise CircularDependenceError unless new_dag.cycles.empty?
18
+
19
+ @dag = new_dag
20
+
21
+ self
22
+ end
23
+
24
+ def sort
25
+ @dag.topsort_iterator.to_a.reverse
26
+ end
27
+ end
metadata ADDED
@@ -0,0 +1,58 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dependz
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Rundong Gao
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-09-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rgl
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.5'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.5'
27
+ description: Store dependencies in a graph struct, and sort them in topological order.
28
+ No dpends_by will come be before it's depends_on.
29
+ email: asphinx423@gmail.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - lib/dependz.rb
35
+ homepage: https://github.com/RundongGao/depends
36
+ licenses:
37
+ - MIT
38
+ metadata: {}
39
+ post_install_message:
40
+ rdoc_options: []
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '2.4'
48
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ requirements: []
54
+ rubygems_version: 3.0.8
55
+ signing_key:
56
+ specification_version: 4
57
+ summary: ruby dependency management gem.
58
+ test_files: []