fm ਨਾਲ ਏਕੀਕ੍ਰਿਤ ਫਾਰਮੈਟਰ

ਪਰੋਜੈਕਟ ਦਾ GitHub ਰੇਪੋ

ਸਮੱਸਿਆ

ਮੈਨੂੰ ਆਪਣਾ ਕੋਡ ਸੁੰਦਰ ਅਤੇ ਵਿਵਸਥਿਤ ਰੱਖਣਾ ਪਸੰਦ ਹੈ, ਇਸ ਲਈ ਮੈਂ ਫਾਰਮਟਰਾਂ ਦਾ ਪ੍ਰਸ਼ੰਸਕ ਹਾਂ। ਹਾਲਾਂਕਿ, ਮੈਨੂੰ IDEs ਵੱਲੋਂ ਫਾਰਮੈਟਿੰਗ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਸੰਭਾਲਿਆ ਜਾਣਾ ਜੋ ਭਾਰੀ ਅਤੇ ਗੁੰਝਲਦਾਰ ਲੱਗੇ, ਪਸੰਦ ਨਹੀਂ ਹੈ, ਅਤੇ ਮੈਂ ਆਪਣਾ ਬਹੁਤ ਸਾਰਾ ਕੋਡ ਟਰਮੀਨਲ ਵਿੱਚ Vim ਰਾਹੀਂ ਲਿਖਦਾ ਹਾਂ। ਕੁਝ ਸਮੇਂ ਲਈ, ਮੈਂ ਇੱਕ ਐਸਾ CLI ਟੂਲ ਲੱਭ ਰਿਹਾ ਸੀ ਜੋ ਫਾਰਮਟਰ ਹੋਵੇ ਅਤੇ ਜਿਸ ਵਿੱਚ ਮੈਂ ਫਾਇਲ ਪਾਥ ਜਾਂ ਡਾਇਰੈਕਟਰੀ ਪਾਥ ਦੇ ਸਕਾਂ, ਅਤੇ ਇਹ ਦਿੱਤੀ ਹੋਈ ਸਾਰੀ ਸਮੱਗਰੀ ਫਾਰਮੈਟ ਕਰ ਦੇਵੇ। ਇਸਦਾ ਅਰਥ, ਜੇ ਮੈਂ ਇੱਕ ਡਾਇਰੈਕਟਰੀ ਦਿੰਦਾ ਹਾਂ, ਤਾਂ ਇਹ ਉਸ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਮੌਜੂਦ ਸਾਰੀਆਂ ਫਾਇਲਾਂ ਨੂੰ ਫਾਰਮੈਟ ਕਰੇਗਾ ਅਤੇ ਜੇ ਉਸ ਦਿੱਤੀ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਕੋਈ .gitignore ਫਾਇਲ(ਾਂ) ਮਿਲੇ ਤਾਂ ਉਸਦੀ ਇੱਜ਼ਤ ਕਰੇਗਾ। ਮੈਂ ਕੁਝ ਸਮੇਂ ਲਈ ਹੱਲ ਦੀ ਖੋਜ ਕੀਤੀ ਪਰ ਕੁਝ ਨਹੀਂ ਮਿਲਿਆ।

ਹੱਲ

