muxify 0.1.4 → 0.1.5
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/Gemfile +2 -0
- data/README.md +62 -5
- data/Rakefile +2 -0
- data/lib/muxify/builder.rb +15 -2
- data/lib/muxify/cli.rb +2 -0
- data/lib/muxify/linker.rb +2 -0
- data/lib/muxify/version.rb +3 -1
- data/lib/muxify.rb +2 -0
- data/muxify.gemspec +7 -6
- metadata +15 -16
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 9c4737c89a2923ba7fe743328b1431802e3576f1d1e7b9a0225c9a058b9cf3cd
         | 
| 4 | 
            +
              data.tar.gz: 158303895c198e9d8ce430397a1c0ff2ee5afec6715b2694a06548f6a80dd91d
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 0efec262d17e6d827c2e73afaf64505bded82ce552fafd3cf2b334786629a83acbdc871fb17227a183e247a2deada7d692a961dbe0b80a6bb68b798ce4201f4d
         | 
| 7 | 
            +
              data.tar.gz: 62917a4b44014294f0e5bb7dd9c776fe8f7b7785078e00c8c88ee2e85a5706e7c30b3a6bc1c24be2499585502a6aca777dadd2db235401be6c34488cc3f6db73
         | 
    
        data/Gemfile
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -1,19 +1,76 @@ | |
| 1 1 | 
             
            # Muxify
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 3 | 
            +
            Sets up consistent tmux development environment for projects.
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Why?
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            * Saves time and effort switching projects.
         | 
| 8 | 
            +
            * Ensures consistent layout which is faster to navigate via muscle memory.
         | 
| 9 | 
            +
            * Avoids visual and mental overhead of maintaining numerous tabs.
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            ## Dependencies
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            * MacOS (may work on Linux)
         | 
| 14 | 
            +
            * Ruby
         | 
| 15 | 
            +
            * Tmux (`which tmux || brew install tmux`)
         | 
| 4 16 |  | 
| 5 17 | 
             
            ## Installation
         | 
| 6 18 |  | 
| 7 19 | 
             
            ```sh
         | 
| 8 | 
            -
             | 
| 9 | 
            -
            sudo gem install muxify
         | 
| 20 | 
            +
            $ gem install muxify
         | 
| 10 21 | 
             
            ```
         | 
| 11 22 |  | 
| 12 23 | 
             
            ## Usage
         | 
| 13 24 |  | 
| 14 25 | 
             
            ```sh
         | 
| 15 | 
            -
            muxify  | 
| 16 | 
            -
             | 
| 26 | 
            +
            $ muxify -h
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            Commands:
         | 
| 29 | 
            +
              muxify add             # Adds tmuxinator config for current (or supplied) path
         | 
| 30 | 
            +
              muxify debug           # Prints tmuxinator config of current (or supplied) path to stdout
         | 
| 31 | 
            +
              muxify help [COMMAND]  # Describe available commands or one specific command
         | 
| 32 | 
            +
              muxify stop            # Kills tmux session
         | 
| 33 | 
            +
            ```
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            For example, add a project like so:
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            ```sh
         | 
| 38 | 
            +
            $ muxify add /path/to/my_app
         | 
| 39 | 
            +
            $ mux my_app
         | 
| 40 | 
            +
            ```
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            Depending on its type, this will create the following tmux windows for a project:
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            * Standard (applies to all projects)
         | 
| 45 | 
            +
              * shell (performs `git fetch` when `.git` is present)
         | 
| 46 | 
            +
              * editor (invokes terminal editor, defaulting to `vim` when `$EDITOR` is unset)
         | 
| 47 | 
            +
              * logs (when present, truncates then tails `log/*.log`)
         | 
| 48 | 
            +
            * Rails (identified by presence of `bin/rails`)
         | 
| 49 | 
            +
              * db (`rails db`)
         | 
| 50 | 
            +
              * console (`rails console`)
         | 
| 51 | 
            +
            * NodeJS (identified by presence of `package.json` when non-Rails)
         | 
| 52 | 
            +
              * console (`node`)
         | 
| 53 | 
            +
            * Elixir (identified by presence of `mix.exs` when non-Phoenix)
         | 
