bosh-share 0.0.1 → 0.1.0

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: 850fec5c5f455a1fb11cb04c844e6ae4022a8aeb
4
- data.tar.gz: f8028eac36c24ca60b481db562ff73c0398ca436
3
+ metadata.gz: 7eb14ec7256f2e8c52baab5b3f97b012be84359a
4
+ data.tar.gz: 37612ef92da484b6ad7776ba0f4b7f8886a4f24d
5
5
  SHA512:
6
- metadata.gz: bf2963cbe6afc0669b4fd04cf421b919e067231c69c413c0be726e71b10837071913026bceb49642bd217ca2d5373dc4ebdb7228c83824908bc8311b8532a3f3
7
- data.tar.gz: a0cf18a2c17d895f0a8885ca329899e8d00899262a12f70b44b4ed88085985850bf63a5128ada3c126ffe8c4e538dee47e9d97149bd2cfe3cc72153433b83616
6
+ metadata.gz: ace94d4ece7e657053170d49df2904dd1833e074374836ac231f2bbe20eaffc31e8a5c348ec5152b4383dd384768c56bf35011d7a43ed3b1a6c38853fa7cd292
7
+ data.tar.gz: 84c13825f6e32be1fafca088a46bc9fae0d693676cc584f38e77306dd04941274d28c651262b6e64260f2dfe07fd1c0dc1ee3a8772ee0bbbcd3dc2dbab3217b3
data/.gitignore CHANGED
@@ -34,3 +34,4 @@ build/
34
34
  .rvmrc
35
35
  .ruby-gemset
36
36
  .ruby-version
37
+ bosh-share-*.gem
@@ -8,17 +8,6 @@ PATH
8
8
  git (~> 1.2.6)
9
9
  membrane (~> 1.1.0)
10
10
 
11
- PATH
12
- remote: ../bosh-plugin-pipeline
13
- specs:
14
- bosh-plugin-pipeline (0.2.1)
15
- bosh-versions (~> 0.1.1)
16
- bosh_cli (>= 1.3098.0)
17
- bosh_common (>= 1.3098.0)
18
- erubis (~> 2.7.0)
19
- git (~> 1.2.6)
20
- membrane (~> 1.1.0)
21
-
22
11
  GEM
23
12
  remote: https://rubygems.org/
24
13
  specs:
@@ -38,6 +27,13 @@ GEM
38
27
  fog-aws (~> 0.7.6)
39
28
  httpclient (= 2.4.0)
40
29
  multi_json (~> 1.1)
30
+ bosh-plugin-pipeline (0.2.1)
31
+ bosh-versions (~> 0.1.1)
32
+ bosh_cli (>= 1.3098.0)
33
+ bosh_common (>= 1.3098.0)
34
+ erubis (~> 2.7.0)
35
+ git (~> 1.2.6)
36
+ membrane (~> 1.1.0)
41
37
  bosh-template (1.3100.0)
42
38
  semi_semantic (~> 1.1.0)
43
39
  bosh-versions (0.1.1)
@@ -249,7 +245,6 @@ PLATFORMS
249
245
  ruby
250
246
 
251
247
  DEPENDENCIES
252
- bosh-plugin-pipeline!
253
248
  bosh-share!
254
249
  bundler (~> 1.10)
255
250
  rake (~> 10.4.2)
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Share BOSH CLI Plugin
1
+ # bosh-share
2
2
 
3
3
  BOSH CLI Plugin to share workspaces and your positive experience.
4
4
 
@@ -15,12 +15,13 @@ gem install bosh-share
15
15
 
16
16
  ## How to use
17
17
  ```
18
- bosh say hello
18
+ bosh init workspace
19
19
  ```
20
20
 
21
- ## How to publish gems
21
+ ```
22
+ bosh install workspace allomov/simple-bosh-workspace
23
+ ```
22
24
 
