magellan-cli 0.4.0 → 0.4.1

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: 9f81ab633b90549d1474807b9924f28eb0d87fed
4
- data.tar.gz: 34fd0c8d234687f1b0b3cce29cd11b48a0431992
3
+ metadata.gz: 4b8130a0c4a91225ff9bead118ba994a4be21351
4
+ data.tar.gz: eb512a27d356f8657a4e91664e4cbac15cb642a1
5
5
  SHA512:
6
- metadata.gz: 26e60decb0ff48f362516b2750719d48285bb721a163f23b88bb8f6164d1e3f6262c55e9178da54cbcff89e46f59a71a78f7fea73e3560d857802405932db76f
7
- data.tar.gz: fc4bb095493fd8c09f8dbc8896a9f8fa62f4b60144864c3c63feb8b5b13412fe3ed795a0f8c1c5469dabeea97a0c70522875e915a17f6f0e78fbebc117ded255
6
+ metadata.gz: 0f7930935c96927195eafc9ec7a93eb6d1e27bd3af2eb7984fe44e8963812a1d25a9ad64baa979a74dc9c4416c3cdb71da83f558c26c90f4436fd535d5cc1e8a
7
+ data.tar.gz: d79d097a744166423b27833e4eaf92b5cec812d47d0e9f103c83525d32a822ba3791c6064b23cfaf976dec5d88d4ed27e297fb7342c5d3e951419fef18ac4658
data/Gemfile CHANGED
@@ -7,4 +7,5 @@ group :development do
7
7
  gem "pry"
8
8
  gem "pry-byebug"
9
9
  gem "pry-stack_explorer"
10
+ gem "simplecov"
10
11
  end
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- magellan-cli (0.4.0)
4
+ magellan-cli (0.4.1)
5
5
  activesupport (~> 4.1.4)
6
6
  groovenauts-thor
7
7
  httpclient (~> 2.5)
@@ -12,7 +12,7 @@ PATH
12
12
  GEM
13
13
  remote: https://rubygems.org/
14
14
  specs:
15
- activesupport (4.1.8)
15
+ activesupport (4.1.9)
16
16
  i18n (~> 0.6, >= 0.6.9)
17
17
  json (~> 1.7, >= 1.7.7)
18
18
  minitest (~> 5.1)
@@ -28,13 +28,15 @@ GEM
28
28
  debug_inspector (0.0.2)
29
29
  debugger-linecache (1.2.0)
30
30
  diff-lcs (1.2.5)
31
+ docile (1.1.5)
31
32
  groovenauts-thor (0.19.1)
32
33
  httpclient (2.6.0.1)
33
34
  i18n (0.7.0)
34
35
  json (1.8.2)
35
36
  method_source (0.8.2)
36
37
  mini_portile (0.6.2)
37
- minitest (5.5.0)
38
+ minitest (5.5.1)
39
+ multi_json (1.10.1)
38
40
  nokogiri (1.6.5)
39
41
  mini_portile (~> 0.6.0)
40
42
  pry (0.9.12.6)
@@ -60,6 +62,11 @@ GEM
60
62
  rspec-mocks (3.0.4)
61
63
  rspec-support (~> 3.0.0)
62
64
  rspec-support (3.0.4)
65
+ simplecov (0.9.1)
66
+ docile (~> 1.1.0)
67
+ multi_json (~> 1.0)
68
+ simplecov-html (~> 0.8.0)
69
+ simplecov-html (0.8.0)
63
70
  slop (3.5.0)
64
71
  text-table (1.2.3)
65
72
  thread_safe (0.3.4)
@@ -77,3 +84,4 @@ DEPENDENCIES
77
84
  pry-stack_explorer
78
85
  rake (~> 10.0)
79
86
  rspec
87
+ simplecov
@@ -11,6 +11,7 @@ module Magellan
11
11
  class << self
12
12
  # override Thor::Base.start method
13
13
  def start(given_args = ARGV, config = {})
14
+ Magellan::Cli::FileAccess.ensure_config_dir
14
15
  # class_options verbose and version are defined in Magellan::Cli::Base
15
16
  if (ARGV == ["-v"] || ARGV == ["--version"])