| 54 | 
            +
              * console (`iex -S mix`)
         | 
| 55 | 
            +
              * server (`mix`)
         | 
| 56 | 
            +
            * Elixir/Phoenix (identified by presence of `deps/phoenix`)
         | 
| 57 | 
            +
              * console (`iex -S mix phoenix.server`)
         | 
| 58 | 
            +
              * server (`mix phoenix.server`)
         | 
| 59 | 
            +
            * Django (identified by `requirements.txt` containing `django`)
         | 
| 60 | 
            +
              * db (`python manage.py dbshell`)
         | 
| 61 | 
            +
              * console (`python manage.py shell`)
         | 
| 62 | 
            +
              * server (`python manage.py runserver`)
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            ## Customising projects
         | 
| 65 | 
            +
             | 
| 66 | 
            +
            To add a custom tmux window for a project:
         | 
| 67 | 
            +
             | 
| 68 | 
            +
            1. Create a file called `~/.muxifyrc`.
         | 
| 69 | 
            +
            1. Edit it in YAML format; eg to add a tmux window to `my_app` project which is named `server` and invokes `yarn dev`:
         | 
| 70 | 
            +
            ```yaml
         | 
| 71 | 
            +
            my_app:
         | 
| 72 | 
            +
              windows:
         | 
| 73 | 
            +
                server: yarn dev
         | 
| 17 74 | 
             
            ```
         | 
| 18 75 |  | 
| 19 76 | 
             
            ## Thanks
         | 
    
        data/Rakefile
    CHANGED
    
    
    
        data/lib/muxify/builder.rb
    CHANGED
    
    | @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            require 'yaml'
         | 
| 2 4 |  | 
| 3 5 | 
             
            module Muxify
         | 
| @@ -39,7 +41,9 @@ module Muxify | |
| 39 41 | 
             
                end
         | 
| 40 42 |  | 
| 41 43 | 
             
                def custom_windows
         | 
| 42 | 
            -
                   | 
| 44 | 
            +
                  return {} unless File.exist?(CUSTOM_CONFIG_PATH)
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                  YAML.load_file(CUSTOM_CONFIG_PATH).dig(name, 'windows')
         | 
| 43 47 | 
             
                end
         | 
| 44 48 |  | 
| 45 49 | 
             
                class Windows
         | 
| @@ -86,10 +90,19 @@ module Muxify | |
| 86 90 | 
             
                  end
         | 
| 87 91 |  | 
| 88 92 | 
             
                  def logs
         | 
| 89 | 
            -
                    return [] if  | 
| 93 | 
            +
                    return [] if logfiles.empty?
         | 
| 94 | 
            +
                    logfiles.each(&method(:truncate_file))
         | 
| 90 95 | 
             
                    [{'logs' => 'tail -f log/*.log'}]
         | 
| 91 96 | 
             
                  end
         | 
| 92 97 |  | 
| 98 | 
            +
                  def logfiles
         | 
| 99 | 
            +
                    @logfiles ||= Dir["#{root}/log/*.log"]
         | 
| 100 | 
            +
                  end
         | 
| 101 | 
            +
             | 
| 102 | 
            +
                  def truncate_file(path)
         | 
| 103 | 
            +
                    File.truncate(path, 0)
         | 
| 104 | 
            +
                  end
         | 
| 105 | 
            +
             | 
| 93 106 | 
             
                  def foreman
         | 
| 94 107 | 
             
                    return [] unless foreman?
         | 
| 95 108 | 
             
                    [{'foreman' => <<-SH.strip}]
         | 
    
        data/lib/muxify/cli.rb
    CHANGED
    
    
    
        data/lib/muxify/linker.rb
    CHANGED
    
    
    
        data/lib/muxify/version.rb
    CHANGED
    
    
    
        data/lib/muxify.rb
    CHANGED
    
    
    
        data/muxify.gemspec
    CHANGED
    
    | @@ -1,5 +1,6 @@ | |
| 1 | 
            -
            #  | 
| 2 | 
            -
             | 
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            lib = File.expand_path('lib', __dir__)
         | 
| 3 4 | 
             
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 4 5 | 
             
            require 'muxify/version'
         | 
