bosh-share 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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