16
17
  log_info(File.basename($0) << " " << Magellan::Cli::VERSION)
@@ -1,5 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
+ require "fileutils"
4
+
3
5
  module Magellan
4
6
  module Cli
5
7
  module FileAccess
@@ -7,16 +9,31 @@ module Magellan
7
9
  class NotSelected < StandardError
8
10
  end
9
11
 
10
- SELECTION_FILENAME = ".magellan-cli"
12
+ DEFAULT_SELECTION_FILENAME = File.expand_path("~/.config/magellan/magellan-cli")
11
13
 
12
14
  module_function
13
15
 
16
+ def selection_filename
17
+ ENV["MAGELLAN_CLI_CONFIG_FILE"] || DEFAULT_SELECTION_FILENAME
18
+ end
19
+
14
20
  def remove_selection_file
15
- File.exist?(SELECTION_FILENAME) && File.delete(SELECTION_FILENAME)
21
+ File.exist?(selection_filename) && File.delete(selection_filename)
16
22
  end
17
23
 
18
24
  def load_selections
19
- File.readable?(SELECTION_FILENAME) ? YAML.load_file(SELECTION_FILENAME) : {}
25
+ File.readable?(selection_filename) ? YAML.load_file(selection_filename) : {}
26
+ end
27
+
28
+ # check if ~/.config/magellan directory exists.
29
+ def ensure_config_dir
30
+ return if ENV["MAGELLAN_CLI_CONFIG_FILE"]
31
+ default_dir = File.dirname(DEFAULT_SELECTION_FILENAME)
32
+ unless File.directory?(default_dir)
33
+ # This is notification message to be displayed at the first time magellan-cli invoked.
34
+ puts I18n.t(:config_file, scope: [:base, :notification])
35
+ FileUtils.mkdir_p(default_dir)
36
+ end
20
37
  end
21
38
 
22
39
  # @param [Class|String] obj Resource class or resource name
@@ -37,7 +54,11 @@ module Magellan
37
54
  sel = load_selections
38
55
  sel.update(hash) if hash
39
56
  yield(sel) if block_given?
40
- open(".magellan-cli", "w") do |f|
57
+ filepath = selection_filename
58
+ unless File.exist?(File.dirname(filepath))
59
+ FileUtils.mkdir_p(File.dirname(filepath))
60
+ end
61
+ open(filepath, "w") do |f|
41
62
  f.chmod 0600
42
63
  YAML.dump(sel, f)
43
64
  end
@@ -1,5 +1,20 @@
1
1
  en:
2
2
  base:
3
+ notification:
4
+ config_file: |
5
+ ******* magellan-cli configuration file ******
6
+ magellan-cli stores login information, resources selection information into
7
+ a configuration file. The file path of the configuration file is usually
8
+ ${HOME}/.config/magellan/magellan-cli
9
+ You can specify your own configuration file path by setting environment variable
10
+ MAGELLAN_CLI_CONFIG_FILE.
11
+
12
+ !! migration from 0.4.0 and before !!
13
+ magellan-cli 0.4.0 and before saves configuration file into `.magellan-cli'
14
+ in current directory.
15
+ To migrate onfigurations from magellan-0.4.0 and before, move `.magellan-cli'
16
+ file in the working directory to ${HOME}/.config/magellan/magellan-cli or
17
+ ${MAGELLAN_CLI_CONFIG_FILE}.
3
18
  cmd:
4
19
  help: "Describe available commands or one specific command"
5
20
  command:
@@ -1,5 +1,18 @@
1
1
  ja:
2
2
  base:
3
+ notification:
4
+ config_file: |
5
+ ******* magellan-cli の設定ファイル ******
6
+ magellan-cli はログイン情報、リソースの選択状態などの情報を設定ファイルに保存します。
7
+ 設定ファイルのファイルパスは ${HOME}/.config/magellan/magellan-cli が用いられます。
8
+ 設定ファイルのファイルパスは環境変数 MAGELLAN_CLI_CONFIG_FILE で指定可能です。
9
+
10
+ !! 0.4.0 からの移行について !!
11
+ magellan-cli 0.4.0 までは設定ファイルとしてカレントディレクトリに .magellan-cli ファイルを
12
+ 作成していました。
13
+ 0.4.0 以前のバージョンからの移行のためには、作業ディレクトリ内の .magellan-cli ファイルを
14
+ ${HOME}/.config/magellan/magellan-cli もしくは環境変数 MAGELLAN_CLI_CONFIG_FILE で指定する
15
+ パスへ移動してください。
3
16
  cmd:
