contracto 0.0.9 → 0.0.10

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- Y2VmMzRlNDIxZTgzOTNkYjBhMDBlNjM5NGY3NjU3YzdmMDM0NjA5OA==
4
+ MjhlNmFiMGM1YWEyYmYwMTc3MjIzMGFlYTRhMTZjODFmZTQ2NTc4NA==
5
5
  data.tar.gz: !binary |-
6
- NTQwMzZlMGQxMmEyMmFjOWYxYjhhZDE5ZjNlNTRjYWIwODI3ZjNjZA==
6
+ M2E3ODcwNmNmYjI1NDFlYWRhZDI5NjYzNzJmMTc1YzBkYTlkOGNlNg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZGIyMzBhNGRmY2ZjZGUyYTk1MzE4ZWNmMzVkY2Q0M2Y2YzM0ZjRhMTQxNzdk
10
- NWE5NDg0MTllYjA2YmI1NjBiNTQyZmExMGQ4MTdiNDA0MjFlMDMzNDQ1Y2E5
11
- MGQ4NTRkZjlhNWUzNTM0ZThlZjI2YjRhZWFiODUxODJjN2M3MTg=
9
+ MDIzMzhkMTFlODI3ZDUyMzdkMzMyMmViOTVmZTMyMzEwYWRkNGZiY2IxYmZm
10
+ NzNjODk5YjA2MTQyNzIwZDI3YzgwMzRhZDJiZWNhMTFhYTc2Nzg4NDk2NTJi
11
+ MDU4NTMzYmExMjJjOGY2NTZmZGFmMmEwYjU2YjJjYzI1NzVjZGM=
12
12
  data.tar.gz: !binary |-
13
- ZWExYWRjYjA5NmQ2MGNhYThhNzcxMTdhYjYwOWIwNzE1MDMyMTJiYjIyZTQy
14
- N2Q5MWZhNTI4M2ZjMmE5NTQ1ZTU4ZDE2ODJkNjRmMmI4NzE3ZDE3YzI4ZjIz
15
- NGFmODQwYTMwMGQ3MzA2ZGM0Mzg0MmUzOWFiMTYzOTNjODJmYWQ=
13
+ ZjE5NDBjNmNhMWU5NmU3NTIwYzQxZWMyYjYxYjhkYTVmYjE3NzMzZDc3NWQw
14
+ MmIzYTE3MDZkMzkyYWYxOTZjYmYxOWYzNzNhZDg1YmRlODlhM2U3ODljOTkz
15
+ Y2IzMTQyYmM4NDI2OGIzOGYxYzA3YWI5YjVjNDFjMDBlOGUzNDg=
data/lib/contracto.rb CHANGED
@@ -8,6 +8,7 @@ module Contracto
8
8
  CONTRACT_FILENAME = 'contract.cdc.rb'
9
9
  CONTRACT_PID_FILEPATH = "#{CONTRACTO_DIR}/server.pid"
10
10
 
11
+ require_relative 'contracto/errors'
11
12
  require_relative 'contracto/installer'
12
13
  require_relative 'contracto/runner'
13
14
  require_relative 'contracto/terminator'
@@ -0,0 +1,5 @@
1
+ class Contracto::CouldNotDownloadContractError < StandardError
2
+ def initialize(repo_url)
3
+ super "Could not download contract from: \"#{repo_url}\""
4
+ end
5
+ end
@@ -1,13 +1,40 @@
1
- class Contracto::Installer
2
- require_relative 'installer/local'
1
+ require 'fileutils'
3
2
 
3
+ class Contracto::Installer
4
4
  def initialize(args)
5
- if args.empty?
6
- @strategy = Contracto::Installer::Local.new
7
- end
8
5
  end
9
6
 
10
7
  def execute
11
- @strategy.execute
8
+ remove_old_dir
9
+ cp_server_files
10
+ create_contract unless contract_already_exists?
11
+ puts 'contracto initialized'
12
+ puts "start writing contracts in #{Contracto::CONTRACT_FILENAME}"
13
+ rescue
14
+ revert
15
+ end
16
+
17
+ private
18
+
19
+ def remove_old_dir
20
+ FileUtils.rm_rf Contracto::CONTRACTO_DIR
21
+ end
22
+
23
+ def cp_server_files
24
+ FileUtils.cp_r Contracto::RUBY_SERVER_DIR, Contracto::CONTRACTO_TMP_DIR
25
+ FileUtils.mv Contracto::CONTRACTO_TMP_DIR, Contracto::CONTRACTO_DIR
26
+ end
27
+
28
+ def create_contract
29
+ FileUtils.mv "#{Contracto::CONTRACTO_DIR}/#{Contracto::CONTRACT_FILENAME}", FileUtils.pwd
30
+ puts "created: #{installer.CONTRACT_FILENAME}"
31
+ end
32
+
33
+ def contract_already_exists?
34
+ File.exist? Contracto::CONTRACT_FILENAME
35
+ end
36
+
37
+ def revert
38
+ # TODO: implement
12
39
  end
13
- end
40
+ end
@@ -1,13 +1,17 @@
1
1
  class Contracto::Runner
2
- PORT = 54321
2
+ require_relative 'runner/base'
3
+ require_relative 'runner/remote'
4
+ require_relative 'runner/local'
3
5
 
4
6
  def initialize(args)
7
+ if args.first
8
+ @strategy = Contracto::Runner::Remote.new(args)
9
+ else
10
+ @strategy = Contracto::Runner::Local.new(args)
11
+ end
5
12
  end
