nucleon 0.2.6 → 0.2.7

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
  SHA1:
3
- metadata.gz: 966899ec9ca819e5cbfc37f589762d08ee4d37d0
4
- data.tar.gz: c39dc67b0a2ed70f0de66eac0b1caaccd452353c
3
+ metadata.gz: d10a46930f8caf3251ae8b76d41b6ab9b62d574e
4
+ data.tar.gz: 985081596d90a480a7ec1db3d632942d22b679af
5
5
  SHA512:
6
- metadata.gz: 4e20ea49274b90ba8f883ba9e8481ca9ba080678e3bf996b15a5abefb31d5d59b0b194e0f3c5db6b07be30ccba024d75d80f267ead918c049469c48b60c1c3fb
7
- data.tar.gz: 6b9ce73ba51a95c903969b80334c05a520746a23d6e4e06e59b2aa81f49d0c93ce607c48db87cfe4054b09093c1c927a174da92f833b3fed81668fa911933467
6
+ metadata.gz: 7955a1fd5c4816170b7aedcbcede162b309bccad724c47a8f502e213ebade046ad8f324283a60acbf2c190de5ff5bfe1018513ccae142aae6ff150582d6a7d0b
7
+ data.tar.gz: 57d13dce28164b20c48ea994df8c612021f76ad2e61b64a245a60b69188858c259f1c144545d5be6d3cde9f22700642916d23b7cefdbad54c5418894e6409eca
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.6
1
+ 0.2.7
@@ -529,6 +529,8 @@ class Manager
529
529
  type_info = loaded_plugin(namespace, plugin_type, provider)
530
530
  options = translate_type(type_info, options)
531
531
  config = Config.ensure(options)
532
+
533
+ provider = config.get(:provider, provider)
532
534
  name = config.get(:name, nil)
533
535
  ensure_new = config.get(:new, false)
534
536
 
@@ -28,9 +28,9 @@ class Project < Nucleon.plugin_class(:nucleon, :base)
28
28
  logger.info("Creating new project at #{directory} with #{provider}")
29
29
 
30
30
  return Nucleon.project(config.import({
31
- :name => directory,
32
- :directory => directory,
33
- :corl_file => config.get(:corl_file, true)
31
+ :name => directory,
32
+ :directory => directory,
33
+ :nucleon_file => config.get(:nucleon_file, true)
34
34
  }), provider)
35
35
 
36
36
  else
@@ -74,8 +74,14 @@ class Project < Nucleon.plugin_class(:nucleon, :base)
74
74
  @cache = Util::Cache.new(directory, Nucleon.sha1(plugin_name), '.project_cache')
75
75
  init_cache
76
76
 
77
- if get(:corl_file, true) && ! self.class.load_provider(directory)
78
- self.class.store_provider(directory, plugin_provider)
77
+ if get(:nucleon_file, true) && ( get(:nucleon_resave, false) || self.class.load_project_info(directory).empty? )
78
+ self.class.store_project_info(directory, plugin_provider, Util::Data.subset(export, [
79
+ :provider,
80
+ :url,
81
+ :edit,
82
+ :revision,
83
+ :manage_ignore
84
+ ]))
79
85
  end
80
86
  end
81
87
  end
@@ -523,7 +529,7 @@ class Project < Nucleon.plugin_class(:nucleon, :base)
523
529
  if add_project
524
530
  logger.debug("Directory #{project_path} is a valid sub project for this #{plugin_provider} project")
525
531
 
526
- project = myself.class.open(project_path, plugin_provider, { :corl_file => get(:corl_file, true) })
532
+ project = myself.class.open(project_path, plugin_provider, { :nucleon_file => get(:nucleon_file, true) })
527
533
 
528
534
  extension(:load_project, { :project => project })
529
535
  subprojects[path] = project
@@ -888,18 +894,18 @@ class Project < Nucleon.plugin_class(:nucleon, :base)
888
894
  # State configurations
889
895
 
890
896
  def self.state_file
