muxify 0.1.10 → 0.1.12
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 +4 -4
- data/.travis.yml +1 -1
- data/Gemfile +1 -1
- data/README.md +20 -1
- data/Rakefile +4 -5
- data/lib/muxify/builder.rb +45 -39
- data/lib/muxify/cli.rb +7 -7
- data/lib/muxify/linker.rb +3 -3
- data/lib/muxify/version.rb +1 -1
- data/lib/muxify.rb +2 -2
- data/muxify.gemspec +19 -19
- metadata +4 -5
- data/.rubocop.yml +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 56167a6ae12faed56bee89852ed0e97297d1bb84d6a38f98060c5df1fb5fea23
|
4
|
+
data.tar.gz: 5ab6bea4d7d3906e4f9317e138a24809885c4ea79a250999804b6f9dd3436f90
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c9c7d5bd6c246e676caf4bc0823b01b85ab87a8b5dc11374d8169dfa8e595da6ae2417c44d360466f1229e8b0d52d55685f34ee338d00793cfb3a9ba3e16304
|
7
|
+
data.tar.gz: e4a030588dc175bbc4975dd0b18edeaa84e43244c682a6fff0ee78526bd043ac9421aed48f13e4f8afccb9df2a2a173c36fbc6c91eb851c99f735f16a0d64217
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -64,7 +64,9 @@ Depending on its type, this will create the following tmux windows for a project
|
|
64
64
|
|
65
65
|
## Customising projects
|
66
66
|
|
67
|
-
|
67
|
+
Each project may have custom windows via a `.muxifyrc` file.
|
68
|
+
|
69
|
+
### Using a .muxifyrc in your home directory
|
68
70
|
|
69
71
|
1. Create a file called `~/.muxifyrc`.
|
70
72
|
1. Edit it in YAML format; eg to add a tmux window to `my_app` project which is named `server` and invokes `yarn dev`:
|
@@ -75,6 +77,23 @@ my_app:
|
|
75
77
|
server: yarn dev
|
76
78
|
```
|
77
79
|
|
80
|
+
If you want a custom window for all projects:
|
81
|
+
|
82
|
+
```yaml
|
83
|
+
windows:
|
84
|
+
echo_all_projects: "echo 'this will apply to all projects'"
|
85
|
+
```
|
86
|
+
|
87
|
+
### Using a .muxifyrc in your project directory
|
88
|
+
|
89
|
+
1. Create a file called `my_app/.muxifyrc` (given your project is in `my_app`).
|
90
|
+
1. Edit it in YAML format; eg to add a tmux window to `my_app` project which is named `server` and invokes `yarn dev`:
|
91
|
+
|
92
|
+
```yaml
|
93
|
+
windows:
|
94
|
+
server: yarn dev
|
95
|
+
```
|
96
|
+
|
78
97
|
## Thanks
|
79
98
|
|
80
99
|
- https://github.com/tmuxinator/tmuxinator
|
data/Rakefile
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "bundler/gem_tasks"
|
4
|
+
require "rspec/core/rake_task"
|
5
|
+
require "standard/rake"
|
6
6
|
|
7
|
-
RuboCop::RakeTask.new
|
8
7
|
RSpec::Core::RakeTask.new(:spec)
|
9
8
|
|
10
|
-
task default: %i[
|
9
|
+
task default: %i[standard spec]
|
data/lib/muxify/builder.rb
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "yaml"
|
4
4
|
|
5
5
|
module Muxify
|
6
6
|
class Builder
|
7
|
-
|
8
|
-
private_constant :
|
7
|
+
DEFAULT_CUSTOM_CONFIG_PATH = File.join(ENV["HOME"], ".muxifyrc")
|
8
|
+
private_constant :DEFAULT_CUSTOM_CONFIG_PATH
|
9
9
|
|
10
10
|
def self.call(*args)
|
11
11
|
new(*args).to_yaml
|
12
12
|
end
|
13
13
|
|
14
|
-
def initialize(root, name: nil, custom_config_path:
|
14
|
+
def initialize(root, name: nil, custom_config_path: nil)
|
15
15
|
@root = File.expand_path(root)
|
16
16
|
@name = name || File.basename(@root)
|
17
17
|
@custom_config_path = custom_config_path
|
@@ -27,9 +27,9 @@ module Muxify
|
|
27
27
|
|
28
28
|
def config
|
29
29
|
{
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
"name" => name,
|
31
|
+
"root" => root,
|
32
|
+
"windows" => windows
|
33
33
|
}
|
34
34
|
end
|
35
35
|
|
@@ -42,18 +42,24 @@ module Muxify
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def custom_windows
|
45
|
-
|
46
|
-
|
47
|
-
|
45
|
+
custom_config_paths.each_with_object({}) do |custom_config_path, result|
|
46
|
+
[
|
47
|
+
YAML.safe_load_file(custom_config_path)&.dig(name, "windows"),
|
48
|
+
YAML.safe_load_file(custom_config_path)&.dig("windows")
|
49
|
+
].compact.each(&result.method(:merge!))
|
50
|
+
end
|
48
51
|
end
|
49
52
|
|
50
|
-
def
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
53
|
+
def custom_config_paths
|
54
|
+
[
|
55
|
+
DEFAULT_CUSTOM_CONFIG_PATH,
|
56
|
+
project_custom_config_path,
|
57
|
+
custom_config_path
|
58
|
+
].compact.uniq.select(&File.method(:exist?))
|
59
|
+
end
|
55
60
|
|
56
|
-
|
61
|
+
def project_custom_config_path
|
62
|
+
File.join(root, ".muxifyrc")
|
57
63
|
end
|
58
64
|
|
59
65
|
class Windows
|
@@ -70,7 +76,7 @@ module Muxify
|
|
70
76
|
*elixir_non_phoenix,
|
71
77
|
*phoenix,
|
72
78
|
*nodejs,
|
73
|
-
*django
|
79
|
+
*django
|
74
80
|
]
|
75
81
|
end
|
76
82
|
|
@@ -79,28 +85,28 @@ module Muxify
|
|
79
85
|
attr_reader :root
|
80
86
|
|
81
87
|
def shell
|
82
|
-
[{
|
88
|
+
[{"shell" => init_shell}]
|
83
89
|
end
|
84
90
|
|
85
91
|
def init_shell
|
86
92
|
return 'echo "Not a git repository."' unless git?
|
87
93
|
|
88
|
-
|
94
|
+
"git fetch; git status"
|
89
95
|
end
|
90
96
|
|
91
97
|
def git?
|
92
|
-
directory?(
|
98
|
+
directory?(".git")
|
93
99
|
end
|
94
100
|
|
95
101
|
def editor
|
96
|
-
[{
|
102
|
+
[{"editor" => ENV.fetch("EDITOR", "vim")}]
|
97
103
|
end
|
98
104
|
|
99
105
|
def logs
|
100
106
|
return [] if logfiles.empty?
|
101
107
|
|
102
108
|
logfiles.each(&method(:truncate_file))
|
103
|
-
[{
|
109
|
+
[{"logs" => "tail -f log/*.log"}]
|
104
110
|
end
|
105
111
|
|
106
112
|
def logfiles
|
@@ -115,67 +121,67 @@ module Muxify
|
|
115
121
|
return [] unless rails?
|
116
122
|
|
117
123
|
[
|
118
|
-
{
|
119
|
-
{
|
120
|
-
{
|
124
|
+
{"db" => "rails db"},
|
125
|
+
{"console" => "rails console"},
|
126
|
+
{"server" => File.expand_path("../../bin/rails_server_with_puma_dev", __dir__)}
|
121
127
|
]
|
122
128
|
end
|
123
129
|
|
124
130
|
def rails?
|
125
|
-
exists?(
|
131
|
+
exists?("bin/rails")
|
126
132
|
end
|
127
133
|
|
128
134
|
def elixir_non_phoenix
|
129
135
|
return [] unless elixir_non_phoenix?
|
130
136
|
|
131
137
|
[
|
132
|
-
{
|
133
|
-
{
|
138
|
+
{"console" => "iex -S mix"},
|
139
|
+
{"server" => "mix"}
|
134
140
|
]
|
135
141
|
end
|
136
142
|
|
137
143
|
def elixir_non_phoenix?
|
138
|
-
exists?(
|
144
|
+
exists?("mix.exs") && !phoenix?
|
139
145
|
end
|
140
146
|
|
141
147
|
def phoenix
|
142
148
|
return [] unless phoenix?
|
143
149
|
|
144
150
|
[
|
145
|
-
{
|
146
|
-
{
|
151
|
+
{"console" => "iex -S mix phx.server"},
|
152
|
+
{"server" => "mix phx.server"}
|
147
153
|
]
|
148
154
|
end
|
149
155
|
|
150
156
|
def phoenix?
|
151
|
-
directory?(
|
157
|
+
directory?("deps/phoenix")
|
152
158
|
end
|
153
159
|
|
154
160
|
def nodejs
|
155
161
|
return [] unless nodejs?
|
156
162
|
|
157
163
|
[
|
158
|
-
{
|
164
|
+
{"console" => "node"}
|
159
165
|
]
|
160
166
|
end
|
161
167
|
|
162
168
|
def nodejs?
|
163
|
-
exists?(
|
169
|
+
exists?("package.json") && !rails?
|
164
170
|
end
|
165
171
|
|
166
172
|
def django
|
167
173
|
return [] unless django?
|
168
174
|
|
169
175
|
[
|
170
|
-
{
|
171
|
-
{
|
172
|
-
{
|
176
|
+
{"db" => "python manage.py dbshell"},
|
177
|
+
{"console" => "python manage.py shell"},
|
178
|
+
{"server" => "python manage.py runserver"}
|
173
179
|
]
|
174
180
|
end
|
175
181
|
|
176
182
|
def django?
|
177
|
-
python_requirements = File.join(root,
|
178
|
-
File.exist?(python_requirements) && File.read(python_requirements).include?(
|
183
|
+
python_requirements = File.join(root, "requirements.txt")
|
184
|
+
File.exist?(python_requirements) && File.read(python_requirements).include?("django")
|
179
185
|
end
|
180
186
|
|
181
187
|
def directory?(relative_path)
|
data/lib/muxify/cli.rb
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "thor"
|
4
|
+
require "muxify/builder"
|
5
|
+
require "muxify/linker"
|
6
6
|
|
7
7
|
module Muxify
|
8
8
|
class CLI < Thor
|
9
|
-
desc
|
9
|
+
desc "add", "Adds tmuxinator config for current (or supplied) path"
|
10
10
|
def add(root = Dir.pwd)
|
11
11
|
Muxify::Linker.call(root: root)
|
12
12
|
end
|
13
13
|
|
14
|
-
desc
|
14
|
+
desc "debug", "Prints tmuxinator config of current (or supplied) path to stdout"
|
15
15
|
def debug(root = Dir.pwd)
|
16
16
|
puts Muxify::Builder.call(root)
|
17
17
|
end
|
18
18
|
|
19
|
-
desc
|
19
|
+
desc "stop", "Kills tmux session"
|
20
20
|
def stop(name = File.basename(Dir.pwd))
|
21
21
|
Kernel.system("tmux kill-session -t #{name}")
|
22
22
|
end
|
23
23
|
|
24
|
-
desc
|
24
|
+
desc "version", "Print current version"
|
25
25
|
def version
|
26
26
|
puts Muxify::VERSION
|
27
27
|
end
|
data/lib/muxify/linker.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "fileutils"
|
4
4
|
|
5
5
|
module Muxify
|
6
6
|
class Linker
|
7
|
-
TMUXINATOR_CONFIG_PATH = File.expand_path(File.join(ENV.fetch(
|
7
|
+
TMUXINATOR_CONFIG_PATH = File.expand_path(File.join(ENV.fetch("HOME"), ".tmuxinator")).freeze
|
8
8
|
private_constant :TMUXINATOR_CONFIG_PATH
|
9
9
|
|
10
10
|
def self.call(**args)
|
@@ -17,7 +17,7 @@ module Muxify
|
|
17
17
|
|
18
18
|
def call
|
19
19
|
FileUtils.mkdir_p(TMUXINATOR_CONFIG_PATH)
|
20
|
-
File.open(config_path,
|
20
|
+
File.open(config_path, "w") { |f| f << contents }
|
21
21
|
end
|
22
22
|
|
23
23
|
private
|
data/lib/muxify/version.rb
CHANGED
data/lib/muxify.rb
CHANGED
data/muxify.gemspec
CHANGED
@@ -1,31 +1,31 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
lib = File.expand_path(
|
3
|
+
lib = File.expand_path("lib", __dir__)
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
-
require
|
5
|
+
require "muxify/version"
|
6
6
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
|
-
spec.name
|
9
|
-
spec.version
|
10
|
-
spec.authors
|
11
|
-
spec.email
|
8
|
+
spec.name = "muxify"
|
9
|
+
spec.version = Muxify::VERSION
|
10
|
+
spec.authors = ["Zubin Henner"]
|
11
|
+
spec.email = ["zubin@users.noreply.github.com"]
|
12
12
|
|
13
|
-
spec.summary
|
14
|
-
spec.homepage
|
13
|
+
spec.summary = "Simple tmux project config"
|
14
|
+
spec.homepage = "https://github.com/zubin/muxify"
|
15
15
|
|
16
|
-
spec.files
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
17
|
f.match(%r{^(test|spec|features)/})
|
18
18
|
end
|
19
|
-
spec.bindir
|
20
|
-
spec.executables
|
21
|
-
spec.require_paths = [
|
22
|
-
spec.required_ruby_version =
|
19
|
+
spec.bindir = "bin"
|
20
|
+
spec.executables = ["muxify"]
|
21
|
+
spec.require_paths = ["lib"]
|
22
|
+
spec.required_ruby_version = ">= 3.0.0"
|
23
23
|
|
24
|
-
spec.add_dependency
|
25
|
-
spec.add_dependency
|
24
|
+
spec.add_dependency "thor"
|
25
|
+
spec.add_dependency "tmuxinator"
|
26
26
|
|
27
|
-
spec.add_development_dependency
|
28
|
-
spec.add_development_dependency
|
29
|
-
spec.add_development_dependency
|
30
|
-
spec.add_development_dependency
|
27
|
+
spec.add_development_dependency "bundler"
|
28
|
+
spec.add_development_dependency "rake"
|
29
|
+
spec.add_development_dependency "rspec"
|
30
|
+
spec.add_development_dependency "standard"
|
31
31
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: muxify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zubin Henner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-09-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -81,7 +81,7 @@ dependencies:
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: standard
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
@@ -104,7 +104,6 @@ extra_rdoc_files: []
|
|
104
104
|
files:
|
105
105
|
- ".gitignore"
|
106
106
|
- ".rspec"
|
107
|
-
- ".rubocop.yml"
|
108
107
|
- ".travis.yml"
|
109
108
|
- Gemfile
|
110
109
|
- README.md
|
@@ -133,7 +132,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
133
132
|
requirements:
|
134
133
|
- - ">="
|
135
134
|
- !ruby/object:Gem::Version
|
136
|
-
version:
|
135
|
+
version: 3.0.0
|
137
136
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
137
|
requirements:
|
139
138
|
- - ">="
|
data/.rubocop.yml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
Layout/SpaceInsideArrayLiteralBrackets:
|
3
|
-
EnforcedStyle: no_space
|
4
|
-
Layout/SpaceInsideHashLiteralBraces:
|
5
|
-
EnforcedStyle: no_space
|
6
|
-
Style/Documentation:
|
7
|
-
Enabled: false
|
8
|
-
Style/StringLiterals:
|
9
|
-
Enabled: false
|
10
|
-
Style/TrailingCommaInArguments:
|
11
|
-
EnforcedStyleForMultiline: comma
|
12
|
-
Style/TrailingCommaInArrayLiteral:
|
13
|
-
EnforcedStyleForMultiline: comma
|
14
|
-
Style/TrailingCommaInHashLiteral:
|
15
|
-
EnforcedStyleForMultiline: comma
|