Skip to main content

pushd command like Linux

Project description

pushdit

Installation

pip install pushdit

Import

from pushdit import pushd, popd, pushit

Features


pushd:

  • Tool that stores directories in a queue
  • Directory path MUST EXIST or FileNotFoundError
  • CWD will always be placed at the end of the queue
import os

>>> pushd
- C:\Users\Antsthebul\Desktop\pushit;
>>> pushd('tests') 
>>> pushd
- C:\Users\Antsthebul\Desktop\pushit\tests;
0 tests
1 pushit
>>> os.getcwd()
'C:\\Users\\Antsthebul\\Desktop\\pushit\\tests'

Instead of having to use a seperate command to view CWD AND directory queue, pushd will echo the CWD as well as the directories that have been added to the queue. This is similar operation to the pushd and dirs commands in Linux. The list of directories that pushd echoes, will be displayed in the order they were inserted, 0 being most recent. This is the order they will be switched to on default operation when using pushit() as a contenxtmanager, otherwise when calling popd(), will remove dir from back of queue.

When pushd recives a <..directory..>, unless specified pushd will move program to that directory. See examples below..

Adding to 'front' of queue (Default)

>>> pushd
- C:\Users\Antsthebul\Desktop\pushit;
>>> pushd('tests/pushtest1')
>>> pushd
- C:\Users\Antsthebul\Desktop\pushit\tests\pushtest1;
0 pushtest1
1 pushit

Adding to end of queue

>>> pushd
- C:\Users\Antsthebul\Desktop\pushit;

>>> pushd('tests/pushtest1', right=True)

>>> pushd
- C:\Users\Antsthebul\Desktop\pushit\tests\pushtest1;
0 pushit
1 pushtest1

>>> os.getcwd()
'C:\\Users\\Antsthebul\\Desktop\\pushit\\tests\\pushtest1'

Preventing directory change

>>> pushd('pushtest2', chdir=False) # was in tests\pushtest1 when called
>>> pushd
- C:\Users\Antsthebul\Desktop\pushit\tests\pushtest1;
0 pushtest2
1 pushit
2 pushtest1 

Clear entire queue and return to inital location of call (cwd @ runtime)

>>> pushd.clear() 
>>> pushd
- C:\Users\Antsthebul\Desktop\pushit;

Relative paths ok!

>>> pushd('tests/pushtest1/pushtest2')
>>> pushd
- C:\Users\Antsthebul\Desktop\pushit\tests\pushtest1\pushtest2;
0 pushtest2
1 pushit

>>> pushd('../..')
>>> pushd
- C:\Users\Antsthebul\Desktop\pushit\tests;
0 tests
1 pushtest2
2 pushit

Even this...thing..

>>> pushd
- C:\Users\Ansthebul\Desktop\pushit;
>>> pushd('~/documents') 
>>> pushd
- C:\Users\Ansthebul\documents;
0 documents
1 pushit

popd

Remove single directory from back of queue, like pop()

>>> pushd('pushtest2', chdir=False)
>>> popd()
'C:\\Users\\Antsthbul\\pushit\\tests\\pushtest1'
>>> pushd
- C:\Users\Antsthebul\Desktop\pushit\tests\pushtest1;
0 pushtest2
1 pushit

Specify directory to be removed

  • Feature unavailable

pushit

Where it all comes together..

no args

  • The pushd queue must be populated
>>> pushd('tests', chdir=False)
>>> pushd('tests/pushtest1', chdir=False) 
>>> pushd('tests/pushtest1/pushtest2', chdir=False) 
>>> pushd()
>>> pushd
- C:\Users\Antsthebul\Desktop\\pushit;
0 pushtest2
1 pushtest1
2 tests
3 pushit

>>> with pushit() as lvl1:
...    print('Do stuff here')
...    print(os.getcwd())
...    print()
...    with pushit() as lvl2:
...        print('Do more stuff here')
...        print(os.getcwd())
...        print()
...        with pushit() as lvl3:
...            print('OK i think you get the idea')
...            print(os.getcwd())
...            print()
...        print('Back in lvl2')
...        print(lvl2)
...    print('inside lvl1')
...    print(lvl1)



Do stuff here
C:\Users\Antsthebul\Desktop\pushit\tests\pushtest1\pushtest2

Do more stuff here
C:\Users\Ansthebul\Desktop\pushit\tests\pushtest1

OK i think you get the idea
C:\Users\Ansthebul\Desktop\pushit\tests

Back in lvl2
- C:\Users\Ansthebul\Desktop\pushit\tests\pushtest1;

inside lvl1
- C:\Users\Ansthebul\Desktop\pushit\tests\pushtest1\pushtest2;
0 pushit

>>> pushd
- C:\Users\Ansthebul\Desktop\pushit;
0 pushit

>>> os.getcwd()
C:\Users\Antsthebul\Desktop\pushit

with args

>>> pushd
- C:\Users\Antsthebul\Desktop\\pushit;
>>> with pushit('tests/pushtest1/pushest2'):
...     print(os.getcwd())
C:\Users\Antsthebul\Desktop\pushit\tests\pushtest1\pushtest2
>>> os.getcwd()
'C:\\Users\\Antsthebul\\Desktop\\pushit'

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pushdit-0.0.7.tar.gz (21.4 kB view details)

Uploaded Source

Built Distribution

pushdit-0.0.7-py3-none-any.whl (18.1 kB view details)

Uploaded Python 3

File details

Details for the file pushdit-0.0.7.tar.gz.

File metadata

  • Download URL: pushdit-0.0.7.tar.gz
  • Upload date:
  • Size: 21.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.1.2 requests-toolbelt/0.9.1 tqdm/4.55.1 CPython/3.8.5

File hashes

Hashes for pushdit-0.0.7.tar.gz
Algorithm Hash digest
SHA256 867696eeb0f2ab5e1002d6ce4b9c3527d7c877136bbc85b59e1f4eb66ae68de1
MD5 892fa1dbe26e3750a30aa4bb49a23747
BLAKE2b-256 d7916b221a371d9c79df2d9101db911a688e7e160176146cba9b7cf213fbde1b

See more details on using hashes here.

File details

Details for the file pushdit-0.0.7-py3-none-any.whl.

File metadata

  • Download URL: pushdit-0.0.7-py3-none-any.whl
  • Upload date:
  • Size: 18.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.1.2 requests-toolbelt/0.9.1 tqdm/4.55.1 CPython/3.8.5

File hashes

Hashes for pushdit-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 cc4ba2aa42869bbe24c79727e847c61d89adabaf547e2b12e2e4ed7731d5382a
MD5 7d1db84f0dedc7a62d298576c15d0b40
BLAKE2b-256 8669b41e8ccaaf67ebbe84994e01d3e666cab45e184e46efcac98c8303f63733

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page