23
- See [this notes](http://guides.rubygems.org/publishing/) to know how to publish your gem.
24
25
 
25
26
  ## Contributing
26
27
 
@@ -8,11 +8,11 @@ bosh_version = '1.3100.0'
8
8
  Gem::Specification.new do |spec|
9
9
  spec.name = 'bosh-share'
10
10
  spec.version = Bosh::Share::VERSION
11
- spec.authors = ['A.S. Lomoff']
12
- spec.email = ['lomov.as@gmail.com']
13
- spec.description = %q{Short description.}
14
- spec.summary = %q{Short description.}
15
- spec.homepage = 'https://github.com/cloudfoundry/bosh'
11
+ spec.authors = ['Alexander Lomov']
12
+ spec.email = ['alexander.lomov@altoros.com']
13
+ spec.description = %q{BOSH CLI Plugin to share workspaces and your positive experience.}
14
+ spec.summary = %q{BOSH CLI Plugin to share workspaces and your positive experience.}
15
+ spec.homepage = 'https://github.com/Altoros/bosh-share'
16
16
 
17
17
  spec.files = `git ls-files`.split($/)
18
18
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
@@ -16,9 +16,13 @@ module Bosh::Cli::Command
16
16
  if workspace_name.nil?
17
17
  workspace_name = 'bosh-workspace'
18
18
  else
19
- self.workspace_dir = File.join(Dir.pwd, workspace_name)
19
+ self.workspace_dir ||= File.join(Dir.pwd, workspace_name)
20
20
  end
21
+
22
+ say self.workspace_dir
23
+
21
24
  FileUtils::mkdir_p(self.workspace_dir) unless File.exist?(self.workspace_dir)
25
+
22
26
  Dir.chdir(self.workspace_dir) do
23
27
  default_workspace_folders.each do |folder_name|
24
28
  FileUtils::mkdir_p(folder_name)
@@ -26,17 +30,22 @@ module Bosh::Cli::Command
26
30
  end
27
31
  Git.init
28
32
  end
33
+
29
34
  context = {
30
35
  workspace_name: workspace_name,
31
36
  workspace_dir: self.workspace_dir,
32
37
  description: options[:description]
33
38
  }
39
+
34
40
  templates_folder = File.expand_path("../../../../../templates", __FILE__)
35
41
  generator = Bosh::TemplateGenerator::Generator.new(context, source_folder: templates_folder)
36
42
  %w(.direnv .ruby-gemset Gemfile .gitignore .ruby-version README.md).each do |file_name|
37
43
  generator.generate(file_name, File.join(self.workspace_dir, file_name))
38
44
  end
39
45
 
46
+ say "BOSH workspace is initialized to ".make_green + self.workspace_dir
47
+ say "[NOTE] You can use WORKSPACE_DIR env variable to alter this path."
48
+
40
49
  end
41
50
 
42
51
  end
@@ -14,8 +14,8 @@ module Bosh::Cli::Command
14
14
  option '--use-mine', 're-write existing files'
15
15
  def install_workspace(workspace)
16
16
  git_repo_regex = /((git|ssh|http(s)?)|(git@[\w\.]+))(:(\/\/)?)(([\w\.@\:\-~]+)\/?)+(\.git)(\/)?/
17
- unless workspace.match?(git_repo_regex)
18
- if workspace.include?('/')
17
+ unless workspace.match(git_repo_regex)
18
+ unless workspace.include?('/')
19
19
  say 'Workspace name should be a git URL or github repo name with folowing format `account/repo-name`'
20
20
  say '[ERROR] Can\'t find git repo'.make_red
21
21
  exit(2)
@@ -24,7 +24,7 @@ module Bosh::Cli::Command
24
24
  end
25
25
  workspace_repo_name = workspace.match(git_repo_regex)[-3]
26
26
  temp_folder = Dir.mktmpdir
27
- external_workspace_dir = File.join(workspace, workspace_repo_name)
27
+ external_workspace_dir = File.join(temp_folder, workspace_repo_name)
28
28
  say "Clonning workaspace from #{workspace}"
29
29
  repo = Git.clone(workspace, workspace_repo_name, path: temp_folder, recursive: true)
30
30
  if options[:branch] && options[:tag]
@@ -32,18 +32,23 @@ module Bosh::Cli::Command
32
32
  say '[ERROR] Don\'t know what version to checkout.'.make_red
33
33
  exit(2)
34
34
  end
35
- repo.checkout(branch: option[:branch]) if option[:branch]
36
- repo.checkout(branch: "tags/#{option[:tag]}") if option[:tag]
35
+ repo.checkout(branch: options[:branch]) if options[:branch]
36
+ repo.checkout(branch: "tags/#{option[:tag]}") if options[:tag]
37
37
 
38
- say "This is demo version and it doesn't "
39
- end
38
+ unless workspaces_exists?
39
+ say "Initializing bosh workspace #{workspace_repo_name}"
40
+ init_workspace(workspace_repo_name)
41
+ end
40
42
 
41
- def workspace_dir
42
- @workspace_dir ||= ENV['WORKSPACE_DIR'] || '~/workspace'
43
- end
43
+ folders_to_update.each do |folder|
44
+ print "syncing folder #{folder} "
45
+ source = File.join(external_workspace_dir, folder)
46
+ target = File.join(workspace_dir, folder, options[:prefix] || options[:namespace] || '')
47
+ FileUtils.mkdir_p(target) unless File.exist?(target)
48
+ FileUtils.copy_entry(source, target)
49
+ say "done".make_green
50
+ end
44
51
 
45
- def folders_to_sync(external_workspace_dir)
46
- %w(deployments templates scripts)
47
52
  end
48
53
 
49
54
  end
@@ -4,13 +4,21 @@ module Bosh
4
4
  attr_accessor :workspace_dir
5
5
 
6
6
  def workspace_dir
7
- @workspace_dir ||= ENV['WORKSPACE_DIR'] || "#{ENV['WORKSPACE_DIR']}/workspace"
7
+ @workspace_dir ||= ENV['WORKSPACE_DIR'] || File.join(ENV['HOME'], "workspace")
8
8
  end
9
9
 
10
10
  def default_workspace_folders
11
11
  %w(deployments templates scripts stubs)
12
12
  end
13
13
 
14
+ def folders_to_update
15
+ default_workspace_folders
16
+ end
17
+
18
+ def workspaces_exists?
19
+ File.exist?(self.workspace_dir) && default_workspace_folders.map { |f| File.exist?(f) }.all?
20
+ end
21
+
14
22
  end
15
23
  end
16
24
  end
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Share
3
- VERSION = "0.0.1"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
@@ -1,3 +1,5 @@
1
+ stubs/*.yml
2
+
1
3
  *.gem
2
4
  *.rbc
3
5
  /.config
@@ -35,3 +37,5 @@ build/
35
37
  .ruby-gemset
36
38
  .ruby-version
37
39
  .workspace
40
+
41
+
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bosh-share
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
- - A.S. Lomoff
7
+ - Alexander Lomov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
@@ -150,9 +150,9 @@ dependencies:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
152
  version: 0.34.2
153
- description: Short description.
153
+ description: BOSH CLI Plugin to share workspaces and your positive experience.
154
154
  email:
155
- - lomov.as@gmail.com
155
+ - alexander.lomov@altoros.com
156
156
  executables: []
157
157
  extensions: []
158
158
  extra_rdoc_files: []
@@ -177,7 +177,7 @@ files:
177
177
  - templates/.gitignore
178
178
  - templates/Gemfile
179
179
  - templates/README.md
180
- homepage: https://github.com/cloudfoundry/bosh
180
+ homepage: https://github.com/Altoros/bosh-share
181
181
  licenses: []
182
182
  metadata: {}
183
183
  post_install_message:
@@ -199,7 +199,7 @@ rubyforge_project:
199
199
  rubygems_version: 2.4.8
200
200
  signing_key:
201
201
  specification_version: 4
202
- summary: Short description.
202
+ summary: BOSH CLI Plugin to share workspaces and your positive experience.
203
203
  test_files:
204
204
  - spec/.rspec
205
205
  - spec/command_spec.rb