891
- '.corl'
897
+ '.nucleon'
892
898
  end
893
899
 
894
900
  #---
895
901
 
896
902
  @@project_data = {}
897
903
 
898
- def self.store_provider(directory, provider)
904
+ def self.store_project_info(directory, provider, options)
899
905
  if File.directory?(directory)
900
- @@project_data[directory] = {
906
+ @@project_data[directory] = Config.ensure(options).import({
901
907
  :provider => provider
902
- }
908
+ }).export
903
909
  json_data = Util::Data.to_json(@@project_data[directory], true)
904
910
  Util::Disk.write(File.join(directory, state_file), json_data)
905
911
  end
@@ -907,20 +913,20 @@ class Project < Nucleon.plugin_class(:nucleon, :base)
907
913
 
908
914
  #---
909
915
 
910
- def self.clear_provider(directory)
916
+ def self.clear_project_info(directory)
911
917
  @@project_data.delete(directory)
912
918
  end
913
919
 
914
920
  #---
915
921
 
916
- def self.load_provider(directory, override = nil)
922
+ def self.load_project_info(directory)
917
923
  @@project_data[directory] = {} unless @@project_data.has_key?(directory)
918
924
 
919
- if override.nil? && @@project_data[directory].empty?
925
+ if @@project_data[directory].empty?
920
926
  json_data = Util::Disk.read(File.join(directory, state_file))
921
927
  @@project_data[directory] = hash(Util::Data.parse_json(json_data)) if json_data
922
928
  end
923
- override.nil? ? symbol_map(@@project_data[directory])[:provider] : override
929
+ symbol_map(@@project_data[directory])
924
930
  end
925
931
 
926
932
  #-----------------------------------------------------------------------------
@@ -162,12 +162,12 @@ class SSH < Core
162
162
  :user_known_hosts_file => [ File.join(key_path, 'known_hosts'), File.join(key_path, 'known_hosts2') ],
163
163
  :auth_methods => [ 'publickey' ],
164
164
  :paranoid => :very
165
- }, {}, true, false).import(Util::Data.subset(config, config.keys - [ :keypair, :key_dir, :key_name ]))
165
+ }, {}, true, false).import(Util::Data.subset(config, config.keys - [ :keypair, :key_dir, :key_name, :reset_conn ]))
166
166
 
167
167
  if private_key
168
168
  auth_id = [ session_id, private_key ].join('_')
169
169
 
170
- if ! @@auth[auth_id] && keypair = unlock_private_key(private_key, config)
170
+ if (config[:reset_conn] || ! @@auth[auth_id]) && keypair = unlock_private_key(private_key, config)
171
171
  @@auth[auth_id] = keypair
172
172
  end
173
173
  config[:keypair] = @@auth[auth_id] # Reset so caller can access updated keypair
@@ -2,11 +2,12 @@
2
2
  module Nucleon
3
3
  module Extension
4
4
  class Project < Nucleon.plugin_class(:nucleon, :extension)
5
-
5
+
6
6
  def manager_plugin_provider(config)
7
7
  if config[:namespace] == :nucleon && config[:type] == :project
8
- if config[:directory] && provider = Nucleon::Plugin::Project.load_provider(config[:directory])
9
- return provider
8
+ if config[:directory]
9
+ project_info = Nucleon::Plugin::Project.load_project_info(config[:directory])
10
+ return project_info[:provider] unless project_info.empty?
10
11
  end
11
12
  end
12
13
  nil
@@ -6,79 +6,79 @@ nucleon_require(File.dirname(__FILE__), :git)
6
6
  module Nucleon
7
7
  module Project
8
8
  class Github < Git
9
-
9
+
10
10
  #-----------------------------------------------------------------------------
11
11
  # Project plugin interface
12
-
13
- def normalize(reload)
12
+
13
+ def normalize(reload)
14
14
  if reference = delete(:reference, nil)
15
15
  myself.plugin_name = normalize_reference(reference)
16
16
  else