4
17
  help: "利用可能なコマンドの一覧か特定のコマンドの説明を表示します"
5
18
  command:
@@ -1,5 +1,5 @@
1
1
  module Magellan
2
2
  module Cli
3
- VERSION = "0.4.0"
3
+ VERSION = "0.4.1"
4
4
  end
5
5
  end
@@ -0,0 +1,30 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe Magellan::Cli::FileAccess do
5
+ describe :ensure_config_dir do
6
+ before do
7
+ @stdout = StringIO.new
8
+ @stdout_orig, $stdout = $stdout, @stdout
9
+ expect(File).to receive(:directory?).with(File.expand_path("~/.config/magellan")).and_return(false)
10
+ expect(FileUtils).to receive(:mkdir_p).with(File.expand_path("~/.config/magellan"))
11
+ @magellan_cli_config_file_orig, ENV["MAGELLAN_CLI_CONFIG_FILE"] = ENV["MAGELLAN_CLI_CONFIG_FILE"], nil
12
+ end
13
+ after do
14
+ $stdout = @stdout_orig
15
+ ENV["MAGELLAN_CLI_CONFIG_FILE"] = @magellan_cli_config_file_orig
16
+ end
17
+ it "print notification message" do
18
+ Magellan::Cli::FileAccess.ensure_config_dir
19
+ [
20
+ %r{\.config/magellan/magellan-cli },
21
+ %r{configuration file}i,
22
+ %r{environment variable}i,
23
+ %r{MAGELLAN_CLI_CONFIG_FILE},
24
+ %r{migration}i,
25
+ ].each do |re|
26
+ expect(@stdout.string).to match(re)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -10,7 +10,7 @@ describe Magellan::Cli::Login do
10
10
 
11
11
  before do
12
12
  allow(File).to receive(:readable?).and_return(true)
13
- allow(YAML).to receive(:load_file).with(".magellan-cli").and_return({"login" => {"email" => email, "password" => password} })
13
+ allow(YAML).to receive(:load_file).with(ENV["MAGELLAN_CLI_CONFIG_FILE"]).and_return({"login" => {"email" => email, "password" => password} })
14
14
  end
15
15
 
16
16
  context :production do
data/spec/spec_helper.rb CHANGED
@@ -1,2 +1,12 @@
1
+ require "pry"
2
+
3
+ if ENV["COVERAGE"] =~ /true|yes|on|1/i
4
+ require "simplecov"
5
+ SimpleCov.start :rails
6
+ end
7
+
1
8
  $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
9
  require 'magellan/cli'
10
+
11
+ ENV["MAGELLAN_CLI_CONFIG_FILE"] = File.expand_path("../.magellan-cli", __FILE__)
12
+ I18n.locale = :en
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: magellan-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - akm2000
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-15 00:00:00.000000000 Z
11
+ date: 2015-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpclient
@@ -186,6 +186,7 @@ files:
186
186
  - magellan-cli.gemspec
187
187
  - spec/magellan/cli/Magellan.yml
188
188
  - spec/magellan/cli/command_spec.rb
189
+ - spec/magellan/cli/file_access_spec.rb
189
190
  - spec/magellan/cli/login_page.html
190
191
  - spec/magellan/cli/login_spec.rb
191
192
  - spec/magellan/cli/resources/client_version_spec.rb
@@ -222,6 +223,7 @@ summary: commandline tools for magellanic cloud service.
222
223
  test_files:
223
224
  - spec/magellan/cli/Magellan.yml
224
225
  - spec/magellan/cli/command_spec.rb
226
+ - spec/magellan/cli/file_access_spec.rb
225
227
  - spec/magellan/cli/login_page.html
226
228
  - spec/magellan/cli/login_spec.rb
227
229
  - spec/magellan/cli/resources/client_version_spec.rb