magellan-cli 0.4.0 → 0.4.1

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: 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