6
13
 
7
14
  def execute
8
- system "rackup #{Contracto::CONTRACTO_DIR}/config.ru -p #{PORT} -D -P #{Contracto::CONTRACT_PID_FILEPATH}"
9
- # TODO: loop below should terminate after n tries
10
- system "while ! echo exit | nc localhost #{PORT} > /dev/null && echo \"Waiting for server...\"; do sleep 1; done"
11
- system "curl 0.0.0.0:#{PORT}"
15
+ @strategy.execute
12
16
  end
13
- end
17
+ end
@@ -0,0 +1,24 @@
1
+ class Contracto::Runner::Base
2
+ PORT = 54321
3
+
4
+ def initialize(args)
5
+ @args = args
6
+ end
7
+
8
+ def execute
9
+ raise NotImplementedError
10
+ end
11
+
12
+ private
13
+
14
+ def start_server
15
+ system "rackup #{Contracto::CONTRACTO_DIR}/config.ru -p #{PORT} -D -P #{Contracto::CONTRACT_PID_FILEPATH}"
16
+ # TODO: loop below should terminate after n tries
17
+ system "while ! echo exit | nc localhost #{PORT} > /dev/null && echo \"waiting for contracto server...\"; do sleep 1; done"
18
+ system "curl 0.0.0.0:#{PORT}"
19
+ end
20
+
21
+ def server_repo_url
22
+ @args.first
23
+ end
24
+ end
@@ -0,0 +1,5 @@
1
+ class Contracto::Runner::Local < Contracto::Runner::Base
2
+ def execute
3
+ start_server
4
+ end
5
+ end
@@ -0,0 +1,29 @@
1
+ class Contracto::Runner::Remote < Contracto::Runner::Base
2
+ require 'fileutils'
3
+
4
+ def execute
5
+ puts 'downloading contract...'
6
+ clone_repo || raise(Contracto::CouldNotDownloadContractError.new(server_repo_url))
7
+ mv_repo_files_to_current_dir
8
+ remove_old_repo_dir
9
+ start_server
10
+ end
11
+
12
+ private
13
+
14
+ def clone_repo
15
+ system "git clone -q --depth 1 --single-branch --branch master #{server_repo_url} #{tmp_dir}"
16
+ end
17
+
18
+ def mv_repo_files_to_current_dir
19
+ system "mv #{tmp_dir}/* #{tmp_dir}/.[^.]* . 2> /dev/null" # Could not use FileUtils for some reason
20
+ end
21
+
22
+ def remove_old_repo_dir
23
+ FileUtils.rm_rf tmp_dir
24
+ end
25
+
26
+ def tmp_dir
27
+ Contracto::CONTRACTO_TMP_DIR
28
+ end
29
+ end
@@ -1,5 +1,5 @@
1
1
  # TODO: Should require all *.cdc.rb files
2
2
 
3
- get '/sample' do
4
- 'sample GET'
3
+ get '/dummy' do
4
+ 'You can start working on your contract'
5
5
  end
@@ -2,5 +2,5 @@ require 'sinatra'
2
2
  require './contract.cdc.rb'
3
3
 
4
4
  get '/' do
5
- 'Server is working!'
6
- end
5
+ '*** Contracto server is working! ***'
6
+ end
@@ -1,3 +1,3 @@
1
1
  module Contracto
2
- VERSION = '0.0.9'
2
+ VERSION = '0.0.10'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: contracto
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kacper Walanus
@@ -69,9 +69,12 @@ files:
69
69
  - contracto.gemspec
70
70
  - lib/contracto.rb
71
71
  - lib/contracto/command.rb
72
+ - lib/contracto/errors.rb
72
73
  - lib/contracto/installer.rb
73
- - lib/contracto/installer/local.rb
74
74
  - lib/contracto/runner.rb
75
+ - lib/contracto/runner/base.rb
76
+ - lib/contracto/runner/local.rb
77
+ - lib/contracto/runner/remote.rb
75
78
  - lib/contracto/server/ruby/config.ru
76
79
  - lib/contracto/server/ruby/contract.cdc.rb
77
80
  - lib/contracto/server/ruby/server.rb
@@ -1,38 +0,0 @@
1
- require 'fileutils'
2
-
3
- class Contracto::Installer::Local
4
-
5
- def execute
6
- remove_old_dir
7
- cp_server_files
8
- create_contract unless contract_already_exists?
9
- puts 'contracto initialized'
10
- puts "start writing contracts in #{Contracto::CONTRACT_FILENAME}"
11
- rescue
12
- revert
13
- end
14
-
15
- private
16
-
17
- def remove_old_dir
18
- FileUtils.rm_rf Contracto::CONTRACTO_DIR
19
- end
20
-
21
- def cp_server_files
22
- FileUtils.cp_r Contracto::RUBY_SERVER_DIR, Contracto::CONTRACTO_TMP_DIR
23
- FileUtils.mv Contracto::CONTRACTO_TMP_DIR, Contracto::CONTRACTO_DIR
24
- end
25
-
26
- def create_contract
27
- FileUtils.mv "#{Contracto::CONTRACTO_DIR}/#{Contracto::CONTRACT_FILENAME}", FileUtils.pwd
28
- puts "created: #{installer.CONTRACT_FILENAME}"
29
- end
30
-
31
- def contract_already_exists?
32
- File.exist? Contracto::CONTRACT_FILENAME
33
- end
34
-
35
- def revert
36
- # TODO: implement
37
- end
38
- end