| 5 6 |  | 
| @@ -9,7 +10,7 @@ Gem::Specification.new do |spec| | |
| 9 10 | 
             
              spec.authors       = ["Zubin Henner"]
         | 
| 10 11 | 
             
              spec.email         = ['zubin@users.noreply.github.com']
         | 
| 11 12 |  | 
| 12 | 
            -
              spec.summary       =  | 
| 13 | 
            +
              spec.summary       = "Simple tmux project config"
         | 
| 13 14 | 
             
              spec.homepage      = 'https://github.com/zubin/muxify'
         | 
| 14 15 |  | 
| 15 16 | 
             
              spec.files         = `git ls-files -z`.split("\x0").reject do |f|
         | 
| @@ -22,7 +23,7 @@ Gem::Specification.new do |spec| | |
| 22 23 | 
             
              spec.add_dependency 'thor'
         | 
| 23 24 | 
             
              spec.add_dependency 'tmuxinator'
         | 
| 24 25 |  | 
| 25 | 
            -
              spec.add_development_dependency 'bundler' | 
| 26 | 
            -
              spec.add_development_dependency 'rake' | 
| 27 | 
            -
              spec.add_development_dependency 'rspec' | 
| 26 | 
            +
              spec.add_development_dependency 'bundler'
         | 
| 27 | 
            +
              spec.add_development_dependency 'rake'
         | 
| 28 | 
            +
              spec.add_development_dependency 'rspec'
         | 
| 28 29 | 
             
            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.5
         | 
| 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: 2020-01-01 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: thor
         | 
| @@ -42,44 +42,44 @@ dependencies: | |
| 42 42 | 
             
              name: bundler
         | 
| 43 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 44 | 
             
                requirements:
         | 
| 45 | 
            -
                - - " | 
| 45 | 
            +
                - - ">="
         | 
| 46 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: ' | 
| 47 | 
            +
                    version: '0'
         | 
| 48 48 | 
             
              type: :development
         | 
| 49 49 | 
             
              prerelease: false
         | 
| 50 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 | 
            -
                - - " | 
| 52 | 
            +
                - - ">="
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: ' | 
| 54 | 
            +
                    version: '0'
         | 
| 55 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 56 | 
             
              name: rake
         | 
| 57 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 58 | 
             
                requirements:
         | 
| 59 | 
            -
                - - " | 
| 59 | 
            +
                - - ">="
         | 
| 60 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: ' | 
| 61 | 
            +
                    version: '0'
         | 
| 62 62 | 
             
              type: :development
         | 
| 63 63 | 
             
              prerelease: false
         | 
| 64 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 65 | 
             
                requirements:
         | 
| 66 | 
            -
                - - " | 
| 66 | 
            +
                - - ">="
         | 
| 67 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: ' | 
| 68 | 
            +
                    version: '0'
         | 
| 69 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 70 | 
             
              name: rspec
         | 
| 71 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 72 | 
             
                requirements:
         | 
| 73 | 
            -
                - - " | 
| 73 | 
            +
                - - ">="
         | 
| 74 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version: ' | 
| 75 | 
            +
                    version: '0'
         | 
| 76 76 | 
             
              type: :development
         | 
| 77 77 | 
             
              prerelease: false
         | 
| 78 78 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 79 | 
             
                requirements:
         | 
| 80 | 
            -
                - - " | 
| 80 | 
            +
                - - ">="
         | 
| 81 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: ' | 
| 82 | 
            +
                    version: '0'
         | 
| 83 83 | 
             
            description: 
         | 
| 84 84 | 
             
            email:
         | 
| 85 85 | 
             
            - zubin@users.noreply.github.com
         | 
| @@ -121,8 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 121 121 | 
             
                - !ruby/object:Gem::Version
         | 
| 122 122 | 
             
                  version: '0'
         | 
| 123 123 | 
             
            requirements: []
         | 
| 124 | 
            -
             | 
| 125 | 
            -
            rubygems_version: 2.7.3
         | 
| 124 | 
            +
            rubygems_version: 3.0.3
         | 
| 126 125 | 
             
            signing_key: 
         | 
| 127 126 | 
             
            specification_version: 4
         | 
| 128 127 | 
             
            summary: Simple tmux project config
         |