ddenv 0.1.0 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ddenv
4
+ module Goals
5
+ class ShadowenvDirCreated < Goal
6
+ PATH = ".shadowenv.d"
7
+
8
+ def message
9
+ "Creating .shadowenv.d"
10
+ end
11
+
12
+ def achieved?
13
+ Pathname.new(PATH).directory?
14
+ end
15
+
16
+ def achieve
17
+ FileUtils.mkdir_p(PATH)
18
+ end
19
+
20
+ def pre_goals
21
+ [
22
+ Ddenv::Goals::ShadowenvInitialized.new
23
+ ]
24
+ end
25
+
26
+ def post_goals
27
+ [
28
+ Ddenv::Goals::ShadowenvDirGitIgnored.new,
29
+ Ddenv::Goals::ShadowenvTrusted.new
30
+ ]
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ddenv
4
+ module Goals
5
+ class ShadowenvDirGitIgnored < Goal
6
+ PATH = ".shadowenv.d/.gitignore"
7
+ CONTENTS = "*\n"
8
+
9
+ def message
10
+ "Adding .shadowenv.d to .gitignore"
11
+ end
12
+
13
+ def achieved?
14
+ File.file?(PATH) && File.read(PATH) == CONTENTS
15
+ end
16
+
17
+ def achieve
18
+ File.write(PATH, CONTENTS)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ddenv
4
+ module Goals
5
+ class ShadowenvInitialized < Goal
6
+ FISH_LINE = "shadowenv init fish | source"
7
+
8
+ def message
9
+ "Initializing Shadowenv"
10
+ end
11
+
12
+ # TODO: support bash and zsh
13
+
14
+ def achieved?
15
+ fish_config = File.read(fish_config_path)
16
+ fish_config.lines.any? { _1.chomp == FISH_LINE }
17
+ end
18
+
19
+ def achieve
20
+ File.write(fish_config_path, "\n\n#{FISH_LINE}", mode: "a+")
21
+ end
22
+
23
+ private
24
+
25
+ def fish_config_path
26
+ @_fish_config_path ||= File.expand_path("~/.config/fish/config.fish")
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ddenv
4
+ module Goals
5
+ class ShadowenvTrusted < Goal
6
+ def message
7
+ "Trusting .shadowenv.d"
8
+ end
9
+
10
+ def achieved?
11
+ # TODO: use :pretty when passing --verbose
12
+ cmd = TTY::Command.new(printer: :null)
13
+ begin
14
+ cmd.run("shadowenv", "exec", "--", "ls")
15
+ rescue StandardError
16
+ return false
17
+ end
18
+ true
19
+ end
20
+
21
+ def achieve
22
+ # TODO: use :pretty when passing --verbose
23
+ cmd = TTY::Command.new(printer: :null)
24
+ cmd.run("shadowenv", "trust")
25
+ end
26
+ end
27
+ end
28
+ end
data/lib/ddenv/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ddenv
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.2"
5
5
  end
data/lib/ddenv.rb CHANGED
@@ -1,9 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "json"
4
+ require "pathname"
4
5
  require "yaml"
5
6
 
7
+ require "cri"
6
8
  require "tty-command"
9
+ require "tty-spinner"
7
10
 
8
11
  require_relative "ddenv/cli"
9
12
  require_relative "ddenv/command"
@@ -13,7 +16,19 @@ require_relative "ddenv/homebrew"
13
16
  require_relative "ddenv/subclass_responsibility_error"
14
17
  require_relative "ddenv/version"
15
18
 
16
- require_relative "ddenv/commands/help"
17
19
  require_relative "ddenv/commands/up"
18
20
 
19
21
  require_relative "ddenv/goals/homebrew_package_installed"
22
+ require_relative "ddenv/goals/ruby_install_installed"
23
+ require_relative "ddenv/goals/ruby_installed"
24
+ require_relative "ddenv/goals/ruby_shadowenv_created"
25
+ require_relative "ddenv/goals/bundle_installed"
26
+ require_relative "ddenv/goals/gem_installed"
27
+ require_relative "ddenv/goals/node_build_installed"
28
+ require_relative "ddenv/goals/node_installed"
29
+ require_relative "ddenv/goals/npm_packages_installed"
30
+ require_relative "ddenv/goals/node_shadowenv_created"
31
+ require_relative "ddenv/goals/shadowenv_initialized"
32
+ require_relative "ddenv/goals/shadowenv_dir_created"
33
+ require_relative "ddenv/goals/shadowenv_dir_git_ignored"
34
+ require_relative "ddenv/goals/shadowenv_trusted"