ਇਸ ਕਾਰਨ ਅਤੇ ਇਸ ਸਮੱਸਿਆ ਦੇ ਜਵਾਬ ਵਜੋਂ, ਮੈਂ ForMatter ਜਾਂ ਸੰਗੇਪ ਵਿੱਚ fm ਵਿਕਸਿਤ ਕੀਤਾ, ਇੱਕ CLI ਟੂਲ ਜੋ ਇਸ ਵੇਲੇ ਸ਼ੁਰੂਆਤੀ ਵਿਕਾਸ ਵਿੱਚ ਹੈ, ਅਤੇ ਵੱਖ-ਵੱਖ ਪ੍ਰੋਜੈਕਟਾਂ ਵਿੱਚ ਸਕ੍ਰਿਪਟਾਂ ਨੂੰ ਫਾਰਮੈਟ ਕਰਨ ਲਈ ਡਿਜ਼ਾਇਨ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਹ ਟੂਲ IDE ‘ਤੇ ਨਿਰਭਰ ਕਰਨ ਨਾਲੋਂ ਫਾਰਮੈਟਿੰਗ ਉੱਤੇ ਵੱਧ ਨਿਯੰਤਰਣ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਹਾਲਾਂਕਿ ਇਹ ਅਜੇ ਵੀ ਵਿਕਾਸ ਵਿੱਚ ਹੈ, ਇਹ ਪੂਰੀ ਤਰ੍ਹਾਂ ਵਰਤਣਯੋਗ ਹੈ! ਜੇ ਤੁਸੀਂ ਯੋਗਦਾਨ ਪਾਉਣ ਵਿੱਚ ਦਿਲਚਸਪੀ ਰੱਖਦੇ ਹੋ, ਤਾਂ ਅਜ਼ਾਦੀ ਨਾਲ ਰਿਪੋ ਨੂੰ fork ਕਰੋ ਅਤੇ PR ਜਮ੍ਹਾਂ ਕਰੋ।

ਡਿਜ਼ਾਈਨ

fm ਬਾਸ਼ ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਲਿਖਿਆ ਗਿਆ ਹੈ ਅਤੇ ਪਿਛੋਕੜ ਵਿੱਚ ਹੇਠ ਲਿਖੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ/ਫਾਰਮਟਰਾਂ ਦਾ ਉਪਯੋਗ ਕਰਦਾ ਹੈ: shfmt, black, Prettier, & ClangFormat। ਇਨ੍ਹਾਂ ਲਾਇਬ੍ਰੇਰੀਆਂ/ਫਾਰਮਟਰਾਂ ਨਾਲ, fm ਹੇਠ ਲਿਖੇ ਫਾਰਮੈਟਾਂ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ: .py, .sh, .bash, .dash, .ksh, .js, .jsx, .ts, .tsx, .json, .md, .html, .css, .yml, .yaml, .graphql, .vue, .scss, .less, .c, .cpp, .h, .hpp, .m, .mm, & .java

ਨਤੀਜਾ

ਮੈਂ ਆਪਣੇ ਨਿੱਜੀ ਸਿਸਟਮ ‘ਤੇ fm ਨੂੰ ਵਿਆਪਕ ਤੌਰ ‘ਤੇ ਵਰਤਦਾ ਹਾਂ, ਅਤੇ ਬਹੁਤ ਸਾਰੇ ਯੋਗਦਾਨੀ ਜਾਂ ਸਹਿਯੋਗੀ ਜਿਨ੍ਹਾਂ ਨਾਲ ਮੈਂ ਕੰਮ ਕਰਦਾ ਹਾਂ ਵੀ ਇਸਨੂੰ ਵਰਤਦੇ ਹਨ। ਇਸੀ ਲਈ ਮੈਂ ਇਸਨੂੰ ਓਪਨ-ਸੋਰਸ ਕੀਤਾ। ਮੈਨੂੰ ਲਗਦਾ ਹੈ ਇਹ ਬਹੁਤ ਲਾਭਕਾਰੀ ਹੈ ਅਤੇ ਇਹ ਅਸਲੀ ਮੁੱਲ ਪੇਸ਼ ਕਰ ਸਕਦਾ ਹੈ, ਇਸ ਲਈ ਮੈਂ ਚਾਹੁੰਦਾ ਹਾਂ ਕਿ ਸਾਰੀ ਦੁਨੀਆ ਇਸਨੂੰ ਵਰਤ ਸਕੇ। ਇਹ ਜਾਣਦੇ ਹੋਏ, ਹੁਣੇ fm ਨੂੰ GitHub ‘ਤੇ ਦੇਖੋ!