17
17
  if url = get(:url, nil)
18
18
  myself.plugin_name = url
19
19
  set(:url, myself.class.expand_url(url, get(:ssh, false)))
20
- end
21
- end
20
+ end
21
+ end
22
22
  super
23
23
  end
24
-
24
+
25
25
  #---
26
-
26
+
27
27
  def set_connection
28
28
  require 'octokit'
29
-
29
+
30
30
  @client = Octokit::Client.new :netrc => true
31
31
  @client.login
32
32
  end
33
-
33
+
34
34
  #-----------------------------------------------------------------------------
35
35
  # Property accessor / modifiers
36
-
36
+
37
37
  def client
38
38
  set_connection unless @client
39
39
  @client
40
40
  end
41
-
41
+
42
42
  #-----------------------------------------------------------------------------
43
43
  # Project operations
44
-
44
+
45
45
  def init_auth
46
46
  super do
47
47
  external_ip = Nucleon.ip_address
48
48
  internal_ip = get(:internal_ip, nil)
49
-
49
+
50
50
  if internal_ip && internal_ip.to_s != external_ip
51
51
  location = "#{external_ip}[#{internal_ip}]"
52
52
  else
53
53
  location = external_ip
54
54
  end
55
-
55
+
56
56
  key_id = ENV['USER'] + '@' + location
57
57
  ssh_key = public_key_str
58
-
58
+
59
59
  if private_key && ssh_key
60
60
  deploy_keys = client.deploy_keys(plugin_name)
61
61
  github_id = nil
62
62
  keys_match = true
63
-
63
+
64
64
  deploy_keys.each do |key_resource|
65
65
  if key_resource.title == key_id
66
- github_id = key_resource.id
66
+ github_id = key_resource.id
67
67
  keys_match = false if key_resource.key != ssh_key
68
68
  break
69
- end
69
+ end
70
70
  end
71
-
71
+
72
72
  client.remove_deploy_key(myself.plugin_name, github_id) if github_id && ! keys_match
73
73
  client.add_deploy_key(myself.plugin_name, key_id, ssh_key)
74
74
  verify_key
75
75
  end
76
- end
76
+ end
77
77
  end
78
-
78
+
79
79
  #-----------------------------------------------------------------------------
80
80
  # Utilities
81
-
81
+
82
82
  def self.expand_url(path, editable = false)
83
83
  if path =~ /^[a-zA-Z0-9_\-\/]+$/
84
84
  if editable
@@ -92,19 +92,19 @@ class Github < Git
92
92
  else
93
93
  url = path
94
94
  end
95
- url
95
+ url
96
96
  end
97
-
97
+
98
98
  #---
99
-
99
+
100
100
  def verify_key
101
101
  Util::SSH.init_session('github.com', 'git', 22, private_key)
102
102
  Util::SSH.close('github.com', 'git')
103
103
  end
104
104
  protected :verify_key
105
-
105
+
106
106
  #---
107
-
107
+
108
108
  def normalize_reference(reference)
109
109
  reference.sub(/^(git\@|(https?|git)\:\/\/)[^\/\:]+(\/|\:)?/, '').sub(/\.git$/, '')
110
110
  end
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: nucleon 0.2.6 ruby lib
5
+ # stub: nucleon 0.2.7 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "nucleon"
9
- s.version = "0.2.6"
9
+ s.version = "0.2.7"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Adrian Webb"]
14
- s.date = "2015-01-18"
14
+ s.date = "2015-01-19"
15
15
  s.description = "\nA framework that provides a simple foundation for building Ruby applications that are:\n\n* Highly configurable (with both distributed and persistent configurations)\n* Extremely pluggable and extendable\n* Easily parallel\n\nNote: This framework is still very early in development!\n"
16
16
  s.email = "adrian.webb@coralnexus.com"
17
17
  s.executables = ["nucleon"]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nucleon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrian Webb
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-18 00:00:00.000000000 Z
11
+ date: 2015-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: log4r